Foros del Web » Programación para mayores de 30 ;) » Programación General »

Template para depurar XSL (gratis)

Estas en el tema de Template para depurar XSL (gratis) en el foro de Programación General en Foros del Web. Hola, he visto que hay mucha gente un poco perdida con las transformaciones XSLT. Aqui os doy un .xsl con un template (verNodos) que podéis ...
  #1 (permalink)  
Antiguo 28/01/2008, 11:45
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 11 meses
Puntos: 24
Template para depurar XSL (gratis)

Hola, he visto que hay mucha gente un poco perdida con las transformaciones XSLT.
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:
<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">&lt;</span><span style="color:brown"><xsl:value-of select="name()" /></span><xsl:apply-templates select="@*" mode="docs"/><span style="color:blue">&gt;</span>
      <xsl:apply-templates mode="docs"/>
      <span style="color:blue">&lt;/</span><span style="color:brown"><xsl:value-of select="name()" /></span><span style="color:blue">&gt;</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">&lt;</span>
      <span style="color:brown"><xsl:value-of select="name()" /></span>
      <xsl:apply-templates select="@*" mode="docs"/>
      <span style="color:blue">/&gt;</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">&lt;</span>
      <span style="color:brown"><xsl:value-of select="name()" /></span>
      <xsl:apply-templates select="@*" mode="docs"/>
      <span style="color:blue">&gt;</span>
      <xsl:value-of select="node()"/>
      <span style="color:blue">&lt;/</span><span style="color:brown"><xsl:value-of select="name()" /></span><span style="color:blue">&gt;</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>
Espero que os sirva. A mi me ha ayudado mucho con XSLs complejos
__________________
Grupos de Música
Pop Music Stars
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:25.