<xsl:template match =“/ *”>和<xsl:template match =“*”> </xsl:template> </xsl:template>之间的区别

时间:2014-02-07 02:20:15

标签: xslt match

你能解释一下

之间的区别吗?
<xsl:template match="/*">

<xsl:template match="*">

<xsl:template match="/">

查看匹配规则:)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

第二条规则,

<xsl:template match="*">

匹配任何位置的任何元素,并将上下文节点设置为该元素。

其他的(1和3)差别很小。要理解这种差异,您必须了解“文档根”节点的概念。正如this answer所述,

  

根节点是其中所有其他节点的祖先的节点   XML文档。它不是一个元素。 ......令人困惑的是,最外面的   元素有时被称为“根元素”。

考虑到这一点

<xsl:template match="/*">

仅匹配文档中的“最外层元素”,并将上下文设置为该元素,而

<xsl:template match="/">

仅匹配“文档根”本身,并将其设置为上下文。该规则始终匹配,即使是空文档,而/*只匹配实际拥有元素的文档。

所以如果你有一份文件

<A />

第一条规则(匹配/*)将匹配,上下文节点将为A

第三条规则(匹配/)也会匹配,但A将是上下文节点的