使用模块QtXmlPatterns中的QXmlQuery将xslt结果放入CDATA部分

使用模块QtXmlPatterns中的QXmlQuery将xslt结果放入CDATA部分,qt,xslt,Qt,Xslt,我尝试通过xslt文件转换xml。输出应该包含一个CDATA部分。为此,我使用Qt4.8.3中的QXMLQuery对象 我试着这样做: xml: 还有别的办法吗? 或者如果没有办法:有没有另一个免费的或开源的XSLT解析器用于C++?< p>看起来你的XSLT处理器不支持那个属性。您可以尝试在xsl:value的上使用它: <xsl:value-of select="'&lt;![CDATA['" disable-output-escaping="yes" /> &l

我尝试通过xslt文件转换xml。输出应该包含一个CDATA部分。为此,我使用Qt4.8.3中的QXMLQuery对象

我试着这样做:

xml:

还有别的办法吗?
或者如果没有办法:有没有另一个免费的或开源的XSLT解析器用于C++?

< p>看起来你的XSLT处理器不支持那个属性。您可以尝试在
xsl:value的
上使用它:

  <xsl:value-of select="'&lt;![CDATA['" disable-output-escaping="yes" />
  <xsl:value-of select="./text()"/>
  <xsl:element name="img"/>
  <xsl:value-of select="']]&gt;'" disable-output-escaping="yes" />

这是我最好的猜测

<?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">&lt;![CDATA[</xsl:text>
      <xsl:value-of select="./text()"/>
      <xsl:element name="img"/>
      <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
    </aa>
  </xsl:template>
</xsl:stylesheet>
<?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>
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.
  <xsl:value-of select="'&lt;![CDATA['" disable-output-escaping="yes" />
  <xsl:value-of select="./text()"/>
  <xsl:element name="img"/>
  <xsl:value-of select="']]&gt;'" disable-output-escaping="yes" />