[*]<?xml version=”1.0″ encoding=”UTF-8″?>
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” version=”1.0″>
<xsl:output omit-xml-declaration=”yes” indent=”yes”/>
<xsl:strip-space elements=”*”/>
<xsl:template match=”https://foroayuda.es/”>
<table>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match=”*”>
<tr>
<td>
<p><xsl:value-of select=”name()”/></p>
</td>
<td>
<p><xsl:value-of select=”.”/></p>
</td>
</tr>
</xsl:template>
<xsl:template match=”*[*]”>
<tr>
<td>
<p><xsl:value-of select=”name()”/></p>
</td>
<td>
<table>
<xsl:apply-templates/>
</table>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Solución:
Aquí hay un refinamiento de la solución de @ABach, que intenta crear tablas anidadas:
[*]<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="https://foroayuda.es/"> <table> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="*"> <tr> <td> <p><xsl:value-of select="name()"/></p> </td> <td> <p><xsl:value-of select="."/></p> </td> </tr> </xsl:template> <xsl:template match="*[*]"> <tr> <td> <p><xsl:value-of select="name()"/></p> </td> <td> <table> <xsl:apply-templates/> </table> </td> </tr> </xsl:template> </xsl:stylesheet>
No he intentado hacer nada muy inteligente con contenido mixto.
Agregué un poco de CSS a la excelente solución de Michael Kay, si alguien está buscando una forma rápida de hacer que un XML sea legible en un navegador:
[*]<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="https://foroayuda.es/"> <style> body {font-family: sans-serif;} td {padding: 4px;} </style> <table> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="*"> <tr> <td style="background-color: #aaa;"> <p><xsl:value-of select="name()"/></p> </td> <td style="background-color: #ccc;"> <p><xsl:value-of select="."/></p> </td> </tr> </xsl:template> <xsl:template match="*[*]"> <tr> <td style="border:2px solid #c55; font-size:120%;"> <p><xsl:value-of select="name()"/></p> </td> <td style=""> <table> <xsl:apply-templates/> </table> </td> </tr> </xsl:template> </xsl:stylesheet>