【问题标题】:Outputting CDATA in XQuery在 XQuery 中输出 CDATA
【发布时间】:2009-10-04 03:45:25
【问题描述】:

我将如何使用 XQuery 进行转换

<author>John Smith</author>

到

<author><![CDATA[John Smith]]></author>

?

另外,我将如何转换

<content>&lt;p&gt;&lt;em&gt;Hello&lt;/em&gt;&lt;/p&gt;</content>

到

<content><![CDATA[<p><em>Hello</em></p>]]></content>

?

如果重要的话,我正在使用 XSLPalette.app。

【问题讨论】:

    标签: xml xquery cdata


    【解决方案1】:

    XSLPalette 似乎在幕后使用了 Saxon,因此它应该支持 xsl:output 上的 cdata-section-elements 选项。详情请见http://www.w3.org/TR/xslt#output。

    基本上,如果底层 XSLT 处理器支持它,您可以编写代码

    <xsl:output cdata-section-elements="name1 name2 ... etc"/>
    

    cdata-section-elements 的值是以空格分隔的标签名称列表,其子文本节点将作为 CDATA 部分输出。

    我很想知道这是否适用于 XSLPalette。

    【讨论】:

    • 是的,这确实适用于 XSLT。我正在尝试使用 XQuery 实现相同的目标。
    • XQuery 规范中提供了相同的 cdata-section-elements 选项。您必须确定 XSLPalette 如何指定 XQuery 序列化参数。
    【解决方案2】:

    解决方案:

    declare namespace saxon="http://saxon.sf.net/";
    declare option saxon:output "cdata-section-elements=content";
    

    Thanks to Jim Garrison 鼓励我更加仔细地搜索 Saxon 文档。

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 2016-06-16
      • 2010-09-15
      • 2011-12-02
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多