El elemento <xsl:template> es usado para crear plantillas.
El atributo match es usado para asociar la plantilla con un elemento XML. El atributo match puede ser usado también para definir una plantilla para un archivo xml entero. El valor de la atributo match es una expresión XPath (p.e. match =”/” define el documento completo).
Veamos un ejemplo simple de un archivo xsl:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:template match="/"> |
Ya que un documento XSL en si mismo es un documento XML, siempre comienzará con la declaración XML: <?xml version="1.0" encoding="ISO-8859-1"?>.
El siguiente elemento, <xsl:stylesheet>, define que este documento es un documento de hoja de estilo XSLT (con el número de versión y el atributo namespace de XSLT).
El elemento <xsl:template> define una plantilla. El atributo match="/" asocia a la plantilla con la raíz del documento XML.
El contenido incrustado dentro del elemento <xsl:template> define el código HTML que se escribirá en la salida.
Las dos últimas líneas definen el final de la plantilla y el final de la hoja de estilo.
El resultado de la transformación encima se parecerá a esto:
Si a la hoja de estilos la procesamos junto con el siguiente documento XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <cd> <cd> |
El resultado sería el siguiente documento HTML:
<html> <body> <h2>Mi coleccion de CDs</h2> <table border="1"> <tr bgcolor="#9acd32"><th>Titulo</th><th>Artista</th></tr> <tr><td>.</td><td>.</td> </tr> </table> </body> </html> |
El siguiente paso mostraremos la manera de como se usa la etiqueta <xsl:value-of> para seleccionar ciertos elementos del documento XML.
Daniel P. @ 20:39 | comentarios (0) | Links Permanentes
Para empezar, vamos a tratar de presentar una hoja XML lo más simple posible (ejemplo0.xml):
|
Para convertirlo en HTML, usaremos la siguiente hoja de estilo (pagina0.xsl):
|
El resultado sería el siguiente documento HTML:
|
Para empezar, el código del documento XML contiene una etiqueta pagina_web, que incluye otras dos etiquetas nombre y url, que contienen el texto que queremos que aparezca en la página web. En el resto, la primera línea simplemente describe que el resto del documento es XML y asocia la hoja de estilo XSLT (pagina0.xsl) al documento.
Esta segunda línea se usa en entornos de publicación tales como el Cocoon; algunos procesadores de XSLT la usan para tomar el nombre de la hoja de estilo que se va a usar; también lo suelen usar navegadores como el Mozilla/Netscape/Firefox o el Internet Explorer. Cada una de estas etiquetas se denominan elementos; y en principio, un documento puede tener tantas etiquetas como queramos.
El XML original, como se ve, es simplemente XML bien formado no usa un DTD ni lo necesita. Basta con que haya una etiqueta raíz (pagina_web, en nuestro caso), las etiquetas estén emparejadas correctamente y los atributos entre comillas. Diferentes documentos XML podrían ser procesados con la misma hoja de estilo, y darían diferente resultado salvo por el hecho de que es una forma de mantener una apariencia común.
La primera hoja de estilo con la que nos enfrentamos es relativamente simple. El "esqueleto" es un documento HTML normal, al cual tenemos que añadir "contenido dinámico", es decir, contenido generado a partir del XML original.
Para empezar, se incluyen una serie de instrucciones, de la línea 1 a la 3: no son instrucciones en sí, sino que modifican el aspecto de la salida. La primera declara el documento XML y el tipo de codificación (que podría ser ISO-8859-1 en vez de UTF-8 si quisiéramos incluir acentos y demás caracteres idiosincrásicos) y la segunda es la etiqueta raíz de la hoja de estilo (cerrada en la última línea; recordemos que una hoja de estilo XSL es también un documento XML y por tanto tiene que seguir todas sus convenciones), que declara la versión de XSLT que se está usando y el espacio de nombres (namespace) que vamos a usar, es decir, el prefijo que usarán todas las instrucciones propias de XSLT; en este caso, usamos xsl, pero cambiando esta instrucción podríamos usar otro cualquiera.
Ese esqueleto está organizado en "templates", que son partes de la hoja que se "disparan" cuando encuentran una etiqueta que corresponda a lo que hay en su atributo match. El primer y único template comienza en la línea 3, y, en este caso, el template que corresponde a la etiqueta raíz genera un esqueleto de página HTML. La "orden" en la línea 7 cede el control a los otros templates, es decir, trata de aplicar todos los demás templates que haya en el documento, incluyendo el resultado de aplicarlos precisamente en ese punto (es decir, entre las etiquetas h1. En este caso no hay más templates, salvo los llamados los templates por defecto, que lo único que hacen es incluir el contenido de las etiquetas en el documento de salida. Es decir, en la práctica lo que hemos hecho es decirle dónde tiene que incluir en el esqueleto los valores del documento original, sin procesarlos más.
La orden <xsl:apply-templates /> podría haberse sustituido, en este caso, por <xsl:value-of select='pagina_web' /> y habría tenido exactamente el mismo efecto, es decir, incluir el contenido de la etiqueta pagina_web (y todas las que descienden de ella).
Daniel P. @ 16:52 | comentarios (5) | Links Permanentes
<< December 2005 >> | ||||||
---|---|---|---|---|---|---|
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
archivos
November - 2013