我有以下xml结构;
<urn:SERIALS>
<urn:SERIAL_NO>TH66</urn:SERIAL_NO>
<urn:SERIAL_NO>TH95</urn:SERIAL_NO>
<urn:SERIAL_NO>TH71</urn:SERIAL_NO>
</urn:SERIALS>
我需要将其转换为以下内容(为每个 <urn:SERIAL_NOS>
添加额外的 <urn:SERIAL_NO>
包装器);
<urn:SERIALS>
<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH66</urn:SERIAL_NO>
</urn:SERIAL_NOS>
<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH95</urn:SERIAL_NO>
</urn:SERIAL_NOS>
<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH71</urn:SERIAL_NO>
<urn:SERIAL_NOS>
</urn:SERIALS>
我尝试遵循 XSL 代码...
<xsl:output indent="yes"/>
<xsl:template match="@*|node()" name="ident">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
<xsl:template match="urn:SERIAL_NO">
<xsl:value-of select="normalize-space(.)"/>
<urn:SERIAL_NOS>
<xsl:call-template name="ident" />
</urn:SERIAL_NOS>
</xsl:template>
输出结果有点奇怪...它有<urn:SERIAL_NOS>
标签前面的Serials值
<urn:SERIALS>
TH66<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH66</urn:SERIAL_NO>
</urn:SERIAL_NOS>
TH95<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH95</urn:SERIAL_NO>
</urn:SERIAL_NOS>
TH71<urn:SERIAL_NOS>
<urn:SERIAL_NO>TH71</urn:SERIAL_NO>
</urn:SERIAL_NOS>
</urn:SERIALS>
即使我删除了 <xsl:value-of select="normalize-space(.)"/>
,它也会出现替换“TH”值的空格。知道如何解决这个问题吗?
提前致谢。
答案 0 :(得分:2)
第二个模板应该是
<xsl:template match="urn:SERIAL_NO">
<urn:SERIAL_NOS>
<xsl:copy-of select="."/>
</urn:SERIAL_NOS>
</xsl:template>