Sto provando a convertire un documento con contenuto simile al seguente in un altro documento, lasciando il CDATA esattamente come era nel primo documento, ma non ho capito come per conservare il CDATA con XSLT.Trasforma XML con XSLT e conserva CDATA (in Ruby)
XML iniziale:
<node>
<subNode>
<![CDATA[ HI THERE ]]>
</subNode>
<subNode>
<![CDATA[ SOME TEXT ]]>
</subNode>
</node>
XML finale:
<newDoc>
<data>
<text>
<![CDATA[ HI THERE ]]>
</text>
<text>
<![CDATA[ SOME TEXT ]]>
</text>
</data>
</newDoc>
Ho provato qualcosa di simile, ma senza fortuna, tutto diventa confuso:
<xsl:element name="subNode">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:element>
Tutte le idee come conservare il CDATA?
Grazie! Lance
Utilizzando rubino/nokogiri
Aggiornamento: Ecco qualcosa che funziona.
<text disable-output-escaping="yes"><![CDATA[</text>
<value-of select="normalize-space(text())" disable-output-escaping="yes"/>
<text disable-output-escaping="yes">]]></text>
che vi avvolgerà tutto il testo() nodi CDATA, che lavora per quello che mi serve, e conserverà i tag HTML all'interno del testo.
Devo usare solo il ruby e forse le espressioni regolari per pre-elaborarli prima di eseguire xslt o qualcosa del genere? In quale altro modo lo faresti? Gli elementi della sezione cdata non lo stanno abbastanza tagliando perché sto usando variabili e così via. Grazie per il suggerimento. –
Se hai assolutamente bisogno di CDATA, dovrai cercare qualcosa di diverso da XSLT. Detto questo, sono molto curioso del motivo per cui ne hai bisogno. XDM non distingue tra testo e CDATA per una buona ragione: nessuna applicazione di elaborazione XML sana dovrebbe mai fornire una semantica diversa, quindi CDATA e escape dei caratteri dovrebbero essere utilizzabili in modo intercambiabile. –
Sto utilizzando questi dati in Flash e ho sentito che ci sono molti problemi con CDATA/no CDATA. Non ho ancora provato proprio questo: p –