使用 XSLT 转换 XML 并保留 CDATA(在 Ruby 中)

2024-05-26

我正在尝试将包含如下内容的文档转换为另一个文档,使 CDATA 与第一个文档中的完全相同,但我还没有弄清楚如何使用 XSLT 保留 CDATA。

初始 XML:

<node>
    <subNode>
        <![CDATA[ HI THERE ]]>
    </subNode>
    <subNode>
        <![CDATA[ SOME TEXT ]]>
    </subNode>
</node>

最终 XML:

<newDoc>
    <data>
        <text>
            <![CDATA[ HI THERE ]]>
        </text>
        <text>
            <![CDATA[ SOME TEXT ]]>
        </text>
    </data>
</newDoc>

我尝试过这样的事情,但没有运气,一切都变得混乱:

<xsl:element name="subNode">
    <xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:element>

关于如何保存 CDATA 有什么想法吗?

谢谢! 槊

使用 ruby​​/nokogiri

更新:这是有效的。

<text disable-output-escaping="yes">&lt;![CDATA[</text>
<value-of select="normalize-space(text())" disable-output-escaping="yes"/>
<text disable-output-escaping="yes">]]&gt;</text>

这会将所有 text() 节点包装在 CDATA 中,这可以满足我的需要,并且它将在文本中保留 html 标签。


如果 CDATA 节点与纯文本节点混合在一起,则无法保留它们的精确序列。充其量,您可以通过在中列出该元素名称来强制输出中特定元素的所有内容为 CDATAxsl:output/@cdata-section-elements:

<xsl:output cdata-section-elements="text"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSLT 转换 XML 并保留 CDATA(在 Ruby 中) 的相关文章

随机推荐

  • Scala:如何定义带有变量参数列表的匿名函数?

    在 Scala 中 如何定义接受可变数量参数的匿名函数 scala gt def foo blah Int gt 3
  • 将鼠标悬停在一个伪元素上时,使另一个伪元素出现吗?

    我试图生成一个屏幕 其中利用 before and after伪元素 但我想知道这样的功能是否真的可行 我有一个包装 div 它包裹在输入周围 允许pseudo element在此包装纸上 就像是 lt wrapper div lt inp
  • Azure Web 角色中的网站项目

    我正在研究一个新的 ASP Net 项目 我们希望将其托管在 Windows Azure Web 角色中 该项目的技术要求之一是利用 ASP Net 的完整预编译选项 不可更新 单页程序集 Web Site项目模型 与 ASP Net 相反
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • 为什么我们不能在 Map(Java) 上使用 Iterator?

    我明白要迭代Map 我需要使用entrySet 方法 然后使用Iterator就所得的Set 我觉得这个问题可能很愚蠢 但是 如何Map完全实现 以便使用Iterator直接就可以了 据我所理解 Map不是一个集合 并且Iterator旨在
  • OpenSSL HMAC 函数中的意外复杂性

    SSL 文档分析 这个问题与 OpenSSL 中 HMAC 例程的使用有关 由于 Openssl 文档在某些领域有点薄弱 分析表明使用 unsigned char HMAC const EVP MD evp md const void ke
  • 使 GetRawInputDeviceInfo 和 RIDI_DEVICEINFO 与 C# 一起使用

    我有一个问题 我似乎无法使 GetRawInputDeviceInfo 与 RIDI DEVICEINFO 结合使用 尝试检索 RID DEVICE INFO 根本不起作用 我从函数中得到错误 1 这意味着没有足够的空间来存储 RID DE
  • 机器人/蜘蛛可以利用 Cookie 吗?

    我正在尝试检测访客是否是人类 我刚刚有了一个想法 但不确定这是否可行 但是 如果我可以在用户的 浏览器上存储 cookie 并在他们浏览我的网站时检索它 如果我成功检索 cookie 这是否是检测机器人和蜘蛛的好技术 精心设计的机器人或蜘蛛
  • 在django中使用uuid查询对象

    我正在使用 uuid 创建一个 id 字段 该字段是主键 如下所示 import uuid class User Profile models Model id models UUIDField primary key True defau
  • 使用 SSH.NET SftpClient 设置扩展文件属性

    在使用 Renci SSH NET SFTP 库将文件从 Windows 上传到远程计算机 Ubuntu 16 04 LTS 后 我尝试使用扩展文件属性来存储一些信息 但属性没有得到保留 这就是我尝试设置扩展属性的方式 SftpFileAt
  • 如何获取 3G 调制解调器的 IP 地址?

    我的 GPRS 调制解调器有一张 SIM 卡 它可以连接Web Web 服务给它一个 IP 号码 我需要它 像那样 http www your ip address com http www your ip address com 我怎样才
  • Scrapy CrawlSpider 规则具有多个回调

    我正在尝试创建一个实现 scrapy CrawlSpider 的 ExampleSpider 我的 ExampleSpider 应该能够处理仅包含艺术家信息的页面 仅包含专辑信息的页面 以及其他一些包含专辑和艺术家信息的页面 我能够处理前两
  • 结构成员初始化 - 省略具有默认值的属性值

    我是 Swift 新手 正在关注在线文档 具体来说 我正在查看初始化 https docs swift org swift book LanguageGuide Initialization html https docs swift or
  • 使用 Objective-C 获取 Photoshop 的动作列表

    我正在使用 C 和 Obj C 编写一个与 Photoshop 交互的 OSX 应用程序 我一直在使用NSAppleScript使用动态构建的 AppleScript 来驱动 Photoshop 是的 这有点可怕 我希望能够以不同的方式驱动
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • opensc-pkcs 链接错误

    我正在尝试使用在 Redhat linux 5 上构建的 opensc pkcs11 so 但是 当我尝试在示例程序中使用时 它给出了链接错误 main cpp text 0x265 undefined reference to C Ini
  • C 指针与 Objective-C 指针

    我有 Objective C 背景 正在尝试扩展我在 C 方面的知识 然而 有一件事让我感到困惑 那就是 C 和 Obj C 中指针之间的区别 正如您在下面的示例中看到的 两种语言之间的行为似乎有点不同 我想知道您是否可以帮助解释原因 C
  • Gradle 解析策略 cacheDynamicVersionsFor 不起作用

    我想每次都推动 Gradle 重新下载我的 SNAPSHOT 依赖项 可以通过以下方式做到这一点 refresh dependencies 但我想以另一种方式以编程方式完成此操作 configurations all resolutionS
  • SymPy 和 Sage 有什么区别?

    有什么区别SymPy http www sympy org and Sage https www sagemath org 又名 SageMath 全面披露 我是 SymPy 的首席开发人员 您应该了解的第一件事是 SymPy 和 Sage
  • 使用 XSLT 转换 XML 并保留 CDATA(在 Ruby 中)

    我正在尝试将包含如下内容的文档转换为另一个文档 使 CDATA 与第一个文档中的完全相同 但我还没有弄清楚如何使用 XSLT 保留 CDATA 初始 XML