首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xsl应用-导入的范围是什么?

问xsl应用-导入的范围是什么?
EN

Stack Overflow用户
提问于 2010-03-10 14:51:49
回答 1查看 1.5K关注 0票数 1

我最初关于apply-imports的想法是,如果有两个模板匹配同一个节点,那么在优先级较高的模板中使用apply-imports可以运行优先级较低的模板。但我最近发现,进口是如何组织起来的,这很重要。

我特别感兴趣的两个案子。

  • 是否将应用导入工作在导入文件(嵌套导入)中导入的模板上?
  • “兄弟级导入”如何(主文件导入两个具有与相同节点匹配的模板的文件)

在我看来,这一点在规格说明中没有得到明确的描述。有人能提供权威的指导吗?

编辑:我可以自己尝试这些情况,但总有一种危险,那就是它将是实现特定的行为。

EN

回答 1

Stack Overflow用户

发布于 2010-03-18 22:25:32

我不是XSLT专家(更多的是一个爱好者),但这是一个有趣的问题,到目前为止还没有答案。我认为答案确实存在于规范中,但有点令人困惑,因为您需要确定什么是后序遍历。

遍历

在“导入优先级”树的规范中有一个示例:

http://www.w3.org/TR/xslt#dt-import-precedence

例如,假设

  • 样式表A按该顺序导入样式表B和C;
  • 样式表B导入样式表D;
  • 样式表C导入样式表E。

其次为D,B,E,C,A。

您需要欣赏后期顺序遍历,这样您才能理解为什么样式表具有此导入优先级顺序。维基百科将顺序遍历描述为“左、右、根”。

通常,具有较高导入优先级的定义或模板规则优先于导入优先级较低的定义或模板规则。

所以回到你的具体问题:

  • 是否将应用导入工作在导入文件(嵌套导入)中导入的模板上?

我猜是的(根据优先顺序),如果从对应的匹配模板内部调用它们,它甚至会调用多个模板。如下所述:

http://www.w3.org/TR/xslt#element-apply-imports

例如,假设样式表doc.xsl包含示例元素的模板规则: 另一个样式表可以导入doc.xsl并修改示例元素的处理,如下所示: ”> 合并的效果将是将一个示例转换为表单的一个元素:

  • “兄弟级导入”如何(主文件导入两个具有与相同节点匹配的模板的文件)

匹配的模板将在具有较高导入优先级的基础上选择,这是由导入顺序决定的。

我猜会是这样的:

  • 样式表A按该顺序导入样式表B和C;

其次是B,C,A是进口优先级(最低的第一位)。

因此,在这种情况下,将选择样式表C中的模板。

  • 样式表A按该顺序导入样式表C和B;

然后,导入优先级的顺序(最低的第一位)是C、B、A。

因此,在这种情况下,将选择样式表B中的模板。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2417788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档