循环和/或多个xsl:包含在xslt 3代码中

问题描述 投票:0回答:1

我在一个库中有一组不平凡的 XSLT 代码,我最终(很容易理解)对同一文件进行了一些循环和/或多次包含。

所以...

Warning at xsl:stylesheet on line 10 column 63 of value.xslt: SXWN9019  Stylesheet module file:.....value.xslt is included or imported more than once. This is permitted, but may lead to errors or unexpected behavior Error at xsl:function on line 59 column 54 of value.xslt: XTSE0770  Function value:getValue#1 is declared twice - see .../value.xslt#59 .... 

我最近才完成此操作(以简化代码结构),但它失败了。

经过调查,我了解到这在某些情况下是有效的(如错误消息所示),但实际上不起作用(如错误消息所示)......这有点令人困惑,我认为存在某种情况这确实有效,但我违反了规则。

我该怎么做? (这是其他语言中的常见问题,我记得在 C 和 F# 的 .h 文件中使用 #defines,例如,不允许循环,但有相当复杂的方法来解决这个问题)。

(SaxonHE12-4J\saxon-he-12.4.jar)

saxon xslt-3.0
1个回答
0
投票

基本上,两次包含一个模块本身并不是错误,但如果该模块包含任何命名组件,例如函数、变量或命名模板,那么很可能会导致错误,因为不能有两个命名组件同名。

“我该怎么做”这个问题的答案是您不需要这样做,因为您包含的所有内容都可以在整个样式表中全局使用。

如果您尝试包含不想更改的代码,这可能是一个问题,但如果这不是限制,最简单的解决方案是将所有包含移至顶层。或者,了解

xsl:import
——但这可能会带来一系列问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.