我最初关于apply-imports的想法是,如果有两个模板匹配同一个节点,那么在优先级较高的模板中使用apply-imports可以运行优先级较低的模板。但我最近发现,进口是如何组织起来的,这很重要。
我特别感兴趣的两个案子。
在我看来,这一点在规格说明中没有得到明确的描述。有人能提供权威的指导吗?
编辑:我可以自己尝试这些情况,但总有一种危险,那就是它将是实现特定的行为。
发布于 2010-03-18 22:25:32
我不是XSLT专家(更多的是一个爱好者),但这是一个有趣的问题,到目前为止还没有答案。我认为答案确实存在于规范中,但有点令人困惑,因为您需要确定什么是后序遍历。
在“导入优先级”树的规范中有一个示例:
http://www.w3.org/TR/xslt#dt-import-precedence
例如,假设
其次为D,B,E,C,A。
您需要欣赏后期顺序遍历,这样您才能理解为什么样式表具有此导入优先级顺序。维基百科将顺序遍历描述为“左、右、根”。
通常,具有较高导入优先级的定义或模板规则优先于导入优先级较低的定义或模板规则。
所以回到你的具体问题:
我猜是的(根据优先顺序),如果从对应的匹配模板内部调用它们,它甚至会调用多个模板。如下所述:
http://www.w3.org/TR/xslt#element-apply-imports
例如,假设样式表doc.xsl包含示例元素的模板规则: 另一个样式表可以导入doc.xsl并修改示例元素的处理,如下所示: ”> 合并的效果将是将一个示例转换为表单的一个元素:
匹配的模板将在具有较高导入优先级的基础上选择,这是由导入顺序决定的。
我猜会是这样的:
其次是B,C,A是进口优先级(最低的第一位)。
因此,在这种情况下,将选择样式表C中的模板。
然后,导入优先级的顺序(最低的第一位)是C、B、A。
因此,在这种情况下,将选择样式表B中的模板。
https://stackoverflow.com/questions/2417788
复制相似问题