我有一个XML文档,我想通过XSLT重命名一些元素:
<Assert @some attributes here>
<conent>
<And>
<formula>
<Atom>
<opr>
...
例如,我想将<opr>
重命名为<op>
。我有以下XSLT:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="opr">
<op>
<xsl:apply-templates select="@*|node()"/>
</op>
</xsl:template>
当我调试XSLT时,它不会进入“opr”模板,它会被第一个模板匹配。生成的输出与输入相同。任何人都可以帮我吗?
答案 0 :(得分:1)
<xsl:template name="YourNameHere">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="opr">
<op>
<xsl:call-template name="YourNameHere"/>
</op>
</xsl:template>
您可能仍需要类似&lt; xsl:template match =“/”/&gt;让它继续下去。
答案 1 :(得分:0)
这有用吗?
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates select="*" />
</xsl:copy>
</xsl:template>
<xsl:template match="opr">
<op>
<xsl:copy-of select="@*" />
<xsl:apply-templates select="*" />
</op>
</xsl:template>