<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- La declaración anterior indica que se trata de un documento XML
utilizando el Namespace para XSL -->
<!-- Este primer template indica que al ser encontrado
el elemento raíz del documento XML (<?xml version="1.0"?> )
debe ser impreso HTML seguido de la aplicación de
templates
-->
<xsl:template match="/">
<HTML>
<xsl:apply-templates/>
</HTML>
</xsl:template>
<!-- Cuando se entre al elemento productos se imprime
la cabezera del documento HTML (HEAD ) e inicia
el cuerpo del documento (BODY ) , se envía un titulo
seguido de una linea horizontal.
Posteriormente se inicia una tabla (TABLE ) de contenido
con un renglón indicando los títulos correspondientes.
Dicha tabla permanece abierta hasta que hayan sido aplicados
los templates restantes.
-->
<xsl:template match="productos">
<HEAD>
<TITLE>Productos</TITLE>
</HEAD>
<BODY bgcolor="FFFFFF">
<H3 align="center">Información de Productos</H3>
<HR/>
<TABLE align="center" border="5">
<TR>
<TH>Nombre</TH>
<TH>Ubicación</TH>
<TH>Disponiblidad</TH>
<TH>Tiempo de Entrega</TH>
<TH>Costo</TH>
</TR>
<xsl:apply-templates/>
</TABLE>
<HR/>
</BODY>
</xsl:template>
<!-- Se inicia un renglon (TR ) por cada elemento producto
del documento , dicho renglón permanece abierto hasta que
hayan sido aplicados los template 's de los elementos
anidados en producto.
-->
<xsl:template match="producto">
<TR>
<xsl:apply-templates/>
</TR>
</xsl:template>
<!-- Se imprime una celda (TD ) con el contenido de los
elementos nombre,tiempoentrega y costo.
Nótese el uso del carácter | para indicar un OR ,
lo anterior permite escribir un solo template para
elementos con características comunes.
-->
<xsl:template match="nombre|tiempoentrega|costo">
<TD><xsl:value-of select="."/></TD>
</xsl:template>
<!-- Al entrar al template del elemento ubicacion
se imprimen dos celdas (TD ), una sobre el valor del elemento
y otra mediante condicionales (if's) la cual imprime letras rojas
en dado caso de ser negativo el atributo disponible.
-->
<xsl:template match="ubicacion">
<TD><xsl:value-of select="."/></TD>
<xsl:if test="@disponible='si'">
<TD><B>Si</B></TD>
</xsl:if>
<xsl:if test="@disponible='no'">
<TD><FONT color="red">No</FONT></TD>
</xsl:if>
</xsl:template>
<!-- Se cierra el elemento raíz del documento XML -->
</xsl:stylesheet>
|