如何将所有xml节点与cdata-section-elements匹配

时间:2014-06-06 09:01:58

标签: xml xslt special-characters cdata

我需要转换

中的所有节点
<?xml version="1.0" encoding="UTF-8"?><root>
<catalog>
    <cd>
    <country> &lt;li&gt;WIN8&lt;/li&gt;&lt;li&gt;Mac&lt;/li&gt;&lt;li&gt;OS&lt;/li&gt;</country>
    <name> &lt;li&gt;WIN8&lt;/li&gt;&lt;li&gt;Mac&lt;/li&gt;&lt;li&gt;OS&lt;/li&gt;</name>
    </cd>
</catalog>
</root>

    <?xml version="1.0" encoding="UTF-8"?>
<root>
    <catalog>
        <cd>
        <country><![CDATA[ <li>WIN8</li><li>Mac</li><li>OS</li>]]></country>
        <name><![CDATA[ <li>WIN8</li><li>Mac</li><li>OS</li>]]></name>
        </cd>
    </catalog>
</root>

我知道我可以使用cdata-section-elements =“country name”应用xsl,但有没有办法选择cdata-section-elements中的所有节点? 可以使用http://xsltransform.net/进行转换。 这是xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output cdata-section-elements="country name"/>
  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
    </xsl:copy>
  </xsl:template>    
</xsl:stylesheet>

感谢

1 个答案:

答案 0 :(得分:4)

文档http://www.w3.org/TR/xslt20/#serialization清楚地说明了&#34; cdata-section-elements属性是一个以空格分隔的QName列表。&#34;。因此,您需要列出要将其内容序列化为CDATA部分的元素名称。没有类似的外卡,例如strip-space