我需要将特定节点的内容从字符串转换为XML,用生成的XML替换该节点。此节点可以是数组。所以我可能需要使用每个指令,但我不知道如何...
我在下面有类似这个 XML 的东西作为示例:
<?xml version="1.0" encoding="UTF-8"?>
<NodeA><NodeB><tagA xmlns="http://www.aaa.com"><tagB>valor1</tagB></tagA></NodeB><NodeB><tagA xmlns="http://www.aaa.com"><tagB>valor2</tagB></tagA></NodeB></NodeA>
我正在使用下面的 XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//NodeB">
<xsl:value-of select="/" disable-output-escaping="yes"/>
</xsl:template>
结果是字符串正在转换为 XML,NodeB 正在被替换,但它变得重复,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<NodeA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor1</tagB>
</tagA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor2</tagB>
</tagA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor1</tagB>
</tagA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor2</tagB>
</tagA>
</NodeA>
我需要以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<NodeA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor1</tagB>
</tagA>
<tagA xmlns="http://www.aaa.com">
<tagB>valor2</tagB>
</tagA>
</NodeA>
例如,如果我在数组中有 3 个节点,结果将是一式三份。
我认为
而不是
<xsl:template match="//NodeB">
<xsl:value-of select="/" disable-output-escaping="yes"/>
</xsl:template>
你想要
<xsl:template match="NodeB">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>