gpt4 book ai didi

xslt - 如何处理 XSLT 中的重复导入?

转载 作者:行者123 更新时间:2023-12-04 17:11:39 26 4
gpt4 key购买 nike

只要在 XSL 转换中多次导入同一个文件,就会引发警告。通常类似于 Stylesheet module file:/Users/blake/Documents/workspace/course-connect-parent/course-connect-publisher/src/main/xsl/config.xsl is included or imported more than once. This is permitted, but may lead to errors or unexpected behavior
但是,如果同一个 xsl 需要由多个“子”xsl 调用(例如,包含重要功能的 util.xsl)导入,则这种情况是不可避免的。

有没有办法避免这些警告,或者有更好的做事方式?

这是问题设置:

FILE_A.xsl

imports FILE_B.xsl and FILE_C.xsl
uses functions/parameters from util.xsl, which it gets from FILE_B.xsl & FILEC.xsl
calls templates in FILE_B.xsl
calls templates in FILE_C.xsl

FILE_B.xsl
imports util.xsl
contains templates used by FILE_A.xsl
uses functions/parameters from util.xsl

FILE_C.xsl
imports util.xsl
contains templates used by FILE_A.xsl
uses functions/parameters from util.xsl

实用程序.xsl
Contains functions/variables used by FILE_A, FILE_B, FILE_C

最佳答案

这些消息是由最近发布的 Saxon 产生的。多次导入同一个文件不是错误,但在某些处理器(包括早期版本的 Saxon)中,效率非常低;这也是不必要的,它会使代码很难调试。基本上,这意味着您有多个具有不同优先级的相同模板规则实例。

在 XSLT 中,与其他语言不同,模块不需要对它所依赖的所有内容进行导入。您只需要在样式表中的任何位置进行一次导入。确实,如果 A.xsl 使用 util.xsl 并且您想在很多地方重用 A.xsl,那么如果 A.xsl 使用 import 或 include 声明来声明其依赖关系会很方便,这意味着如果 B. xsl 也使用 util.xsl 你最终会遇到这种多次导入的情况。

我添加消息是因为两个事件:一个用户从 xsl:next-match 获得了完全奇怪的效果,另一个用户因为一个模块被大约 100,000 条不同的路径组合导入而导致编译时性能非常糟糕,并且因此大约有 100,000 个不同的导入优先级。当这样的问题出现时,总是有一种趋势,试图确保它不再发生,而警告是对此的回应,但就像健康和安全警告一样,很难知道何时平衡是正确的。如果一切正常,您总是可以忽略警告,如果您真的需要,您可以通过在 ErrorListener 中过滤消息来抑制它。

关于xslt - 如何处理 XSLT 中的重复导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com