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>) 想象下面的节点是上下文节点: <xml attr="value">[ ]<child />[ ]<!-- comment -->[ ]<child> <descendant /> </child>[ ]</xml> 表达式node()不仅将选择< child>节点,而且还有四个仅空白的文本节点(为了可见性而由[和]表示)和注释。 <后裔>没有被选中。 XML的一个特殊特征是属性节点不属于它们所属元素的子元素(尽管属性的父属是它所属的元素)。 这种非对称关系使得有必要分别选择它们,因此@ *。 它匹配属于上下文节点的任何属性节点,因此也将选择attr =“value”。 |是XPath联合运算符。它从两个单独的节点集创建一个单个节点集。 < xsl:apply-templates>然后找到适当的< xsl:template>为每个选定的节点运行它为该节点。这是上面提到的模板匹配部分。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |