我是XSLT的新手,当我在项目中看到几个现有的xslt文件时,我看到了以下片段,
<xsl:apply-templates select="@*|node()" />
<xsl:apply-templates select="@*|*" />
有人可以解释一下上面两个有什么区别吗? 谢谢,凯蒂
答案 0 :(得分:3)
node()
匹配元素,文本节点,处理指令和注释。因此,node()
与执行*|text()|processing-instruction()|comment()
*
只匹配元素
@*
匹配属性
所以,如果您有以下XML
<Root Attribute="1">
Text Node
<Element>Text</Element>
</Root>
然后,假设您已定位在Root
节点上,如果您<xsl:apply-templates select="@*|node()" />
,则会选择Attribute
,Text Node
和Element
。但<xsl:apply-templates select="@*|*" />
只会选择Attribute
和Element
。