Bueno, si uso esta hoja de estilo:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="node/text()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
en este archivo XML:
<?xml version="1.0" encoding="utf-8"?>
<node id=1 text="Book Information" ><![CDATA[This is sample text]]></node>
me sale un error de análisis, porque id=1
es XML válido.
Poner entre comillas el valor del atributo (id="1"
) y volver a ejecutar la hoja de estilo, me sale como salida:
Este es el texto de ejemplo
Así que no es un comienzo. Básicamente, solo trata el CDATA como un nodo de texto y ya estás en camino.
Usted dijo:
me encontré con algo como:
<xsl:output cdata-section-elements="text"/>
y luego a buscar CDATA:
<xsl:value-of select="node" />
Este enfoque funciona bien si está usando value-of
también. Aquí hay un ejemplo a lo largo de las líneas de su comentario, usando value-of
en su lugar. Sin embargo, tenga en cuenta que cdata-section-elements
solo funciona en el lado de salida, lo que indica salida Elementos XML que desea imprimir como secciones CDATA en lugar de datos simples de caracteres antiguos. No tiene nada que ver con obteniendo los datos.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output cdata-section-elements="foo"/>
<xsl:template match="/">
<foo>
<xsl:value-of select="node"/>
</foo>
</xsl:template>
</xsl:stylesheet>
imprime
<?xml version="1.0"?>
<foo><![CDATA[This is sample text]]></foo>
intentado con la plantilla. Pero no devuelve ningún valor. –
¿Qué plantilla? –
En realidad, de varios recursos encontré algo así como; y luego para recuperar CDATA; Devuelve nada. –