我正在尝试重命名父xml标签。 我在stackoverflow中查了一下,然后看到了以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Response_123">
<Response>
<xsl:apply-templates select="@*|node()"/>
</Response>
</xsl:template>
</xsl:stylesheet>
不幸的是,该代码无法满足我的要求。 在下面的示例中,标记与命名空间相关联。
<ns1:Response_123 xmlns:ns1="AAA">
<System>Alpha</System>
</ns1:Response_123>
当我使用上面的代码时,我仍然收到相同的消息(无论如何都没有区别)。如何将输出更改为:
<ns1:Response xmlns:ns1="AAA">
<System>Alpha</System>
</ns1:Response>
我还尝试在代码中添加名称空间,效果不佳。
<xsl:template match="Response_123" namespace="AAA">
<Response namespace="AAA">
<xsl:apply-templates select="@*|node()"/>
</Response>
</xsl:template>
谢谢大家!
答案 0 :(得分:0)
在XSLT中添加名称空间,并使用名称空间调用模板
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="AAA"
version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns1:Response_123">
<Response>
<xsl:apply-templates select="@*|node()"/>
</Response>
</xsl:template>
</xsl:stylesheet>