我在一个库中有一组不平凡的 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)
基本上,两次包含一个模块本身并不是错误,但如果该模块包含任何命名组件,例如函数、变量或命名模板,那么很可能会导致错误,因为不能有两个命名组件同名。
“我该怎么做”这个问题的答案是您不需要这样做,因为您包含的所有内容都可以在整个样式表中全局使用。
如果您尝试包含不想更改的代码,这可能是一个问题,但如果这不是限制,最简单的解决方案是将所有包含移至顶层。或者,了解
xsl:import
——但这可能会带来一系列问题。