Você está na página 1de 3

Convertir XML en una pgina web.

Mediante este ejemplo vamos a iterar por los elementos de un documento XML utilizando las hojas de transformacin XSLT. De esta manera conseguiremos convertir un fichero XML en una pgina web. En el ejemplo lo que haremos ser recorrer los elementos a partir de un punto especificado mediante XPath. Lo primero que vamos a hacer es montar nuestro documento XML, el cual solo contendr la informacin -en este caso libros y autores- y una referencia al archivo que realizar la transformacin. As, nuestra informacin ser algo parecido a lo siguiente: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. <?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> </libro> <libro> <titulo>La Celestina</titulo> <autor>Fernando de Rojas</autor> <isbn>84-96390-96-9</isbn> </libro> <libro> ... </libros>

Y la referencia a nuestro fichero de transformacin: 1. <?xml-stylesheet type="text/xsl" href="iterarelementos.xsl"?>

Hasta aqu sencillo. Ahora veamos qu tenemos que hacer en nuestro fichero de transformacin. Lo primero ser definir el template sobre el que queremos trabajar. En el template hacemos referencia, usando XPath, al elemento sobre el cual nos posicionaremos inicialmente. En nuestro caso nos vamos a posicionar sobre la raz del documento XML. Es por ello que utilizaremos la expresin XPath "/". El elemento XSLT que utilizamos para definir la plantilla es xsl:template. 1. <xsl:template match="/">

2.

</xsl:template>

Ahora definimos el bucle que recorrer los elementos. Para ello utilizamos la etiqueta xsl:foreach. Lo que estamos diciendo sera algo as como "por cada elemento que encuentres del tipo x ves iterando". Dentro de la etiqueta xsl:for-each definiremos las acciones que queremos hacer con todos y cada uno de los elementos. Para especificar el elemento sobre el que se itera, la etiqueta xsl:for-each tiene el atributo select. El cual, tendr como parmetro un valor XPath que indica un elemento del rbol XML. As, la etiqueta xsl:for-each nos quedara de la siguiente forma: 1. 2. <xsl:for-each select="libros/libro"> </xsl:for-each>

En nuestro caso trataremos cada uno de los libros. Por ello, el nodo elegido es "libros/libro". Solo nos quedar realizar las acciones oportunas con cada uno de los libros. Este cdigo, ser el que pongamos dentro de la etiqueta xsl:for-each. Para nuestro ejemplo bastar con recuperar los valores del titulo y el autor. Para ello utilizamos la etiqueta xsl:value-of como vemos a continuacin: 1. 2. <xsl:value-of select="titulo"/><br/> <xsl:value-of select="autor"/>

De una forma sencilla e iterando los elementos de un documento XML hemos conseguido convertir a dicho documento en una pgina web. Los archivos completos son los siguientes: Iterar-elementos-xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="iterar-elementos.xsl"?> <libros> <libro> <titulo>Mis almuerzos con gente inquietante</titulo> <autor>Vazquez Montalban</autor> <isbn>978-84-9899-250-2</isbn> <precio>32</precio> </libro> <libro> <titulo>Imperium</titulo> <autor>Robert Harris</autor> <isbn>978-84-8346-685-8</isbn>

<precio>50</precio> </libro> <libro> <titulo>Fuente Ovejuna</titulo> <autor>Lope de Vega</autor> <isbn>84-9815-002-7</isbn> <precio>38</precio> </libro> <libro> <titulo>La Celestina</titulo> <autor>Fernando de Rojas</autor> <isbn>84-96390-96-9</isbn> </libro> <libro> <titulo>Don Juan Tenorio</titulo> <autor>Jose Zorilla</autor> <isbn>84-96390-97-7</isbn> </libro> </libros>

iterar-elementos.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h1>Mis Libros</h1> <xsl:for-each select="libros/libro"> <p> <strong>Titulo:</strong><xsl:value-of select="titulo"/><br/> <strong>Autor:</strong><xsl:value-of select="autor"/> </p> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>

Você também pode gostar