我嘗試通過xslt文件轉換xml。輸出應該包含一個CDATA部分。爲此,我使用qt 4.8.3中的QXMLQuery對象。將xslt結果放入CDATA部分,使用模塊QtXmlPatterns中的QXmlQuery
我嘗試這樣:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<b>
<a>1</a>
<a>2</a>
<a>3</a>
<a>4</a>
</b>
的xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<x>
<xsl:apply-templates select="./b/a"/>
</x>
</xsl:template>
<xsl:template match="b/a">
<aa>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="./text()"/>
<xsl:element name="img"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</aa>
</xsl:template>
</xsl:stylesheet>
與其他XSLT編輯這導致:
<?xml version="1.0" encoding="UTF-8"?>
<x>
<aa><![CDATA[1<img/>]]></aa>
<aa><![CDATA[2<img/>]]></aa>
<aa><![CDATA[3<img/>]]></aa>
<aa><![CDATA[4<img/>]]></aa>
</x>
使用QXMLQuery結果在:
Fehler XTSE0090 in file:///C:/work/2.xsl, bei Zeile 11, Spalte 46: Attribute disable-output-escaping cannot appear on the element text. Only the standard attributes can appear.
還有其他方法可以做到這一點嗎? 或者,如果沒有辦法:是否有另一個免費或開放源代碼的C++ xslt解析器?