Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Transformación de documentos XML, Resúmenes de Programación Informática

Transformación de documentos XML. Apuntes

Tipo: Resúmenes

2019/2020

Subido el 21/12/2020

_maanu0120_
_maanu0120_ 🇪🇸

1 documento

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Lenguajes de Marcas y Sistemas de Gestión de la Información
1
Unidad de Trabajo 6
TRANSFORMACIÓN DE DOCUMENTOS XML
Contenido
1 CSS y XML ................................................................................................................................................................. 2
2 XSL .............................................................................................................................................................................. 3
2.1 XPath .................................................................................................................................................................. 4
2.2 XSL-T ................................................................................................................................................................. 7
Ejemplo de transformación XSL-T a XHTML .................................................................................................... 7
Ejemplo de transformación XSL-T a XML .......................................................................................................... 9
Elementos y características de XSL-T................................................................................................................. 10
2.3 XSL-FO ........................................................................................................................................................... 15
3 Herramientas de procesamiento de XML .......................................................................................................... 17
3.1 DOM ................................................................................................................................................................ 17
3.2 SAX .................................................................................................................................................................. 17
Bibliografía ........................................................................................................................................................................ 18
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga Transformación de documentos XML y más Resúmenes en PDF de Programación Informática solo en Docsity!

TRANSFORMACIÓN DE DOCUMENTOS XML

- Unidad de Trabajo
  • 1 CSS y XML ................................................................................................................................................................. Contenido
  • 2 XSL ..............................................................................................................................................................................
    • 2.1 XPath ..................................................................................................................................................................
    • 2.2 XSL-T .................................................................................................................................................................
      • Ejemplo de transformación XSL-T a XHTML....................................................................................................
      • Ejemplo de transformación XSL-T a XML ..........................................................................................................
      • Elementos y características de XSL-T.................................................................................................................
    • 2.3 XSL-FO
  • 3 Herramientas de procesamiento de XML
    • 3.1 DOM................................................................................................................................................................
    • 3.2 SAX
  • Bibliografía

1 CSS y XML

Aunque las hojas de estilo CSS tradicionalmente se asocian con ficheros HTML, también se pueden utilizar

para transformar un fichero XML. En el siguiente ejemplo asociamos un fichero XML con un fichero CSS

externo mediante la instrucción :

The Cook, The Thief, His Wife and Her Lover Peter Greenaway 1989

Wonderland Michael Winterbottom 1999

The Navigators Ken Loach 2001

Este es el fichero CSS:

videos { font-family: Arial, sans-serif; font-size: 12px; }

dvd { display: block; border: thin solid black; margin: 10px; padding: 10px; }

nombre { font-family: Garamond, Times New Roman, serif; font-weight: bold; font-size: 16px; }

director { display: block; }

El funcionamiento normal de XSLT transforma cada elemento XML en otro elemento XML, pero también

puede añadir otros elementos XML a la salida, o bien puede eliminar elementos. Asimismo puede reordenar o

recolocar elementos y hacer comprobaciones y decisiones sobre qué elementos mostrar.

Durante la transformación, XSLT utiliza XPath para referenciar partes del documento que cumplen uno o

más patrones definidos. Cuando encuentra una coincidencia de patrones, XSLT transformará la parte

coincidente del documento origen en el documento destino. Las partes no coincidentes no se transforman.

2.1 XPath

XPath es un estándar del W3C que define un conjunto de reglas para referenciar partes de un documento

XML. No es un lenguaje de consulta, sino una herramienta que permite localizar elementos dentro de la

estructura jerárquica de un documento XML. Algunas de sus características son:

  • Usa notación de rutas para definir elementos XML.
  • Define una librería de funciones.
  • Es un elemento básico de XSL.
  • No está definido en XML.

Partiremos, como ejemplo, del siguiente fichero XML:

Programación básica Notable

Sistemas operativos Excelente

...

La siguiente expresión XPath selecciona el elemento raíz expediente:

/expediente

La siguiente selecciona todos los elementos asignatura del elemento expediente:

/expediente/asignatura

La siguiente selecciona todos los elementos nota de todos los elementos asignatura del elemento

expediente:

/expediente/asignatura/nota

La siguiente no utiliza una ruta absoluta, sino relativa (no se indica la barra de raíz). Selecciona el elemento

matricula, que debe ser hijo del elemento actual:

matricula

Todas estas expresiones se pueden referenciar desde documentos XSLT.

Seleccionar elementos desconocidos

Al igual que ocurre con los sistemas de ficheros, podemos utilizar caracteres comodín (*) para indicar

elementos desconocidos. La siguiente expresión selecciona todos los elementos hijos de todos los elementos

asignatura del elemento expediente:

/expediente/asignatura/*

La siguiente selecciona todos los elementos nombre nietos del elemento expediente independientemente de

cuál sea el elemento padre:

/expediente/*/nombre

En cambio esta selecciona los elementos nombre descendientes de expediente independientemente de cuál sea

su grado de relación (hijo, nieto, bisnieto…):

/expediente//nombre

La siguiente expresión selecciona todos los elementos del documento:

Seleccionar ramas del árbol

Podemos especificar qué partes del árbol de nodos queremos seleccionar usando corchetes ([ ]) en las

expresiones XPath. Podemos, por ejemplo, seleccionar el primer elemento asignatura del elemento

expediente:

/expediente/asignatura[1]

La siguiente expresión selecciona el último elemento asignatura hijo del elemento expediente:

/expediente/asignatura[last()]

La siguiente expresión selecciona todos los elementos asignatura hijos del elemento expediente que

contengan un elemento nota:

/expediente/asignatura[nota]

La siguiente obliga, además, a que el elemento nota tenga un valor determinado:

En contraposición a last(), no existe una función first(). En su lugar hay que usar el marcador 1.

2.2 XSL-T

Como casi todos los estándares del W3C, XSL-T (XSL Transform) es en sí mismo un lenguaje XML y debe

empezar con un elemento raíz. Dicho elemento raíz es del tipo xsl:stylesheet o xsl:transform (ambas

etiquetas son totalmente equivalentes). La forma correcta de uso es:

Esta declaración identifica el espacio de nombres recomendado por el W3C. Si usamos este espacio de

nombres, debemos incluir también el atributo version con el valor 1.0.

De acuerdo con los borradores del estándar, la declaración correcta de una hoja de estilo era:

Dicha declaración está obsoleta, pero es la requerida por el navegador IE-5.

A partir de documentos XML cuyo contenido referenciará mediante expresiones XPath, XSLT permite

generar otros documentos en formato XML, HTML, texto o RTF, entre otros. La transformación también

puede implicar una depuración o bien una reorganización de la información original.

Ejemplo de transformación XSL-T a XHTML

Vamos a transformar, como ejemplo, el siguiente fichero XML a XHTML:

Programacion basica Notable

Sistemas operativos Excelente

...

Este documento XML corresponde a un expediente de un estudiante de una universidad cualquiera. Se trata

de un documento muy simple, pero totalmente válido para nuestras necesidades. El documento XSL para

convertir este documento XML en otro XHTML es el siguiente:

Expediente académico

Expediente académico

Asignatura Nota

Los elementos select están utilizando sintaxis de XPath. Si llamamos al documento XSL expediente.xsl,

podemos vincularlo con nuestro documento XML añadiendo una referencia a la hoja de estilo al principio del

XML, del siguiente modo:

...

Si disponemos de un navegador con soporte XSL (como Mozilla en versiones superiores a la 1.2) para abrir el

documento XML, el navegador utilizará el documento XSL para transformarlo en XHTML, obteniendo la

salida siguiente:

Elementos y características de XSL-T

  • La salida de XPath. xsl:output

El elemento xsl:output indica cuál es el formato de la salida de la transformación: un documento XML,

HTML o de texto (text).

El siguiente ejemplo transforma un documento XML en un documento HTML:

...

  • El elemento xsl:template

Una hoja de estilo de XSL consiste en una serie de plantillas (templates) de transformación. Cada elemento

xsl:template contiene las transformaciones que XSL debe aplicar si el patrón especificado en el elemento

coincide con lo encontrado en el documento XML. Para especificar el elemento XML al que debemos

aplicar el template utilizaremos el atributo match, cuyos posibles valores son expresiones XPath. Podemos

aplicar la plantilla a todo el documento XML, para lo cual podemos especificar match="/".

  • El elemento value-of

El elemento value-of se usa para seleccionar y añadir a la salida el valor del elemento XML seleccionado.

Por ejemplo, si añadimos el siguiente código a nuestro ejemplo anterior:

Expediente académico

Asignatura Nota

Veremos en el resultado que aparece la primera nota del expediente. Esto se debe a que las etiquetas

value-of seleccionan el valor del primer elemento que cumple con el patrón especificado.

  • El elemento xsl:for-each

El elemento xsl:for-each de XSL permite una lectura de valores en bucle. Puede utilizarse para

seleccionar cada uno de los elementos del documento XML que pertenezcan a un conjunto determinado.

Si al ejemplo anterior, donde sólo aparecía la primera nota del expediente, le añadimos un xsl:for-each

que realice el recorrido por todo el expediente de la siguiente forma:

Expediente Académico

Asignatura Nota

Obtendremos ahora un listado de todas las notas de las asignaturas.

  • Ordenación de la información: xsl:sort

Para obtener una salida ordenada, simplemente debemos añadir un elemento xsl:sort al elemento

xsl:for-each en nuestro fichero XSL:

Expediente Académico

En este caso se ha decidido aplicar todas las plantillas de una vez. De haber utilizado el atributo select se

habría especificado con precisión qué plantilla utilizar.

La alternativa a apply-templates es recorrer el árbol del documento mediante instrucciones for-each y

value-of. En este caso el código se hace más largo e inmanejable, crece la indentación y se pierde

modularidad, conformándose un fichero XSL muy similar al documento de salida.

  • Condiciones en XSL

Disponemos de dos elementos XSL que nos permiten implementar condiciones en nuestras

transformaciones. Se trata de xsl:if y xsl:choose.

El elemento xsl:if nos permite aplicar una plantilla sólo en el caso de que la condición especificada se

cumpla (sea cierta). Para especificar las condiciones hemos de utilizar operadores de comparación (mayor,

menor, igual o distinto). El estándar XSL obliga a utilizar entidades de carácter en vez de los caracteres

mayor menor (es decir, > en vez de ">" y < en vez de "<"). Igual se representa como "=" y distinto

como "!=". Un ejemplo de formato de xsl:if es el siguiente:

Sólo aparecerán las notas menores que 5

Nótese que los comentarios en XSL deben ir encerrados en el elemento .

Podemos modificar el código anterior para que sólo muestre las notas sobre 5.

Expediente Académico

Expediente Académico

Asignatura Nota

El elemento xsl:choose (junto con xsl:when y xsl:otherwise), nos permite modelar tests condicionales

múltiples. Esto es, en función de una condición múltiple (con múltiples valores posibles) podemos

obtener resultados diversos. Un ejemplo de formato de xsl:choose es el siguiente:

código (suspendido)

código (normal)

código (excelente)

Modificamos el ejemplo anterior para que las notas inferiores a cinco aparezcan en color rojo.

.rojo {color: red} ...

...

  • Creación de elementos y atributos

Después, gracias al uso de la herramienta FOP convertimos el fichero .fo a .pdf mediante la siguiente

sentencia de línea de comandos:

Fop gastrono.fo gastronopdf.pdf

3 Herramientas de procesamiento de XML

3.1 DOM

Como ya se comentó en la Unidad de Trabajo 4, DOM (Document Object Model – modelo de objetos de

documento) define la jerarquía de objetos de un documento HTML. Profundizando podemos definir DOM

como un interfaz de programación que proporciona un conjunto estándar de objetos para representar

documentos. DOM es independiente de plataformas y lenguajes de programación, y permite a otros

programas actualizar dinámicamente el contenido, estructura y estilo de sus documentos HTML y/o XML.

La especificación "DOM nivel 2" incluyó la manipulación de eventos en el navegador, la de parte del texto y

la interacción con CSS. "DOM nivel 3" añade la validación de documentos y el uso de DTD.

Mediante aplicaciones comerciales, algunas gratuitas, o bien programas creados a tal efecto, se puede procesar

cualquier documento basado en el estándar XML.

3.2 SAX

Obedece a las siglas Simple API –Application Programming Interface– for XML (interfaz de programación de

aplicaciones simple para XML). Originalmente se diseñó para el lenguaje Java, aunque actualmente es

aplicable a otros lenguajes de programación que interactúen con documentos XML. Los parser SAX

interpretan los documentos XML línea a línea (no los cargan completos, por lo que necesitan menos memoria

que DOM), comprueban que el documento esté bien formado y gestionan los espacios de nombres. Es más

rápido que DOM, pero también más difícil de manipular.