gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:37 24 4
gpt4 key购买 nike

我正在尝试将包含如下内容的文档转换为另一个文档,使 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 节点与纯文本节点混合,则无法保留它们的精确序列。充其量,您可以强制输出中特定元素的所有内容为 CDATA,方法是在 xsl:output/@cdata-section-elements 中列出该元素名称:

<xsl:output cdata-section-elements="text"/>

关于xml - 使用 XSLT 转换 XML 并保留 CDATA(在 Ruby 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1502083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com