为什么这个版本的xslt 2.0身份转换不起作用?

时间:2015-11-13 09:59:23

标签: xslt

为什么这不会复制文档中的所有节点,比如xslt identity transform?

<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>

为什么模板也必须匹配@* | node()

1 个答案:

答案 0 :(得分:1)

身份转换模板递归。当它打电话时:

<xsl:apply-templates select="@* | node()"/>

它将本身(除非存在具有更高优先级的另一个模板)应用于当前节点的子属性和节点。

您的版本仅匹配并处理/根节点。当它要求将模板应用于子项时,处理器将查找与这些模板匹配的模板 - 并且您的模板将不在其中。