XSLT 1.0 - 每个节点的字符串到 XML



我需要将特定节点的内容从字符串转换为XML,用生成的XML替换该节点。此节点可以是数组。所以我可能需要使用每个指令,但我不知道如何...

我在下面有类似这个 XML 的东西作为示例:

<?xml version="1.0" encoding="UTF-8"?>
  <NodeA><NodeB>&lt;tagA xmlns="http://www.aaa.com"&gt;&lt;tagB&gt;valor1&lt;/tagB&gt;&lt;/tagA&gt;</NodeB><NodeB>&lt;tagA xmlns="http://www.aaa.com"&gt;&lt;tagB&gt;valor2&lt;/tagB&gt;&lt;/tagA&gt;</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>

相关内容

  • 没有找到相关文章

最新更新