我不明白我们的意思..
<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>
节点,它是怎么发生的
答案 0 :(得分:18)
/|@*|node()
是一个match pattern,由三个单一模式组成。 /
匹配根节点,也称为文档节点,@*
匹配任何属性节点,node()
作为模式“匹配属性节点和根节点以外的任何节点”。因此,对于任何类型的节点(因为这三种模式描述了所有类型的节点),模板显示<xsl:apply-templates select="@*|node()"/>
,这意味着处理属性节点和子节点的并集。由/
匹配的文档节点没有属性节点,属性也没有它们,但作为一种紧凑的方式,您经常会看到这样的模板。
但是,文档节点有一个内置模板<xsl:template match="/"><xsl:apply-templates/></xsl:template>
,因此通常人们会忽略模式中的/
。