首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模块QtXmlPatterns中的QXmlQuery将xslt结果放入CDATA部分

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

Stack Overflow用户
提问于 2013-03-14 21:13:33
回答 1查看 272关注 0票数 0

我尝试通过xslt文件转换xml。输出应包含CDATA部分。为此,我使用了qt 4.8.3中的QXMLQuery对象。

我尝试这样做:

xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<b>
  <a>1</a>
  <a>2</a>
  <a>3</a>
  <a>4</a>
</b>

xsl:

代码语言:javascript
复制
<?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>

对于其他xslt编辑器,这将导致:

代码语言:javascript
复制
<?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会产生以下结果:

代码语言:javascript
复制
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++解析器?

EN

回答 1

Stack Overflow用户

发布于 2013-03-14 22:17:01

看起来您的XSLT处理器不支持该属性。您可以尝试在xsl:value-of上使用它:

代码语言:javascript
复制
  <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" />

这是我最好的猜测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15410298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档