2010-01-29 12 views
6

Im haciendo una transformación XSL. El XML que estoy transformando tiene un nodo que contiene html.XSL: permite HTML sin procesar a través de

<xml> 
    <text> 
     <p><b>Hello</b><em>There</em></p> 
    </text> 
</xml> 

Aplicando la transformada:

<xsl:template match="text"> 
    <div class="{name()} input"> 
     <xsl:value-of select="."/> 
    </div> 
</xsl:template> 

me sale la salida:

<div class="text input"> 
    Hello There 
</div> 

pero quiero que el HTML permanezca intacto, así:

<div class="text input"> 
    <p><b>Hello</b><em>There</em></p> 
</div> 

Sustituyendo . con el nodo () función da el mismo resultado.

¿Hay algún método para obtener el HTML a través de la transformación sin modificaciones?

Respuesta

10

Tenga una mirada en xsl:copy-of

Se debe hacer lo que necesita ..

<xsl:copy-of select="." /> 

Lo anterior se seleccionará todo el nodo actual por lo que en su caso la <text> sí se incluirán ..

Utilice lo siguiente para seleccionar todo debajo de la actual ..

<xsl:copy-of select="child::node()" /> 
+1

' 'copiaría todo el nodo' ', no solo su contenido. ;) – Tomalak

+0

@Tomalak, de hecho ... editado con la versión alternativa. –

+0

Gracias Gaby, que hizo el truco muy bien;) –

Cuestiones relacionadas