Estoy usando XSLT para convertir XML a HTML. Tengo problemas para descubrir cómo tratar con nodos XML incrustados para formatear. Por ejemplo, digamos que tengo el elemento XML:¿Cómo se puede tratar con etiquetas XML incrustadas en XSLT?
<favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
Sin embargo, durante XLST, la etiqueta <i>
se tendrá en cuenta, por lo que "Star Wars" no está en cursiva en la salida HTML. ¿Hay una forma relativamente simple de arreglar esto?
test.xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.html.xsl"?>
<favoriteMovies>
<favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
</favoriteMovies>
test.html.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:template match="/">
<html>
<head />
<body>
<ul>
<xsl:for-each select="favoriteMovies/favoriteMovie">
<li><xsl:value-of select="." /></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
@Craig, nos muestran el XSLT (los bits relevantes). – mzjn
Buena pregunta, +1. Vea mi respuesta para una explicación de la causa del problema y dos soluciones completas y cortas. Tenga en cuenta que la respuesta actualmente aceptada es completamente incorrecta. Poner marcas en una sección CDATA convierte esto en texto inutilizable de 1 dimensión y generalmente se identifica como una mala práctica. –
@Dimitre Novatchev, a menos que no haya NINGUNA NECESIDAD para tratar ese html como estructurado, y su único propósito es pasarlo al navegador como está, sin riesgo de romper la estructura XML original con etiquetas html arbitraty. –