La familia de tecnologías XML [tema opcional]

Las secciones anteriores discutían sobre el núcleo de la especificación del XML 1.0, llamado XML Core, El W3C y otras organizaciones continuaron extendiendo la especificación original, definiendo estándares que en conjunto se conocen como la familia de tecnologías XML [Arci02], cuyo estudio sobrepasa los límites de este documento. En los siguientes títulos se citan algunas de las más importantes tecnologías agrupadas en categorías.

Modelaje y validación avanzada

Informalmente, un esquema es un documento que describe otro documento. Por ejemplo, un DTD X es un esquema que describe la estructura de los documentos que son de tipo X. Los DTD son relativamente simples, ampliamente utilizados, flexibles y extensibles, pero tan pronto como se utilizan, se hace claro sus inconvenientes: no permiten asociaciones y restricciones complejas entre los datos, no poseen tipos de datos y no utilizan notación XML, entre muchos otros. Por esto, el grupo de trabajo en XML dio origen a la notación llamada XML Schema, que permite al autor incorporar más restricciones sobre los documentos XML [Walm02].

Además del XML Schema, se han desarrollado otros lenguajes con alto grado de éxito pero que no son oficialmente apoyados por el W3C. Ejemplos son, Schematron y RELAX NG (Regular Language description for XML) [Arci02].

Interfaces de programación

Cuando un sistema planea utilizar tecnología XML, debe implementar un módulo que se encarga de leer o escribir documentos XML. Este módulo no es de fácil desarrollo, más si se quiere que soporte la especificación formal del XML y tecnologías estándar como las descritas en los párrafos anteriores. Además, si cada sistema que requiere XML en el mundo implementara ese módulo, habría trabajo repetitivo considerable y costoso.

El módulo que se encarga de procesar archivos XML debe aislar a la aplicación del usuario de los detalles técnicos del XML. Este módulo comúnmente se denomina XML parser (analizador XML) y existen muchos gratuitos y de código abierto. Si cada uno tuviera su propia interfaz, obligaría al desarrollador a revisar la documentación del parser que vaya a emplear y, si posteriormente quisiera cambiar de parser, tendría que estudiar el nuevo parser y reescribir su programa para adaptarlo. Por esto, un acuerdo mutuo entre programadores de XML ha dado origen a estándares de interfaz entre la aplicación y el parser. Hay dos API (Application Programming Interface) estándar: SAX y DOM.

El Simple API for XML (SAX) especifica los objetos y sus funciones, tanto los que debe implementar el parser como la aplicación, utilizando el modelo de eventos, el cual funciona de la siguiente forma. El parser recorre el documento XML carácter por carácter, identificando elementos, atributos, datos de carácter, referencias de entidad, etc. Cada vez que el parser identifica uno de esos componentes léxicos, actúa como si fuese un evento y realiza un llamado a la aplicación para que lo atienda, pasándole como parámetros los lexemas identificados. SAX es un enfoque bastante rudimentario pero es muy eficiente.

El segundo API estándar es el Document Object Model (DOM) que se basa en el modelo de documento, esto es, el parser recorre el documento XML construyendo una estructura jerárquica compuesta de nodos, los cuales pueden ser elementos, atributos o datos. Cuando se ha terminado de analizar el documento XML, el árbol de objetos nodo estará construido y se pasará como parámetro a la aplicación, la cual podrá utilizarlo para sus propios fines [Gars02].

El lenguaje extensible de hojas de estilo (XSL) [tema opcional]

Un documento XML sólo sirve para representar datos y su estructura. El estándar XML define una familia de lenguajes llamada lenguaje extensible de hojas de estilo (XSL, Extensible Stylesheet Language), que permiten a los autores dar formato a los documentos XML o transformarlos en otros documentos como (X)HTML o PDF (Portable Document Format). XSL se compone de los siguientes tres lenguajes.

  1. XSLT. Es un lenguaje que permite transformar un documento XML en otro documento de texto, como (X)HTML.
  2. XSL-FO. Es un lenguaje para especificar el formateo visual de un documento XML.
  3. XPath. Un lenguaje de consultas para seleccionar partes (nodos) de un documento XML. Es usado principalmente por XSLT.

Transformaciones XSL (XSLT)

Para transformar un documento XML a otro documento de texto, como (X)HTML, CSV (Comma-Separated Values file), texto puro u otro tipo de documento XML; el autor puede escribir una hoja de estilos, que es un conjunto de instrucciones o reglas en notación XSLT (Extensible Stylesheet Language Transformations) que indican cómo se debe transformar cada pieza de información (nodo) presente en el documento XML. Un software llamado Procesador XSLT (XLST Processor) toma estos dos documentos por entrada, aplica las reglas de la hoja de estilos al documento XML y el resultado es el documento transformado. Este proceso se ilustra en la fig_xslt_process.

Proceso de transformación XSLT
Proceso de transformación XSLT

En general el proceso de transformación es como sigue. El procesador XSLT analiza el documento XML y genera un árbol de nodos conocido como DOM (Document Object Model). Luego procesa la hoja de estilos. Cada regla definida en ella afecta a uno o varios nodos del documento. Una regla consta de dos partes: una consulta (query) que sirve para identificar a cuáles nodos debe aplicarse, y una operación que debe efectuarse en esos nodos. La consulta puede asemejarse a otros lenguajes de consulta como SQL (Structured Query Language), pero emplea una notación especial llamada XPath, mencionada anteriormente. La operación consta de texto literal que aparecerá en la salida o de trozos del elemento al que se le está aplicando la regla. La concatenación de todas las salidas constituye el documento transformado que desea el autor.

La forma de invocar al procesador XSLT varía dependiendo de la implementación. Las hay en forma de ejecutables en línea de comandos, como bilbiotecas compartidas (.so, .dll), incorporados en un navegador o una mezcla de ellas. Por ejemplo, libxslt del proyecto GNOME puede usarse como una biblioteca compartida desde cualquier programa, o en línea de comandos como se muestra en el siguiente ejemplo:

xsltproc libro_web.xsl libro.xml > libro.html

La mayoría de navegadores web actuales implementan un procesador XSLT internamente, sin embargo no hay forma de indicarles en un URL la ubicación del documento XML y la hoja de estilos simultáneamente. Pero si el autor indica en el prólogo del documento XML cuál hoja de estilos quiere que se aplique, el navegador hará la trasformación y tratará de desplegar (rendering) el resultado directamente. Un documento XML declara su hoja de estilos con la instrucción de procesamiento xml-stylesheet, como se aprecia en el xsl_stylesheet_processing_instruction.






   

]]>
Contenido de una página web hipotética

[Contenido pendiente]

Formateo de objetos (XSL-FO)

[Contenido pendiente]