Aşağıdaki gibi bir belgeyi bir belgeye başka bir belgeye dönüştürmeye çalışıyorum, CDATA'yı ilk belgede olduğu gibi bırakıyorum, ancak nasıl olduğunu anlayamadım. CDATA'yı XSLT ile korumak için.XML'i XSLT ile dönüştürün ve CDATA'yı (Ruby'de) koruyun
İlk XML:
<node>
<subNode>
<![CDATA[ HI THERE ]]>
</subNode>
<subNode>
<![CDATA[ SOME TEXT ]]>
</subNode>
</node>
Final XML: Böyle bir şey denedim ama hiçbir şans, her şey karmakarışık olur
<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>
Herhangi fikirleri nasıl CDATA'yı korumak için?
Teşekkürler! Lance
yakut/Nokogiri
Güncelleme kullanılması: Burada işler şey. Ihtiyacım olanı için çalışır CDATA'da, tüm metni() düğümleri kaydırılır ve bu metnin html etiketi koruyacak
<text disable-output-escaping="yes"><![CDATA[</text>
<value-of select="normalize-space(text())" disable-output-escaping="yes"/>
<text disable-output-escaping="yes">]]></text>
.
xslt'yi ya da bu satırlardaki bir şeyi yapmadan önce ön işleme almak için yakut ve belki de normal ifadeleri kullanmalı mıyım? Bunu başka nasıl yaparsın? Cdata-section-elements onu oldukça kesmiyor çünkü değişkenler kullanıyorum ve böyle. Bahşiş için teşekkürler. –
Kesinlikle CDATA'ya ihtiyacınız varsa, XSLT'den başka bir şey aramanız gerekecek. Yani, ihtiyacın nedenini merak ediyorum. XDM, metin ve CDATA'yı çok iyi bir nedenden dolayı ayırt etmemektedir - akılcı bir XML işleme uygulaması, onlar için farklı anlamlar vermemelidir, bu yüzden CDATA ve karakter kaçışları, birbirinin yerine kullanılabilir olmalıdır. –
Bu veriyi Flash uygulamasında kullanıyorum ve CDATA/CDATA yokken birçok sorun olduğunu duydum. Gerçekten henüz denemedim: p –