我需要将特定节点的内容从字符串转换为XML,将此节点替换为生成的XML。该节点可以是一个数组。所以我可能需要使用for-each指令,但我不知道如何......
我在下面就像这样的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个节点,结果就会重复三次。
答案 0 :(得分:1)
我认为不是
<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>