Vea esta aplicación en Acción.
Secuencia de Acontecimientos:
Al realizarse una requisición se envía la información en un documento XML puro hacia el navegador, el siguiente fragmento demuestra un documento de este tipo:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="nombre_trans.xsl"?>
<lista>
<usuario>
<nombre>Juan Espinoza</nombre>
<pais>México</pais>
<departamento>Sistemas</departamento>
</usuario>
<usuario>
<nombre>Alberto Mancera</nombre>
<pais>España</pais>
<departamento>Ventas</departamento>
</usuario>
</lista>
|
La primer linea de este documento le indica al navegador que se trata de un documento XML.
El renglón que inicia con
xsl-stylesheetle indica al "Browser" la hoja de estilo ("XSL Stylesheet") que será utilizada para transformar el documento XML en cuestión, en este caso la hoja de estilo es llamadanombre_trans.xsl.Posteriormente es declarada la información en XML a ser transformada por XSL.
Además del documento XML que es enviado al navegador, la declaración anterior hace que la hoja de estilo ("XSL Stylesheet") (nombre_trans.xsl) sea descargada automáticamente, dicho documento posee la siguiente forma:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Usuarios </title>
</head>
<body>
<h1 align="center"> Lista de Usuarios </h1>
<hr/>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="lista">
<xsl:apply-templates/>
<hr/>
<h5 align="right">©2000-2004 Osmosis Latina </h5>
</xsl:template>
<xsl:template match="usuario">
<table align="center" border="5" cellpadding="5" cellspacing="5">
<xsl:apply-templates/>
</table>
<br/>
</xsl:template>
<xsl:template match="nombre">
<tr>
<th> Nombre </th>
<td align="center"> <xsl:value-of select="."/> </td>
</tr>
</xsl:template>
<xsl:template match="pais">
<tr>
<th> Pais </th>
<td align="center"> <xsl:value-of select="."/> </td>
</tr>
</xsl:template>
<xsl:template match="departamento">
<tr>
<th> Departamento </th>
<td align="center"> <xsl:value-of select="."/> </td>
</tr>
</xsl:template>
</xsl:stylesheet>
|
Las primeras dos lineas le indican al "Browser" que se trata de un documento XSL.
El primer elemento
<xsl:output method="html"/>le indica al Navegador que el resultado de la transformación será un documento HTML.-
<xsl:template match="/">indica que al ser encontrado el elemento raíz del documento sea generada la secuencia indicada hasta donde sea encontrado el elemento<xsl:apply-templates/>. -
Al ejecutarse
<xsl:apply-templates/>se realiza una búsqueda por los elementos anidados dentro del elemento raíz. -
En este caso el elemento que continua (
lista) también posee un<xsl:apply-templates/>lo cual implica otra búsqueda por elementos anidados, que correspondería al Tagusuario. -
Al invocarse el
templatedel elementousuariose genera la secuencia HTML presente y se re-invoca<xsl:apply-templates/>que recae ahora sobre el elementonombre.
Dentro del
templatedel Tagnombreademás de generarse la secuencia HTML, se invoca<xsl:value-of select="."/>lo cual indica que debe ser extraído el texto del documento XML encontrado en el elemento, en este casonombre; debido a que no se encuentra una declaración de<xsl:apply-templates/>se regresa el control hacia el elemento de invocación (usuario).Una vez regresado el control al
templatellamadousuario, se continua la búsqueda por elementos anidados, en este caso resulta el elemento<pais>, sobre el cual se aplica su respectivotemplate.El proceso anterior continua por el resto de los elementos hasta que sea regresado el control al
templateraíz y éste ya no encuentre elementos anidados.
El documento final ya transformado sería el siguiente:
<html>
<head>
<title>Usuarios </title>
</head>
<body>
<h1 align="center"> Lista de Usuarios </h1>
<hr/>
<table align="center" border="5" cellpadding="5" cellspacing="5">
<tr>
<th> Nombre </th>
<td align="center"> Juan Espinoza </td>
</tr>
<tr>
<th> Pais </th>
<td align="center"> México </td>
</tr>
<tr>
<th> Departamento </th>
<td align="center"> Sistemas </td>
</tr>
</table>
<br/>
<table align="center" border="5" cellpadding="5" cellspacing="5">
<tr>
<th> Nombre </th>
<td align="center"> Alberto Mancera </td>
</tr>
<tr>
<th> Pais </th>
<td align="center"> España </td>
</tr>
<tr>
<th> Departamento </th>
<td align="center"> Ventas </td>
</tr>
</table>
<br/>
<hr/>
<h5 align="right">©2000-2004 Osmosis Latina </h5>
</body>
</html>
|
