Variables y parámetros

Mediante el elemento <xsl:variable> podemos definir variables. Si se usa como elemento de alto nivel declaramos una variable con validez global, mientras que si el elemento <xsl:variable> se encuentra dentro de una plantilla, declaramos una variable local. Las variables globales son también válidas cuando se importan otras hojas de estilo. Es posible asignar el valor deseado a las variables a través del atributo select, o bien a través del contenido del elemento, que tendrá la forma de una cadena o secuencia de caracteres. Para realizar una llamada del valor debe anteponerse el carácter $ al nombre de la variable.

El concepto de variable es especialmente importante en el trabajo práctico con XSLT, ya que a través de éstas se puede organizar de manera centralizada la multitud de informaciones contenidas en las hojas de estilo. Como ejemplo de ello podemos nombrar aquí los tamaños de las fuentes. Por lo general, la importancia de las variables aumenta cuanto mayor es la extensión de las hojas de estilo. El uso de <xsl:param> es básicamente el mismo que el de <xsl:variable> y los atributos de ambos elementos son prácticamente idénticos. Aquí no examinaremos las pequeñas diferencias que existen entre las funciones que cumplen ambos elementos.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output encoding="iso-8859-1" version="1.0"/>
   <xsl:variable name="presentacion-del-poema"><b>Poema</b></xsl:variable>    (1)
   <xsl:template match="antologia">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="autor">
      <br/>
      <h4>
         <xsl:apply-templates/>
      </h4>
   </xsl:template>
   <xsl:template match="nombre">
      <xsl:apply-templates/>
      <xsl:text> </xsl:text>
   </xsl:template>
   <xsl:template match="apellido">
      <xsl:apply-templates/>
   </xsl:template>
   <xsl:template match="titulo">
      <h2>
         <xsl:apply-templates/>
      </h2>
   </xsl:template>
   <xsl:template match="estrofa">
      <p>
         <xsl:apply-templates/>
      </p>
   </xsl:template>
   <xsl:template match="verso">
      <xsl:apply-templates/>
      <br/>
   </xsl:template>
   <xsl:template match="poema">
   <xsl:variable name="año">
      <xsl:value-of select="@añodepublicacion"/>        (2)
   </xsl:variable>
   <br/>
      <xsl:copy-of select="$presentacion-del-poema"/> del año  (3)
      <xsl:value-of select="$año"/>
         <xsl:apply-templates/>
   </xsl:template>
</xsl:stylesheet>

(1) El elemento <xsl:variable> incluye el atributo obligatorio name, que toma como valor el nombre de la variable. Se podrá realizar una llamada de este nombre tantas veces como se desee. Debido a que aquí el elemento <xsl:variable> es un hijo directo de <xsl:stylesheet>, se está declarando una variable global válida para toda la hoja de estilo. El contenido de la variable, que en este caso es la estructura HTML, puede ser copiado en cualquier lugar a través de una llamada.

(2) Esta variable es local y sólo tiene validez dentro de la plantilla en la que está declarada. Puesto que la variable cuenta con el atributo select, el valor del mismo será usado como texto de reemplazo. Esto significa que el valor de select determina el contenido de la variable. Debido a que el contenido de la variable año es texto plano (en este caso el contenido del atributo añodepublicacion que no posee ninguna estructura, la llamada se realizará a través del elemento <xsl:value-of>. Aquí también se deberá anteponer el carácter $ al nombre de la variable.

(3) El elemento <xsl:copy-of> permite hacer una copia completa (incluyendo nodos descendientes) en el árbol resultado, mientras que el elemento <xsl:copy> sólo realiza una copia superficial. Estos elementos suelen ser importantes para las hojas de estilo XSLT. El carácter $ es aquí imprescindible, ya que éste informa al procesador de que se trata de una variable, no de un elemento.

Vista del navegador

Vista del navegador

Ejercicio 7

Haga uso del concepto de variable para examinar secuencias de caracteres.

El poema completo en el documento de salida debe aparecer sobre un fondo rojo cuando el primer carácter del atributo añodepublicacion sea "-".

Observación:

La funcion starts-with sirve para evaluar si la cadena del primer argumento comienza con la cadena del segundo argumento. Sintaxis: boolean starts-with (string, string).

El elemento <xsl:attribute> añade un atributo en el documento de salida. El nombre del mismo se define mediante el atributo name. El valor del atributo será el contenido de <xsl:attribute>. Se utiliza normalmente para crear atributos durante la transformación. El valor del atributo se determina y escribe a través de <xsl:value-of>. Sus atributos son name y namespace.

>> ver solución del ejercicio 7

<< anterior siguiente >>

 


© Derechos de autor 2004, dpunkt.verlag GmbH
El usuario podrá imprimir la versión online. La copia será exclusivamente para uso personal. Por lo demás el presente capítulo del libro "XSL-FO in der Praxis" está sometido a los mismos términos y condiciones que la versión impresa. La presente obra está protegida en su totalidad por la ley de propiedad intelectual. Reservados todos los derechos, incluyendo los derechos de reproducción, traducción, microfilmación, así como el almacenamiento y procesamiento en sistemas electrónicos.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, teléfono + 49 (0) 6221-14830, fax +49 (0) 6221-148399, hallo(at)dpunkt.de