<xsl:apply-templates select =“@ * | node()”>,<xsl:apply-templates select =“@ * | *”>之间的区别

时间:2016-02-15 08:44:38

标签: xslt

我是XSLT的新手,当我在项目中看到几个现有的xslt文件时,我看到了以下片段,

  1. <xsl:apply-templates select="@*|node()" />
  2. <xsl:apply-templates select="@*|*" />
  3. 有人可以解释一下上面两个有什么区别吗? 谢谢,凯蒂

1 个答案:

答案 0 :(得分:3)

node()匹配元素,文本节点,处理指令和注释。因此,node()与执行*|text()|processing-instruction()|comment()

相同

*只匹配元素

@*匹配属性

所以,如果您有以下XML

<Root Attribute="1">
  Text Node
  <Element>Text</Element>
</Root>

然后,假设您已定位在Root节点上,如果您<xsl:apply-templates select="@*|node()" />,则会选择AttributeText NodeElement。但<xsl:apply-templates select="@*|*" />只会选择AttributeElement