gpt4 book ai didi

xslt - 当同一个 XML 元素通过不同的 XPath 匹配两个 XSLT 模板时,执行哪个模板?为什么?

转载 作者:行者123 更新时间:2023-12-02 11:42:01 28 4
gpt4 key购买 nike

考虑这个 XML:

<people>
<person>
<firstName>Deane</firstName>
<lastName>Barker</lastName>
</person>
</people>

如果两个 XSLT 模板通过不同的 XPath 匹配一个元素会怎样?我知道,如果两个模板上的“match”元素相同(我认为这永远不会发生),最后模板将触发。

但是,考虑一下这个 XSL:

<xsl:template match="person/firstName">
Template #1
</xsl:template>

<xsl:template match="firstName">
Template #2
</xsl:template>

“firstName”元素将在这两个模板中的任何一个上匹配 - 第一个模板作为“person”的子元素,第二个模板独立。

我已经对此进行了测试,模板 #1 执行,而模板 #2 则不执行。这背后的运作原理是什么?我能想到三件事:

  1. XPath 的特殊性(高度可疑)
  2. XSLT 文件中的位置(同样值得怀疑)
  3. 模板 #1 对模板 #2 的一些抢占。执行模板 #1 期间发生了一些事情,告诉模板 #2 不要执行。

最佳答案

你的第一点实际上是正确的,https://www.w3.org/TR/1999/REC-xslt-19991116#conflict中有一个定义的顺序。 。根据规范,person/firstName 的优先级为 0,而 firstName 的优先级为 -0.5。您还可以使用 xsl:template 上的 priority 属性自行指定优先级。

关于xslt - 当同一个 XML 元素通过不同的 XPath 匹配两个 XSLT 模板时,执行哪个模板?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532070/

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