Pregunta

Mi problema es que mi documento XML contiene fragmentos de XHTML y, al pasarlo a través de un XSLT, me gustaría que representara esos fragmentos sin alterarlos.

Intenté envolver el fragmento en un CDATA pero no funciona ya que menos y mayor que se traducen a < y > en lugar de repetirse directamente.

¿Cuál es el XSL necesario para hacer esto?

¿Fue útil?

Solución

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Esto se conoce como la "transformación de la identidad" en el especificación XSLT.

Otros consejos

Me encontré con ese problema y la copia es sin duda la más fácil de usar.La identidad funciona, pero son 5 líneas de código y necesitaría llamar a dicha plantilla, no solo definirla tal como está en su documento XSLT (de lo contrario, probablemente no obtendrá lo que esperaba en su resultado).

En realidad, mi principal problema era copiar el contenido de una etiqueta y no la etiqueta en sí.En realidad, es muy fácil de resolver, pero me tomó un poco de tiempo resolverlo (¡tal vez porque QtXmlPatterns falla bastante!)

Entonces, lo siguiente copia la etiqueta nombrada aquí y todos sus hijos:

<xsl:copy-of select="this/tag/here"/>

Pero la mayoría de las veces no querrás hacer eso porque <aquí> es en realidad el contenedor; en otras palabras, no debería aparecer en la salida.En ese caso puedes simplemente hacer esto:

<xsl:copy-of select="this/tag/here/*"/>

Esto copia todos los elementos secundarios que se encuentran en la etiqueta denominada <aquí>.

Suponiendo que su xhtml está en un elemento YYY

http://www.dpawson.co.uk/xsl/sect2/N1930.html explica opciones

xsl:copia de

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top