我不明白下面的意思:
<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>
节点,这是怎么发生的?
/|@*|node()
是由三个单一模式组成的匹配模式。/
匹配根节点(也称为文档节点),@*
匹配任何属性节点,node()
作为模式"匹配除属性节点和根节点之外的任何节点"。因此,对于任何类型的节点(因为这三种模式描述了所有类型的节点),模板说<xsl:apply-templates select="@*|node()"/>
,这意味着处理属性节点和子节点的并集。/
匹配的文档节点没有属性节点,属性也没有,但作为一种紧凑的方式,您经常会看到这样的模板。
然而,有一个用于文档节点的内置模板可以执行<xsl:template match="/"><xsl:apply-templates/></xsl:template>
,因此人们通常会在模式中省略/
。