我在一个库中有一组非平凡的 XSLT 代码,其中我最终(完全可以理解)对同一个文件进行了一些循环和/或多次包含。
所以...
“value.xslt 第 10 行第 63 列 xsl:stylesheet 处出现警告:SXWN9019 样式表模块文件:.....value.xslt 被多次包含或导入。这是允许的,但可能会导致错误或意外行为
value.xslt 第 59 行第 54 列的 xsl:function 出现错误:XTSE0770 函数 value:getValue#1 声明了两次 - 请参阅 .../value.xslt#59 .... `
我最近才这样做(为了简化代码结构),但它坏了。
经过调查,我的理解是,这在某些情况下是有效的(如错误消息所示),但实际上并不起作用(如错误消息所示)......这有点令人困惑,我认为在某些情况下这确实有效,但我违反了规则。
我该怎么做?(这是其他语言中常见的问题,我记得在 C 和 F# 中的 .h 文件中使用 #define,例如,不允许循环,但有相当复杂的方法来解决这个问题)。
(SaxonHE12-4J\saxon-he-12.4.jar)
根据 Martin Honnen 的反馈,我已将所有内容导入其中。
这有效,但我仍然收到警告,这令人担忧,会出什么问题?
基本上,两次包含模块本身并不是错误,但如果模块包含任何命名组件(例如函数、变量或命名模板),则可能会导致错误,因为不能有两个同名的命名组件。
对于“我该如何做”这个问题的答案是,您不需要这样做,因为您包含的所有内容都可以在整个样式表中全局使用。
如果您尝试包含不想更改的代码,则可能会出现问题,但如果这不是一个限制,最简单的解决方案是将所有包含移至顶层。或者,了解
xsl:import
——但这会带来一系列问题。