我正在进行xstl转换,我想从源xml保留一个CDATA条目。因此我相应地定义了cdata-section-elements。但是我有一个带有属性name="test"
的qname。在那里,我不想应用cdata。我该如何排除这个元素?
.XML
<my:request><![CDATA[<foo...>]]>
<my:request>
<my:request name="test">
</my:request>
的.xsl
<xsl:output cdata-section-elements="my:request"/>
答案 0 :(得分:1)
根据属性,不可能有异常!
BUT !!如果您坚持使用其他解决方案,那么我会建议您为没有属性<![CDATA[
的元素my:request
插入name
。请参阅下面的示例:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.w3.org/2001/something">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="my:request[not(@name)]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<!--Insert CDATA-->
<xsl:value-of select="'<![CDATA['" disable-output-escaping="yes"/>
<xsl:apply-templates select="node()"/>
<xsl:value-of select="']]>'" disable-output-escaping="yes"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输入XML:
<?xml version="1.0" encoding="utf-8"?>
<my:root xmlns:my="http://www.w3.org/2001/something">
<my:request other="something">data</my:request>
<my:request name="test">data</my:request>
</my:root>
输出XML:
<?xml version="1.0" encoding="utf-8"?>
<my:root xmlns:my="http://www.w3.org/2001/something">
<my:request other="something"><![CDATA[data]]></my:request>
<my:request name="test">data</my:request>
</my:root>