你能解释一下
之间的区别吗?<xsl:template match="/*">
和
<xsl:template match="*">
和
<xsl:template match="/">
查看匹配规则:)
非常感谢您的帮助!
答案 0 :(得分:3)
第二条规则,
<xsl:template match="*">
匹配任何位置的任何元素,并将上下文节点设置为该元素。
其他的(1和3)差别很小。要理解这种差异,您必须了解“文档根”节点的概念。正如this answer所述,
根节点是其中所有其他节点的祖先的节点 XML文档。它不是一个元素。 ......令人困惑的是,最外面的 元素有时被称为“根元素”。
考虑到这一点
<xsl:template match="/*">
仅匹配文档中的“最外层元素”,并将上下文设置为该元素,而
<xsl:template match="/">
仅匹配“文档根”本身,并将其设置为上下文。该规则始终匹配,即使是空文档,而/*
只匹配实际拥有元素的文档。
所以如果你有一份文件
<A />
第一条规则(匹配/*
)将匹配,上下文节点将为A
。
第三条规则(匹配/
)也会匹配,但A
将是上下文节点的子。