tema conversión y adaptación de documentos xml

Upload: guillermo-fernandez-bol

Post on 14-Jul-2015

568 views

Category:

Documents


2 download

TRANSCRIPT

La tecnologa XML permite separar de manera efectiva los datos a almacenar, la estructura o semntica en la que se organizan y la presentacin de los mismos. Aunque podemos visualizar un fichero XML con un simple editor de texto, no es la manera ms amigable ni profesional para presentar los datos que estn almacenados en su interior. Es ah donde debemos utilizar alguna herramienta que nos permita convertir y transformar los datos en el formato que deseemos. Esa herramienta se llama XSL (Extensible Stylesheet Language) XSL es a XML, lo que las hojas de estilo en cascada (CSS) a HTML (Aunque ya hemos visto tambin que se pueden aplicar hojas CSS a los documentos XML). XSL permite tomar pleno controlo sobre los datos, pudiendo establecerse criterios como qu datos ver, en qu orden visualizarlos, estableciendo filtros y definiendo formatos de salida para su representacin. Es, por tanto, una herramienta de procesado muy potente que hay que conocer en profundidad Para entrar dentro del contexto de la conversin y transformacin de ficheros XML, se define el siguiente ejemplo con cdigo XML que permitir almacenar un conjunto de libros en una librera: El Asedio Arturo Prez Reverte 978-84-9964-108-93 23.08 IT Stephen King 978-84-9964-108-94 20.06 El Padrino Mario Puzo 978-84-9964-108-95 20.06 Puede verse claramente que la librera puede contener un conjunto de libros. Cada libro tiene una serie de atributos propios como puede ser el ttulo, autores o ISBN. En el ejemplo anterior se ha almacenado

un libro y se quiere visualizarlo de una manera ms amigable. Se podra definir una XSL como la siguiente:

Mi Biblioteca Ttulo Autor

version="1.0"

Esta hoja de estilo XSL define que por cada libro almacenado en la librera, se aade una entrada en una tabla HTML con los valores del ttulo y el nombre del autor. El resultado de vincular al XML una hoja de estilo XSL permite obtener u resultado como el siguiente:

ste es un pequeo ejemplo de conversin. En principio se puede transformar un documento XML a otro XML o cualquier otro distinto que pueda ser reconocido por un navegador web (HTML o XHTML) Si se quiere utilizar correctamente esta tecnologa de representacin de documentos XML se deben seguir los siguientes pasos:

1. Tener bien definido el documento XML 2. Crear una hoja de estilo XSL bien formada 3. Vincular al documento XML la hoja de estilo XSL. Los dos primeros puntos se asumen cumplidos al estar determinados por los DTDs o esquema definidos anteriormente. Adems se indica sobre qu espacio de nombres se trabja por lo que es fcil cumplir las dos condiciones iniciales. Para vincular en un documento XML una hoja de estilo XSL cualquiera, por ejemplo Librera.xsl hay que aadir al fichero XML lo siguiente: , Debajo de la instruccin inicial de procesamiento Cumplidos los pasos anteriores, el procesador de documentos XSL comienza a recorrer el rbol del documento XML. Se inicia por el nodo raz y se ir recorriendo todo el rbol haciendo que cada parte del documento XML pueda tener un formato especfico(rbol de resultados). Pero, cmo determinar qu formatos tendrn cada una de las partes del documento? La respuesta a la pregunta es la definicin de plantillas en la hoja de estilos. Una plantilla es un patrn que cuando se cumple puede generar resultados de formatos en el rbol final. Es decir, con un documento de origen que se recorre por completo buscando concordancias con las plantillas definidas, de manera que si se cumple alguna, se aplica el formato definido y se genera en el rbol del documento final. Actividad 1. Insertar varios libros ms en el fichero XML indicado cuyo coste sea inferior a 10,50 . 2. Insertar el dato nmero de paginas en cada libro contenido en el fichero XML inicial. Por ejemplo ser 150 3. Cambiar el ttulo de la tabla a Mi Biblioteca personal 4. Cambiar el color de la tabla en el fichero XSL 5. Aadir una columna ms al final en la que se muestre el precio del libro. 6. Aadir una columna ms al principio en la que se muestre el ISBN

TRANSFORMACIN DE DOCUMENTOS (XSL) XSL es un lenguaje que nos permite definir un conjunto de reglas que, aplicados sobre un documento XML, permite transformarlo en un resultado formateado ms adecuado a nuestros intereses. Para ello,

se necesita almacenar esas reglas dentro de un fichero llamado hoja de estilo XSL. El fichero que almacena la hoja de estilo XSL como fichero XML que es, debe estar bien formado. Usando el ejemplo anterior de los libros, se puede ver que el fichero XSL posee una declaracin inicial que determina su contenido como XML y su codificacin. A continuacin se indica la etiqueta que identifica al fichero XSL y el espacio de nombres en el que se basa. En este caso tenemos dos opciones: version=1.0 version=1.0

Las dos maneras estn soportadas en el estndar establecido en el consorcio W3C y se han elevado a recomendaciones de uso. Se puede observar que, independientemente de la que se utilice, ambas hacen referencia a un espacio de nombres comn en su versin 1.0 La siguiente etiqueta interesante es la permite definir un elemento plantilla dentro del XSL. Todo lo que quede entre las siguientes etiquetas: Ser lo que permitir generar la salida formateada. Cabe destacar que con esta etiqueta se puede indicar sobre qu parte del documento XML se quiere actuar, utilizando el atributo match para ello. En este caso se ha querido actuar sobre la raz del propio documento XML ELEMENTOS BSICOS XSL:FOR-EACH En este momento tenemos en el fichero XML un conjunto de libros bien identificados. Es posible que al usuario final le interese recorrerse todos y cada uno de los libros y extraer los datos para darles un nuevo formato. Eneste caso, la siguiente etiqueta indica que se recorran todo el conjunto de elementos XML que sean libros XSL:VALUE-OF

Finalmente queda extraer el contenido del libro. Para ello, la etiqueta que extrae la informacin de ese elemento XML seleccionado es la siguiente: sta es la manera ms sencilla de realizar un listado complete, formateado y con estilos adecuados, de todos los libros almacenados en la biblioteca. Aunque este ejemplo es muy simple, la potencia de las hojas de estilo XSL no acaba con estos elementos XSL:SORT En este momento, el lector podra indicar que tiene tantos libros almacenados que resultara muy interesante mostrarlos de manera ordenada (Y no tal y como se salvaron en el fichero XML) Si lo que interesa es el ttulo del libro, tras la etiqueta for-each, inclumos esta: El resultado ser:

Si por el contrario, el orden adecuado es por autor, entonces se debera incluir la siguiente:

(Coincide con la anterior porque los ttulos y autores implican la misma ordenacin en estos tres libros concretos) Lo realmente interesante es que se puedan realizar bsqueda con determinados patrones preestablecido. En este caso, parece lgico pensar que en vez de recorrerse todos los elementos, deberamos filtrar por ese patrn (independientemente del orden que establezcamos) Si por ejemplo queremos extraer todos los libros del autor Arturo Prez Reverte, se podra cambiar lo siguiente: .

Si, por el contrario, lo que interesa es realizar una bsqueda con otro operador, como por ejemplo, todos los libros en los que el autor no es Stephen King, ordenado por autor, el cambio sera tan simple como ste: .

ACTIVIDADES

1. Sin ningn patrn de bsqueda establecido, ordenar los resultados por precio. 2. Insertar en el fichero XML que se indicia inicialmente, un nuevo libro cuyo autor sea el mismo a uno ya incluido anteriormente 3. Buscar los libros del autor anterior y comprobar que salen todos sus libros (ordenados por precio) 4. Buscar todos lo libros que nos son del autor anterior. Comprobar que en los resultados faltan sus libros. OPERADORES EN XSL ELEMENTO XSL:IF Hasta este momento, se han visto operadores de igualdad y desigualdad para cambiar el patrn de bsqueda pero no son los nicos que existe. Podran usarse tambin los siguientes: Los operadores lgicos que s epueden utilizar para cambiar el patrn de bsqueda o filtro son los siguientes: - Operador de igualdad (=) - Operador de desigualdad (!=) - Operador menor que: () En ocasiones se necesita mayor potencia a la hora de establecer un patrn de bsqueda. Los operadores lgicos vistos anteriormente son efectivos para filtros simples pero tambin existe la posibilidad de indicar con el elemento , condiciones ms complejas en la evaluacin del fichero XML. La sintaxis de este nuevo elemento es la siguiente: . Imaginemos que queremos mostrar todos aquellos libros cuyo coste sea superior a 12 euros. Para ello, solo modificaremos las siguientes lneas del fichero XSL: .