我想转换以下代码
=====
<spirit:parameter>
<spirit:name>P3</spirit:name>
<spirit:test_value>8</spirit:test_value>
</spirit:parameter>
</spirit:parameters>
=====
进入
=====
<spirit:parameter>
<spirit:name>P3</spirit:name>
<spirit:glue_value>8</spirit:glue_value>
</spirit:parameter>
</spirit:parameters>
=====
我想通过XSLT来实现。请帮忙
答案 0 :(得分:0)
您的示例输入不是很有效,因此稍微更改并添加了命名空间:
<?xml version="1.0" encoding="UTF-8"?>
<spirit:parameters xmlns:spirit="http://example.com/namespace/spirit">
<spirit:parameter>
<spirit:name>P3</spirit:name>
<spirit:test_value>8</spirit:test_value>
</spirit:parameter>
</spirit:parameters>
你基本上想要复制除'spirit:test_value'之外的所有节点,这些节点需要重命名:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:spirit="http://example.com/namespace/spirit">
<xsl:output omit-xml-declaration='yes'/>
<xsl:template match="spirit:parameters|spirit:parameter|spirit:name">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="spirit:test_value">
<spirit:glue_value>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</spirit:glue_value>
</xsl:template>
</xsl:stylesheet>
“<xsl:copy-of select="@*"/>
”部分是可选的,如果要复制源XML中的任何属性,则需要这些部分。