aulambra.com - Tecnologias de Internet
 
 

Lista de Correo

Para suscribirte a la lista de correo dejanos tu e-mail y preferencias en tecnologías.

Seguir >>

Valid HTML 4.01!
Valid CSS!

Web 2.0

Guardar... Compartir...
EMAIL: PASSWORD:
Darme de alta como usuario | Se me ha olvidado la contraseña

volverxml/xslt/Elementos Condicionados

Elementos Condicionados

Nuestras hojas de transformación no se tienen que limitar a recuperar información de un fichero XML y a ponerla en otro tipo de formato. Puede ser que cierta información del documento no nos interese, o tenga que ser evaluada.

Para poder realizar esa evaluación de datos nos podemos apoyar en estructuras condicionales como xsl:if, xsl:choose y las funciones que tiene el lenguaje XSL.

Siguiendo al resto de los ejemplos, vamos a utilizar el fichero XML con los datos de los libros. Pero en este caso vamos a añadir un nuevo campo en la estructura. Este nuevo campo será el precio del libro. El fichero de libros nos quedará así:

<?xml version="1.0" encoding="iso-8859-1"?>
<libros>
  <libro>
    <titulo>Fuente Ovejuna</titulo>
    <autor>Lope de Vega</autor>
    <isbn>84-9815-002-7</isbn>
    <precio>24</precio>
  </libro>
  <libro>
    <titulo>La Celestina</titulo>
    <autor>Fernando de Rojas</autor>
    <isbn>84-96390-96-9</isbn>
    <precio>30</precio>
  </libro>
  ...
</libros>

La condición de nuestra hoja de transformación será el generar un listado de libros, pero siempre y cuando, estos, tengan un precio superior o igual a 30 euros.

Para ello lo primero que tenemos que hacer es mostrar el listado de libros. Esto lo conseguimos con una estructura repetitiva del tipo xsl:for-each. En medio de esta estructura, utilizando etiquetas xsl:value-of mostramos la información del titulo del libro, autor y precio del mismo. Tendremos el siguiente código:

<xsl:for-each select="libros/libro">
  <p> 
  Titulo:<xsl:value-of select="titulo"/><br/>
  Autor:<xsl:value-of select="autor"/><br/>
  Precio:<xsl:value-of select="precio"/> 
  </p>
</xsl:for-each>

El código anterior nos va a sacar todos los libros que tengamos definidos en nuestra estructura XML. Todavía no hemos ejecutado el filtro. Para aplicar el filtro utilizamos la etiqueta xsl:if. Antes de utilizarla refrescaremos cual es su estructura

<xsl:if test="condicion"> ... </xsl:if>

Como podemos ver, el atributo test es el que nos permite evaluar la condición. Como condición podemos utilizar cualquiera de las funciones que nos da el lenguaje XSLT o simplemente comparar valores de elementos del documento XML contra constantes. Este último caso será el nuestro. Y es que nosotros contrastaremos el valor de un elemento del documento, el precio, contra una constante, 24 (euros € o dolares $ ;-)) Quedándonos al final esta línea de código:

<xsl:if test="precio>24"> ... </xsl:if>

En el medio de esta decisión pondremos la extracción de información del libro, es decir, los xsl:value-of. Nuevamente, quedándonos:

<xsl:for-each select="libros/libro">
  <xsl:if test="precio>=30">
    <p> 
    Titulo:<xsl:value-of select="titulo"/><br/>
    Autor:<xsl:value-of select="autor"/><br/>
    Precio:<xsl:value-of select="precio"/> 
    </p>
  </xsl:if>
</xsl:for-each>

arriba


"Muchas veces me moria pensando que no iba verte.
Pero moria la muerte cada vez que te veia". E.Galeano.


© Copyright 2001-2006. Víctor Cuervo
aulambra.com | Linea de Codigo