Aqui os doy un .xsl con un template (verNodos) que podéis usar para depurar.
Lo podéis usar en cualquier .xsl para ver todos los elementos con sus atributos correspondientes en una determinada selección. El resultado lo envía a la salida como un texto con el mismo formato que el xml pero con varios colores.
El código que pongo al final lo salvais en un fichero, por ejemplo debug.xsl
Para usarlo sólo necesitais dos cosas:
1.- Hacer un include:
<xsl:include href="debug.xsl"/>
2.- Llamar al template verNodos con la selección a mostrar. Ejemplo:
<xsl:variable name="l_FichG" select="concat( '../datos/g', $param1, '.xml' )"/>
<xsl:variable name="l_grupo" select="document($l_FichG)/elem/ele[@di=$param2]"/>
<xsl:call-template name="verNodos">
<xsl:with-param name="pi_nombreVar" select="'l_grupo'"/>
<xsl:with-param name="pi_nodos" select="$l_grupo"/>
</xsl:call-template>
Éste es el código a salvar:
Código:
Espero que os sirva. A mi me ha ayudado mucho con XSLs complejos<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:variable name="style">margin-left:10; font:12pt 'Courier New'</xsl:variable> <!-- Following templates for visualization of in memory xsl variables. --> <xsl:template name="verNodos"> <xsl:param name="pi_nombreVar"/> <xsl:param name="pi_nodos"/> <div style="margin-top:3pt; border:.05cm black solid; padding:3pt"> <div style="margin-bottom:3pt; font:bold 12pt Verdana"> <a name="{$pi_nombreVar}">Nombre de variable: <xsl:value-of select="$pi_nombreVar"/></a> </div> <xsl:apply-templates select="$pi_nodos" mode="docs"/> </div> </xsl:template> <xsl:template match="*[*]" mode="docs"> <div style="{$style}"> <!-- remove the number element if you don't need it <xsl:number />: --> <span style="color:blue"><</span><span style="color:brown"><xsl:value-of select="name()" /></span><xsl:apply-templates select="@*" mode="docs"/><span style="color:blue">></span> <xsl:apply-templates mode="docs"/> <span style="color:blue"></</span><span style="color:brown"><xsl:value-of select="name()" /></span><span style="color:blue">></span> </div> </xsl:template> <xsl:template match="*[not(*)]" mode="docs"> <div style="{$style}"> <!-- remove the number element if you don't need it <xsl:number />: --> <span style="color:blue"><</span> <span style="color:brown"><xsl:value-of select="name()" /></span> <xsl:apply-templates select="@*" mode="docs"/> <span style="color:blue">/></span> </div> </xsl:template> <xsl:template match="*[not(*)][node()]" mode="docs"> <div style="{$style}"> <!-- remove the number element if you don't need it <xsl:number />: --> <span style="color:blue"><</span> <span style="color:brown"><xsl:value-of select="name()" /></span> <xsl:apply-templates select="@*" mode="docs"/> <span style="color:blue">></span> <xsl:value-of select="node()"/> <span style="color:blue"></</span><span style="color:brown"><xsl:value-of select="name()" /></span><span style="color:blue">></span> </div> </xsl:template> <xsl:template match="@*" mode="docs"> <span style="color:brown"><xsl:text> </xsl:text><xsl:value-of select="name()" /></span> <span style="color:blue">="</span><b><xsl:value-of select="." /></b> <span style="color:blue">"</span> </xsl:template> </xsl:stylesheet>