每当我在XSLT CDTA元素值的输入XML尾部转换中使用CDATA时,就会损坏

时间:2019-02-14 05:36:42

标签: xml xslt mule

我正在使用Mule3.7社区版,下面是xml解析问题。

在我的输入数据中,我具有带有CDATA的元素值,并且我正在使用xslt来传输xml,我期望我的输出xml应该也包含CDATA。 但是,无论我们有CDATA哪里,它都在显示损坏的数据。我已经尝试过

<xsl:output cdata-section-elements="text"/>

但仍然无法正常工作,它显示了产品问题。

“ {cdata-section-elements}的值必须是以'{uri} local'表示形式的QName列表(java.lang.IllegalArgumentException)”

还有什么其他方法可以解析此xml。

<node>
    <subNode>
        <![CDATA[ HI THERE ]]>
    </subNode>
    <subNode>
        <![CDATA[ SOME TEXT ]]>
    </subNode>
</node>

谢谢 拉克希米

1 个答案:

答案 0 :(得分:0)

您可以尝试在 XSLT 1.0 中使用元素名称代替text(),如下所示:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output cdata-section-elements="subNode" />
<xsl:strip-space elements="*" />

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
</xsl:template>

注意:如果除<subNode>之外还有更多元素具有CDATA,请将它们放在cdata-section-elements中,以空格隔开