xml – XSLT apply-template select中的“@ * | node()”是什么意思?

我读了一些XSLT的例子,发现代码
<xsl:apply-template select="@*|node()"/>

这意味着什么?

XPath表达式@ * | node()选择属性节点(@ *)和所有其他类型的XML节点(node())的并集。

这是attribute :: * |的缩写child :: node()。

在XSLT中,XPath是相对于上下文节点,认的selection axis是子轴,所以表达式

>选择上下文节点的所有属性和直接子项(当用作select =“…”表达式时,例如< xsl:apply-templates>)
>匹配所有属性和其他节点,无论上下文(在< xsl:template>中用作match =“”表达式时) – 请注意,选择节点并匹配它们之间存在差异:上下文节点仅对选择有意义。

想象下面的节点是上下文节点:

<xml attr="value">[
  ]<child />[
  ]<!-- comment -->[
  ]<child>
    <descendant />
  </child>[
]</xml>

表达式node()不仅将选择< child>节点,而且还有四个仅空白的文本节点(为了可见性而由[和]表示)和注释。 <后裔>没有被选中。

XML的一个特殊特征是属性节点不属于它们所属元素的子元素(尽管属性的父属是它所属的元素)。

这种非对称关系使得有必要分别选择它们,因此@ *。

它匹配属于上下文节点的任何属性节点,因此也将选择attr =“value”。

|是XPath联合运算符。它从两个单独的节点集创建一个单个节点集。

< xsl:apply-templates>然后找到适当的< xsl:template>为每个选定的节点运行它为该节点。这是上面提到的模板匹配部分。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念