Java XSLT
Java XSLT
Java y XSLT
Raquel Snchez Daz Montserrat Vicente Carrera
Java y XSLT
RESUMEN
Este trabajo es una introduccin al lenguaje XSLT (Transformaciones del Lenguaje de Hojas de Estilo Extensibles), que se utilizan para transformar un documento XML en otro documento de texto. Esto se ilustra mediante un ejemplo en el que se transformarn documentos en XML a documentos HTML.
ii
Java y XSLT
Snchez y Vicente
NDICE
1.- INTRODUCCIN ................................................................................................................... 1 2.- XSL Y XSLT ........................................................................................................................... 1 2.1.- OBJETOS DE FORMATO .............................................................................................. 2 3.- JAVA Y XSLT ........................................................................................................................ 2 4.- RAZONES DE CREACIN Y USO ...................................................................................... 2 5.- QU NECESITAMOS?......................................................................................................... 4 5.1- PROCESADORES XSLT ................................................................................................. 4 5.2- INSTALACION XALAN ................................................................................................. 4 6.- TRANSFORMACIONES XSLT............................................................................................. 5 7.- REPASO DE XML .................................................................................................................. 5 7.1- DTD................................................................................................................................... 5 8.- SINTAXIS BASICA DE XSLT .............................................................................................. 6 8.1.- UNA PRIMERA APROXIMACIN............................................................................... 6 8.2.- PROCESO DE TRANSFORMACIN............................................................................ 7 8.3.- XPATH............................................................................................................................. 7 8.4.- PASOS Y RUTAS DE LOCALIZACIN....................................................................... 8 8.5.- PUESTA EN BUCLE Y CLASIFICACION ................................................................. 10 8.6.- <XSL:IF> ....................................................................................................................... 11 8.7.- <XSL:COSE>, <XSL:WHEN>, <XSL:OTHERWISE>................................................ 11 8.8.- PARMETROS Y VARIABLES .................................................................................. 12 8.9.- <XSL:TEMPLATE> ...................................................................................................... 12 8.10.- <XSL:INCLUDE>, <XSL:IMPORT> ......................................................................... 13 8.11.- FORMATO DE CIFRAS Y TEXTO ........................................................................... 13 9.- OTRAS APLICACIONES..................................................................................................... 14 9.1.- APLICACIONES INALMBRICAS ............................................................................ 14 9.2.- APLICACIONES WEB ................................................................................................. 14 10.- EJEMPLO TIENDA VIRTUAL.......................................................................................... 15 10.1.- HOJA DE ESTILO BSICA: TEMPLATES .............................................................. 15 10.1.1.- PROCESNDOLO CON XALAN....................................................................... 16 10.1.2.- EXPLICACIN DEL CDIGO ........................................................................... 16 10.2.- DOCUMENTOS XML CON MS ETIQUETAS: TEMPLATES MLTIPLES ...... 17 10.2.1.- PROCESNDOLO CON XALAN....................................................................... 19 10.2.2.- EXPLICACIN DEL CDIGO ........................................................................... 19 11.- CONCLUSION.................................................................................................................... 20 12.- REFERENCIAS................................................................................................................... 20 13.- BIBLIOGRAFIA ................................................................................................................. 22
Java y XSLT
iii
Snchez y Vicente
1.- INTRODUCCIN
XSLT es el lenguaje que especifica la conversin de un documento de un formato a otro. Est diseado especialmente para transformar los datos XML en otros formatos de texto, como HTML, XHTML, WML u otro formato XML. Java y las Transformaciones del Lenguaje de Hojas de Estilo Extensible (XSLT) son tecnologas muy diferentes que en lugar de competir entre ellas, se complementan. Las ventajas de Java son su portabilidad, su vasta coleccin de bibliotecas estndar y su amplia aceptacin por parte de la mayora de las empresas. Sin embargo, una de las desventajas del Java reside en su habilidad para procesar texto. Por ejemplo, tal vez Java no sea la mejor tecnologa para convertir simplemente archivos XML a otro formato como XHTML o Lenguaje de Marcado Inalmbrico (WML). El uso de Java para dichas tareas requiere programadores expertos. En concreto, en el caso de pginas web, es recomendable simplificar el proceso de creacin de la pgina para que puedan participar personas que no sean programadores. Cuando apareci por primera vez XML, se extendi la creencia de que era el sucesor inminente de HTML. Este punto de vista se vio influenciado por una serie de factores, como la propaganda de los medios de comunicacin, el ilusionismo y la simple confusin sobre el nmero de nuevas tecnologas asociadas con XML. La realidad es que millones de pginas web estn escritas en HTML y que ningn buscador ampliamente usado soporta por completo el XML y sus estndares relacionados. Aunque los vendedores de buscadores incorporen soporte total para XML y para su familia de tecnologas relacionadas, pasarn aos antes de que haya suficientes personas que usen estas nuevas versiones, para que se pueda justificar la recomposicin de las pginas web en XML. Aunque mantener la compatibilidad con los buscadores anteriores es esencial, las empresas no deberan dudar en pasar a usar XML y las tecnologas relacionadas para el servidor. Desde las perspectivas del buscador, HTML seguir dominando en la web durante muchos aos. Sin embargo, si nos fijamos en los aspectos internos, la situacin es muy distinta, puesto que HTML se usa solo en el ltimo instante de presentacin. Las aplicaciones web deben soportar diversos buscadores, y el modo ms sencillo de que as lo hagan consiste sencillamente en transformar los datos en HTML antes de enviarlos al cliente. En el servidor, XML es el modo preferido de procesamiento e intercambio de datos porque es portable, estndar y fcil de utilizar. En este mbito es en el que intervienen Java y XSLT.
Java y XSLT
Java y XSLT
Java y XSLT
Snchez y Vicente
Existen dos formas de mantener la lgica de programacin separada de la generacin de HTML, pero extraer datos significativos de pginas HTML resulta casi imposible. Esto se debe a que el HTML no indica claramente el modo en que estn estructurados sus datos. Un humano puede observar el HTML y establecer lo que significan sus campos, pero resulta bastante difcil escribir un programa informtico que pueda extraer datos significativos de forma segura. Aunque podemos buscar modelos de texto como Nombre seguido de <td>, esta tcnica (conocida como reduccin de pantalla) falla desde el momento en que se modifica la presentacin. Por ejemplo, si cambiamos la pgina del siguiente modo, dicha tcnica no funcionar: <tr><td>Nombre completo:</td><td>Juan Santos Asensio</td></tr> Gracias a XSLT es posible definir claramente las funciones de Java, XML, XSLT y HTML. Java se utiliza para la lgica empresarial, las consultas y actualizaciones de bases de datos y para crear datos XML. El XML es responsable de los datos en bruto, mientras que XSLT transforma el XML en HTML para que un buscador lo vea. Una ventaja clave de esta tcnica es la ntida separacin entre los datos XML y las vistas HTML. Para soportar varios buscadores, se escriben varias hojas de estilo XSLT, pero se reutilizan los mismos datos XML en el servidor. En el ejemplo anterior, los datos XML del cliente no contenan ninguna instruccin de formato: <cliente> <nombre>Juan</nombre> <apellidos>Santos Asensio</apellidos> </cliente> Lo cual se vera as:
Dado que XML contiene nicamente datos, casi siempre resulta mucho ms sencillo que HTML. Adems solamente es necesario escribir el cdigo de generacin de CML una vez. Luego, se pueden transformar los datos XML mediante un nmero cualquiera de hojas de estilo XSLT para soportar diferentes buscadores, lenguajes alternativos e incluso dispositivos no buscadores como los telfonos mviles con los que se puede acceder a la Web.
Java y XSLT
Java y XSLT
5.- QU NECESITAMOS?
Para realizar transformaciones XSLT se necesitan tres componentes: una fuente de datos XML, una hoja de estilo XSLT y un procesador XSLT. La hoja de estilo XSLT es en realidad un documento XML bien construido, por lo que el procesador XSLT incluir o utilizar, adems un analizador gramatical XML.
Transformado en
Java y XSLT
Snchez y Vicente
7.1- DTD
Un DTD es una definicin de tipo de documento. Un DTD establece un conjunto de restricciones para un documento o conjunto de documentos XML. DTD no es una especificacin en s misma, pero se define como parte de la especificacin de XML. En un documento XML, una declaracin de tipo de documento puede incluir tanto restricciones de marcado como referencias a un documento externo con restricciones de marcado. La suma de estos dos conjuntos de restricciones es la definicin de tipo de documento. Un DTD define la forma en la que se debe construir un documento XML. Un documento se considerar vlido cuando siga las restricciones que impone el DTD para dar formato a los datos XML. Esto es particularmente importante al intentar transferir datos entre aplicaciones, ya que para que sistemas diferentes logren entenderse, debe haber un acuerdo en el formato y la sintaxis.
Java y XSLT
Java y XSLT
Java y XSLT
Snchez y Vicente
8.3.- XPath
El objetivo fundamental consiste en definir un mecanismo para tratar todas las partes de un documento XML, lo cual significa que se utiliza para colocar nodos de elementos, nodos de atributos, nodos de texto y cualquier otra cosa que pueda aparecer en un documento XML. XPath trata estos nodos como parte de una estructura en rbol en lugar de tratar el XML como una cadena de texto. Adems XPath contiene un conjunto de funciones para formatear texto, convertir cifras y tratar con los bolanos. XSLT utiliza XPath para seleccionar y buscar correspondencias con los modelos en los datos XML originales(<xsl: template>, <xsl: apply-templates>); con el fin de soportar procesos condicionales; para generar texto. XPath define siete tipos diferentes de nodos: raz del documento, elementos, texto, instrucciones de proceso, comentarios, que representan espacios de nombre. Siempre que XSLT utiliza XPath se considera un elemento de los datos XML como el nodo de contexto actual. Un eje representa una relacin con el nodo de contexto actual. Existen varios tipos de ejes, algunos de los mas importantes son:
Java y XSLT
Java y XSLT
Ancestor: el padre del nodo de contexto, su padre, y as sucesivamente hasta llegar al nodo raz. Ancestro-or-self: lo mismo que ancestro con el aadido del nodo de contexto. Nodo raz siempre incluido. Attribute: los atributos pertenecientes al nodo de contexto. Abreviatura: @. Child: hijos inmediatos del nodo de contexto. Abreviatura: (espacio en blanco). Descendant: todos los hijos, nietos, etctera. Los nodos de atributos y de espacios de nombre se consideran descendientes de los nodos de elementos. Abreviatura: //. Descendant-or-self: igual que descendant con el aadido del nodo de contexto. Following: todos aquellos nodos del documento que aparecen despus del nodo de contexto. Los descendientes del nodo de contexto no estn incluidos. Following-silbing: todos aquellos nodos siguientes del documento que tengan el mismo padre que el nodo de contexto. Namespace: los nodos del namespace pertenecientes al nodo de contexto. Parent: padre inmediato del nodo de contexto. Abreviatura: ... Preceding: todos los nodos del documento que aparecen antes que el nodo de contexto, a excepcin de los ascendientes, los nodos de atributos y los nodos del namespace. Preceding-sibling: todos los nodos del documento que aparecen antes del nodo de contexto y tienen el mismo padre. Este eje se encuentra vaco si el nodo de contexto es un nodo de atributo o bien un nodo de namespace. Self: el propio nodo de contexto. Abreviatura: ..
select=child::team/>
Java y XSLT
Snchez y Vicente
<?xml-stylesheet type=text/xsl?> <presidents> <president> <term from =1789 to=1797> <name> <first>George</first> <last>Washington</last> </name> <party>Federalist</party> <vicePresident> <name> <first>John</first> <last>Adams</last> </name> </vicePresident> </president> <president> <term from =1797 to=1801> <name> <first>John</first> <last>Adams</last> </name> <party>Federalist</party> <vicePresident> <name> <first>Thomas</first> <last>Jefferson</last> </name> </vicePresident> </president> <!--*********Omitimos el resto de presidentes********-- > </presidents> Presidentes.xslt
<?xml version=1.0 enconding=UTF-8?> <xsl:stylesheet version=1.0 xmnlns:xsl=http://www.w3.org/1999/XSL/Transform> <xsl: output method=html /> <xsl:template math=/> <html> <body> <h1> XPath Examples </h1>
EL tercer presidente fue:
Java y XSLT
Java y XSLT
<ul> <xsl:apply-templates select=presidents/president[count(vicePresident)=0]/name/> </ul> Presidents elected before 1800 were: <ul> <xsl:apply-templates select=presidents/president[term/@from @lt; 1800]/name/> </ul>
Presidentes con ms de un vicepresidente fueron:
<ul> <xsl:apply-templates select=presidents/president[(term/@from > 1800) and (term/@from < < 1850 )]/name/> </ul> </body> </html> </xsl:template> <xsl:template math=name> <li> <xsl:value-of select=first/> <xsl:text> </xsl:text> <xsl:value-of select=middle/> <xsl:text> </xsl:text> <xsl:value-of select=last/> </li> </xsl:template> </xsl:stylesheet>
10
Java y XSLT
Snchez y Vicente
Para guiar de forma explcita el proceso de seleccin se hace con un elemento <xsl:for-each>; con esta tcnica se crea explcitamente un bucle para una coleccin de nodos sin crear una instancia de una plantilla aparte como ocurra con la otra tcnica. La sintis es la siguiente: <xsl:for-each select= > ..... </xsl:for-each> El atributo select puede contener cualquier ruta XPath y el bucle reunir a cada elemento del conjunto de nodos resultante. Se puede aplicar la clasificacin en cualquier tcnica guiada por datos o guiada por plantillas. En cualquier caso se aade <xsl:sort> como elemento hijo a otro elemento. Al aadir varios elementos <xsl:sort> consecutivos, podemos realizar una clasificacin de diversos campos. Cada clasificacin puede realizarse en orden ascendente(predefinido) o descendente y el tipo de datos que se va a clasificar ser number o text. <xsl:sort select= order= data-type= >
8.6.- <XSL:IF>
Es una forma de procesamiento condicional, esto permite que una hoja de estilo produzca diferentes salidas dependiendo de los resultados de una expresin lgica, que ser verdadera o falsa segn defina la especificacin XPath. Sintaxis: <xsl:if test=expresin booleana> <!Plantilla -- > </xsl:if> Es necesario el atributo test y habr de contener una expresin booleana. Si el resultado es verdadero, se crea una instancia del contenido de dicho elemento; si no es as, se omite.
Java y XSLT
11
Java y XSLT
En XSLT, los elementos <xsl:when> se evalan en el orden en el que aparecen y se evala primero el que tenga una expresin de prueba cuyo resultado sea verdadero. Si no hay ningn elemento <xsl:when> que corresponda, se evala <xsl:otherwise>, si est presente. Una diferencia entre la tcnica XSLT y una tcnica Java pura es que XSLT no necesita sentencias break entre elementos <xsl:when>.
Para usar una variable, hay que hacer referencia al nombre de la variable con un carcter $ . Ejemplo: <xsl:variable name=lastPresident select=president[position()=last()]/name/> <xsl:value-of select=lastPresident/> La principal limitacin de las variables es que no se pueden modificar .
8.9.- <XSL:TEMPLATE>
Clasificamos las variaciones posibles del elemento <xsl:template> por medio de los atributos: Match: especifica el nodo en los datos XML al que se aplica una plantilla. Name: define un nombre arbitrario para una plantilla, independiente de los datos especficos de XML. Mode: permite que varias versiones de una plantilla correspondan al mismo modelo. Una plantilla puede mostrar datos de un modo complejo, mientras otra muestra los mismos datos de un modo abreviado.
12
Java y XSLT
Snchez y Vicente
Ejemplos de la sintaxis de plantillas habitual: <xsl:template match=president> ... </xsl:template> Corresponde a los nodos presidente del documento fuente XML. <xsl:template name=formatName> <xsl:param name=style/> ... </xsl:remplate> Define una plantilla denominada; utilizada en combinacin de <xsl:call-template> y <xsl:with-param>. <xsl:template match=customer mode=myModeName> ... </xsl:template> Corresponde a los nodos customer cuando <xsl:appy-templates> utiliza tambin mode=myModeName.
Java y XSLT
13
Java y XSLT
CIFRAS Ofrece la funcin format-number() para convertir nmeros como 123 en cifras con formato como $123.00. La funcin adopta la siguiente forma: string format-number(number, string, string?) El primer parmetro es el nmero al que vamos a dar formato, el segundo es la cadena de formato y el tercero (opcional) constituye el nombre de un elemento <xsl:decimal-format>. TEXTO La especificacin XPath define varias funciones de formato de texto, que permiten que el cdigo de una hoja de estilo XSLT realice operaciones como concatenar dos o ms cadenas, extraer una subcadena y calcular la longitud de una cadena. La sintaxis de algunas de estas funciones es: String concat(string, string,string*) Number string-lengh(string?) Boolean contains (string, string)
14
Java y XSLT
Snchez y Vicente
Servlet puro Ventajas Mximo rendimiento en tiempo de ejecucin. Desventajas Los cambios de HTML requieren cambios en el cdigo Java. Es difcil para mantener pginas complejas . No existe separacin de los datos, la lgica y la presentacin. JSP puro Ventajas Mejora para pginas que, principalmente, slo hay que mostrar, HTML esttico con pequeas cantidades de contenido dinmico. Rpido rendimiento en tiempo de ejecucin. Desventajas No separa el cdigo Java y HTML. No es adecuado para la validacin de solicitudes entrantes. Requiere el despliegue en un servidor web para el desarrollo y las pruebas. Hbrido Servlet/JSP Ventajas Permite una mayor separacin entre el cdigo Java y el HTML que el servlet puro o las tcnicas JSP. Resulta ms sencillo mantener un diseo modular para proyectos amplios. Rpido rendimiento en tiempo de ejecucin. Desventajas Requiere todava el despliegue en el servidor web para realizar pruebas y para el desarrollo. No obliga a los programadores a mantener el cdigo fuera de los JSP. No puede dirigirse a varios tipos de dispositivos cliente como XSLT. XSLT Ventajas Mxima separacin entre los datos, la lgica de programacin y la presentacin. Se pueden desarrollar y probar XML y XSLT fuera del servidor web. La capacidad de divisin en mdulos mxima mejora la capacidad de mantenimiento. Resulta fcil dirigirse a varios dispositivos cliente y lenguajes a travs de hojas de estilo XSLT diferentes. Desventajas Tiene el rendimiento ms bajo en tiempo de ejecucin. En el caso de pginas que son sobre todo HTML esttico, XSLT podra resultar ms difcil de escribir que JSP. Requiere de un paso extra para generar XML.
Java y XSLT
15
Java y XSLT
Para empezar, vamos a tratar de presentar una hoja XML de lo ms simple (tienda0.xml): <?xml version="1.0" encoding='ISO-8859-1'?> <?xml-stylesheet href="tienda0.xsl" type="text/xsl"?> <tienda> <nombre>Tienda Virtual </nombre> <telefono>923 20 20 20 </telefono> </tienda> Este ejemplo lo iremos extendiendo hasta que contenga un catlogo de una tienda virtual. Por lo pronto incluimos solamente datos bsicos sobre la tienda. Para convertirlo en HTML, usaremos la siguiente hoja de estilo (tienda-html.xsl): 1 <?xml version="1.0" encoding="UTF-8"?> 2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 3 <xsl:template match='/'> 4 <html> 5 <head> 7 <title>Generado con tienda-html.xsl</title> 8 </head> 9 <body> 10 <h1> <xsl:apply-templates /> </h1> 11 </body> 12 </html> 13 </xsl:template> 14 </xsl:stylesheet>
16
Java y XSLT
Snchez y Vicente
La primera sentencia que se d en cualquier documento XML es una instruccin XML. Especifica que se est utilizando la versin XML 1.0 y el tipo de codificacin (ISO8859-1). En la segunda lnea se asocia la hoja de estilo XSLT (tienda-html.xsl) al documento. El cdigo XML contiene una etiqueta, <tienda>, con otras dos etiquetas dentro, <nombre> y <telefono>, que contienen el texto que queremos que aparezca en la pgina web.
tienda-html.xsl
La primera hoja de estilo con la que nos enfrentamos es relativamente simple. El "esqueleto" es un documento HTML normal, al cual tenemos que aadir "contenido dinmico", es decir, contenido generado a partir del XML original. El XML original, como se ve, es simplemente XML bien formado, no usa un DTD ni lo necesita: basta con que haya una etiqueta raz (<tienda>, en nuestro caso), las etiquetas estn emparejadas correctamente y los atributos entre comillas. Diferentes documentos XML podran ser procesados con la misma hoja de estilo, y daran diferente resultado. Para hacernos una idea, en este caso simple, una hoja XSLT es como una plantilla sobre la que se cambian los contenidos por sus valores al aplicarla. Para empezar, se incluyen una serie de instrucciones, de la lnea 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 codificacin (ISO-8859-1) y la segunda es la etiqueta raz de la hoja de estilo, cerrada en la ltima lnea (14). Recordemos que una hoja de estilo XSL es tambin un documento XML y por tanto tiene que seguir todas sus convenciones. Se declara la versin de XSLT que se est usando (1.0) y el espacio de nombre (namespace) que vamos a usar, es decir, el prefijo que usarn todas las instrucciones propias de XSLT. En este caso usamos xsl, pero cambiando esta instruccin podramos 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 lnea 3, y, en este caso, el template que corresponde a la etiqueta raz genera un esqueleto de pgina HTML. La orden en la lnea 10 cede el control a los otros templates, es decir, trata de aplicar todos los dems templates que haya en el documento, incluyendo el resultado de aplicarlos precisamente en ese punto (entre las etiquetas <h1>). En este caso no hay ms 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, lo que hemos hecho es decirle dnde tiene que incluir en el esqueleto los valores del documento original. La orden <xsl:apply-templates /> podra haberse sustituido, en este caso, por <xsl:value-of select='tienda' /> y habra tenido exactamente el mismo efecto: incluir el contenido de la etiqueta tienda (y todas las que descienden de ella).
Java y XSLT
17
Java y XSLT
Veamos un documento XML algo ms complicado: vamos a tratar de procesar documentos XML que describen diferentes artculos de una tienda. Una tienda virtual est formada por diferentes productos, que a su vez tienen una serie de caractersticas: cdigo de producto, tipo de artculo, seccin. Una tienda virtual se describira en un fichero como el siguiente (tienda1.xml): <?xml version="1.0" encoding='ISO-8859-1'?> <?xml-stylesheet href="tienda0.xsl" type="text/xsl"?> <tienda> <nombre>Tienda Virtual </nombre> <telefono>923 20 20 20 </telefono> <producto> <codigo>92 </codigo> <cantidad>10 </cantidad> <articulo>Radio-Cassete </articulo> </producto> <producto> <codigo>103 </codigo> <cantidad>50 </cantidad> <articulo>Reloj Cocina </articulo> </producto> <producto> <codigo>1312 </codigo> <cantidad>3 </cantidad> <articulo>Sof </articulo> </producto> </tienda> Este se transforma con la siguiente hoja XSLT (tienda1-html.xsl): 1 <?xml version="1.0" encoding='ISO-8859-1'?> 2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 3 <xsl:template match='/'> 4 <html> 5 <xsl:apply-templates /> 6 </html> 7 </xsl:template> 8 <xsl:template match='tienda'> 9 <head> 10 <title> 11 <xsl:value-of select='nombre' /> 12 Generado por tienda1-html.xsl 13 </title> 14 </head> 15 <body> 16 <h1> <xsl:value-of select='nombre' /> </h1> 17 <h2>Telfono: <xsl:value-of select='telefono' /> </h2> 18 <h2>Nuestros mejores productos </h2> 19 <table> 20 <tr> 21 <th>Cdigo</th> 22 <th>Existencias</th>
18
Java y XSLT
Snchez y Vicente
25 26 27 28 29 30 31 32 33 33 34
<th>Artculo</th> </tr> <xsl:apply-templates select='producto' /> </table> </body> </xsl:template> <xsl:template match='producto'> <tr><xsl:apply-templates /></tr> </xsl:template> <xsl:template match='codigo|cantidad|articulo'> <td><xsl:apply-templates /></td> </xsl:template> </xsl:stylesheet>
23 24
Java y XSLT
19
Java y XSLT
Esta hoja se compone de cuatro templates diferentes, mientras que la anterior tena solamente uno. Cada uno de ellos trata elementos de diferente profundidad dentro del rbol del documento XML: el primer template tratara la raz, el segundo las ramas que descienden de l, y el tercer y cuarto ramas progresivamente ms bajas. Por eso el primer template (lnea 3) simplemente incluye el cdigo de apertura y cierre del documento HTML, y cede control al siguiente template (lnea 8), que trata la primera etiqueta , <tienda>, tal como aparece en el atributo match. En este template se incluyen dentro del patrn en HTML el nombre y al telfono, usando xsl:value-of, que simplemente incluye el contenido del elemento correspondiente, crea el esqueleto de una tabla en HTML con su cabecera, y cede control al siguiente template (lnea 29), que se encargar de cada uno de los productos. Para que se procesen slo las etiquetas de este tipo que desciendan de tienda, y no las otras, que ya estn incluidas en la salida, se usa el atributo select. Con xsl:applytemplates select='producto' se aplicarn slo los templates que correspondan a este elemento. Ese template (lnea 29) crea el esqueleto de una fila, cediendo el control a los templates que traten con los descendientes. Hay un slo template que lo hace, el que comienza en la lnea 32; en vez de procesar un slo tipo de elemento, procesa tres, y para ello usamos | para indicar que puede procesar cualquiera de ellos, incluyndolos dentro de un demarcador de celda de tabla en HTML El orden en el que se incluyen los elementos en la salida es el mismo en el que se encuentran en la entrada, es lo que se denomina orden de documento. Este orden se puede alterar usando etiquetas value-of adecuadamente.
11.- CONCLUSION
A lo largo de este informe se ha explicado cul es la filosofa de la tcnica XSLT. Bsicamente se trata de transformar un documento en formato XML a otro formato, principalmente HTML. Esta tcnica se basa en el paradigma MVC (Modelo-Vista-Controlador), ya que XML si separa entre modelo y vista, mientras que en HTML no se produce tal separacin ya que su principal funcin es la utilizacin de este lenguaje slo en el ltimo instante de presentacin. Java tambin tiene su influencia en toda esta situacin; ya que este lenguaje se utiliza para la lgica empresarial, las consultas y las utilizaciones de la base de datos y para crear el XML. Ya que en el servidor se utilizan los datos en bruto (XML), y slo cuando se requiere de una informacin por parte de un cliente se produce una transformacin en el servidor, XSLT transforma el XML en HTML para que el buscador lo vea en ese formato. En resumen, la ventaja de toda esta tcnica es la gran separacin que se produce entre los datos XML y las distintas vistas HTML, y que estas transformaciones resultan de gran simplicidad gracias a XSLT.
12.- REFERENCIAS
XML:
o o o
XML.com: http://www.xml.com Guidelines for using XML for Electronic Data Interchange: http://www.geocities.com/WallStreet/Floor/5815/guide.htm Soporte XML en IE5.0: http://www.xml.com/xml/pub/1999/03/ie5/first-x.html
20
Java y XSLT
Snchez y Vicente
XML: http://www.harvardcomputing.com/Resources/Reports/XML/xml.html XML.COM - What's the Big Deal With XSL?: http://www.xml.com/xml/pub/1999/04/holman/xsl.html Extensible Markup Language (XML): http://www.w3.org/XML/ IBM alphaWorks: http://www.alphaworks.ibm.com/ Cafe con Leche XML News, and Resources: http://metalab.unc.edu/xml/ SUN: http://java.sun.com/xml/ Webreference:http://www.webreference.com/authoring/languages/xml/ DataChannel XML Resources, XML = Revolution: http://www.datachannel.com/xml_resources/ POET XML Resource Library: http://www.poet.com/xml/xml_lib.html XSLT Programmer's Reference, 2nd edition, por Michael Kay: http://www.amazon.com/exec/obidos/ASIN/1861005067/perltutobyjjmere/1033957727-4663029 Transformaciones XSLT: http://www.ibiblio.org/xml/books/bible2/chapters/ch17.html IBM XML Web Site, Education - XML Tutorials for Programmers: http://www.software.ibm.com/xml/education/tutorial-prog/overview.html DEVELOPERLIFE.COM brought to you by The Bean Factory: http://developerlife.com/xmljavatutorial1/default.htm Introduction to XML (Webmonkey): http://metalab.unc.edu/xml/books/xml/examples/ Examples from XML: Extensible Markup Language: http://metalab.unc.edu/xml/books/xml/examples/ Heart of Darkness: http://home.sprynet.com/~dmeggins/texts/darkness/index.html IBM: http://www.software.ibm.com/xml/ Xalan: http://xml.apache.org
XSLT:
o
Tutoriales:
o o o
Ejemplos:
o o
Software:
o o o
Saxon: http://saxon.sourceforge.net/
IBM | alphaWorks: http://www.alphaWorks.ibm.com/discussion
Ayudas/Foros:
o
Java y XSLT
21
Java y XSLT
13.- BIBLIOGRAFIA
Hiroshi Maruyama y otros. XML and Java. Second Edition. Developing Web Applications. Addison-Wesley. Sitio web: http://www.aw.com/cseng Brett McLaughlin. Java y XML. ANAYA. Eric M. Burke. Java y XSLT. ANAYA.
22
Java y XSLT