我試圖將文檔的內容轉換爲另一個文檔,使CDATA與第一個文檔完全相同,但我還沒有弄清楚用XSLT保存CDATA。用XSLT轉換XML並保留CDATA(在Ruby中)
初始XML:
最終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"><![CDATA[</text>
<value-of select="normalize-space(text())" disable-output-escaping="yes"/>
<text disable-output-escaping="yes">]]></text>
這將包裝所有文本()在CDATA,這適用於我所需要的節點,它會保存裏面的文字html標籤。
我應該只使用ruby,也許正則表達式在我執行xslt之前對它們進行預處理,或者沿着這些行進行處理?你還會怎麼做? cdata-section-elements並沒有完全切斷它,因爲我使用了變量等。 感謝您的提示。 – 2009-10-01 07:17:38
如果您絕對需要CDATA,那麼您將不得不尋找XSLT以外的其他東西。這就是說,我很好奇你爲什麼需要它。由於很好的原因,XDM不區分文本和CDATA - 沒有一個理智的XML處理應用程序應該爲它們提供不同的語義,所以CDATA和字符轉義應該可以互換使用。 – 2009-10-01 17:24:58
我在Flash中使用這些數據,並且我聽說CDATA /沒有CDATA存在很多問題。我還沒有真正嘗試過:p – 2009-10-05 08:23:34