这个xsl表示法是什么意思<xsl:template match =“/ | @ * | node()”> </xsl:template>

时间:2012-11-16 18:02:37

标签: xslt notation

我不明白我们的意思..

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

请帮帮我..

    <xsl:template match="local-name()='status'"/> 
<xsl:template match="/|@*|node()"> 
<xsl:copy> 
<xsl:apply-templates match="@*|node()"/> 
<xsl:copy> 
</xsl:template>

如果我这样应用它会省略我的xml中的<status>节点,它是怎么发生的

1 个答案:

答案 0 :(得分:18)

/|@*|node()是一个match pattern,由三个单一模式组成。 /匹配根节点,也称为文档节点,@*匹配任何属性节点,node()作为模式“匹配属性节点和根节点以外的任何节点”。因此,对于任何类型的节点(因为这三种模式描述了所有类型的节点),模板显示<xsl:apply-templates select="@*|node()"/>,这意味着处理属性节点和子节点的并集。由/匹配的文档节点没有属性节点,属性也没有它们,但作为一种紧凑的方式,您经常会看到这样的模板。

但是,文档节点有一个内置模板<xsl:template match="/"><xsl:apply-templates/></xsl:template>,因此通常人们会忽略模式中的/