Introducción a XML

Antes de empezar, lee algo sobre los orígenes de XML. Puedes consultar en www.desarrolloweb.com.

¿Qué es XML?

XML saca factor común, es decir, generaliza tecnologías anteriores, como html. En html, datos y representación están indisolublemente unidos. Esto está muy bien para la comunicación entre personas, pero no es eficiente para la comunicación entre programas. Un primer intento de separar representación y contenido en html, son las hojas de estilo. Pero la separación sigue siendo parcial, ya que la información sigue en la página html (un lenguaje expresamente diseñado para la representación), y además CSS define patrones aplicados mediante etiquetas HTML. Es decir, se trata de una separación conceptual, no factual.

En cambio, XML se separa de la representación y se centra en la información, en el contenido. Esto tiene muchas ventajas. Una de ellas es la posibilidad de emplear XML como un lenguaje limpio que describe información de forma precisa, sin interferencias con su representación final. Luego puede ser transformado a diferentes formatos de representación según el destino de la información: html (páginas web), odt (documentos de texto), pdf (gráficos vectoriales), svg (gráficos vectoriales)...

XML es un metalenguaje de marcas, es decir, permite que el usuario diseñe sus propias marcas (tags) y les dé el significado que se le antoje, con tal de que siga un modelo coherente. La primera gran ventaja de XML es el hecho de que los datos se auto-definen a si mismos y esa definición pueden encontrase en la propia página XML (o en otra separada a la que se hace referencia), suministrando así a cualquier programa que abra ese fichero la información necesaria para el manejo de su contenido.

Citando textualmente el libro Beginning XML:

"It is important to realize that XML is not really a "language" at all, but a standard for creating languages that meet the XML criteria. In other words, XML describes a syntax that you use to create your own languages".

Lo que en español quiere decir:

"Es importante comprender que XML no es realmente un "lenguage" en sí, sino un estándar para crear lenguajes que siguen las normas XML. En otras palabras, XML describe una sintaxis que usaremos para nuestros propios lenguajes".

Fichero XML correctamente escrito.

un fichero XML correctamente escrito requiere dos cualidades que establecen su grado de conformidad con las reglas establecidas:

  • Fichero XML bien formado (well formed) es aquel que se ha escrito de acuerdo con el estándar XML.
  • Fichero XML válido es aquel que cumpliendo con la definición del estándar, está además lógicamente bien estructurado y define en su totalidad cada uno de sus contenidos sin ambigüedad alguna.

Texto plano

El formato de los documentos XML es el texto plano, por lo que permite su transporte y lectura bajo cualquier plata forma o herramienta y le da un valor de universalidad que no se puede conseguir con ningún formato nativo, por mucha aceptación que tenga.

Empezando con XML

Supongamos que tenemos datos sobre un nombre, y queremos compartir dicha información con otros, y también usar dicha información en un programa. En vez de usar sencillamente un fichero de texto como este:

José Pérez

o un fichero HTML como este

<html> <head><title>Nombre</title></head> <body> <p>José Pérez</p> </body> </html>

podríamos crear un fichero XML como el siguiente:

<persona> <nombre>José</nombre> <apellido>Pérez</apellido> </persona>

Incluso con este ejemplo sencillo, se puede entender por qué el lenguaje XML se denomina "autodescriptivo".

XML provoca un aumento del tamaño del fichero respecto al fichero de texto plano (sin formato ni etiquetas, de forma que sea la aplicación destino la que conozca la ubicación de cada dato y su significado). Pero por otro lado añade una simplicidad a su escritura, comprensión y procesamiento que compensa este inconveniente. De hecho, en el mundo de Internet, triunfa la sencillez sobre la eficiencia.

En caso de que el ancho de banda sea un problema, un fichero XML se puede comprimir en origen y descomprimir en el destino.

Práctica 1. Escribe el fichero anterior en un editor de texto, y guárdalo con la extensión xml. Luego ábrelo con un navegador web como Internet Explorer o Firefox.

Aunque el fichero xml no tiene información sobre el aspecto, el navegador le da cierto formato para mejorar su visualización. Además, la etiqueta nombre es replegable, como en las carpetas del sistema de ficheros. Esta característica puede ser muy útil si trabajamos con ficheros XML grandes y necesitamos concentrarnos en cierto detalle.

¿Extensible?

XML incluye la palabra extensible. Como ya hemos visto, podemos añadir a un vocabulario las etiquetas que necesitemos para un cierto propósito. HTML no es extensible, ya que si necesitamos agregar la etiqueta no podremos. Pero en XML sí que podemos.

XML es tan adaptable, se han creado numerosos proyectos para introducir vocabularios estándares industriales para describir diferentes tipos de datos. Por ejemplo, SVG (Gráficos Vectoriales Escalables), MathML (vocabulario para descripción de fórmulas matemáticas para comunicación entre máquinas), CML (vocabulario para la industria química), y muchos más (entre los que se encuentra incluso un vocabulario para la industria funeraria).

Jerarquías de información

XML agrupa información en jerarquías. Los elementos en los documentos XML se relacionan entre sí en relaciones padres/hijos y hermanos/hermanos. En el ejemplo anterior, podemos intuir un árbol de jerarquías, de modo que "persona" es padre de "nombre" y de "apellido". Por otro lado, "nombre" y "apellido" son hermanos entre sí.

  • persona
    • nombre
    • apellido

Los elementos pueden contener tanto texto como otros elementos. El elemento persona contiene solo otros elementos (es un contenedor de elementos). Los elementos nombre y apellido contienen texto (son contenedores simples). En cualquier caso, un elemento puede tener un contenido mixto.

Práctica 2. Observa el ejemplo siguiente:

<doc> <padre> este es algún <enfasis> texto </enfasis> en un <negrita> elemento </negrita> </padre> </doc>

Define las relaciones de paternidad y hermandad entre los elementos. Presenta mediante una estructura arbórea (basta con saltos de línea y sangrías) la jerarquía de elementos.

Componentes de XML

Estructurar la información es un tema muy amplio para cubrirlo con una especificación. Por ello hay un gran número de especificaciones y recomendaciones que conforman la familia de tecnologías XML. Algunas de las recomendaciones más importantes son las siguientes:

XML 1.0. Recomendación base de XML en la que se fundamentan el resto de tecnologías. Describe la sintaxis que deben seguir los documentos XML, las reglas que los analizadores sintácticos deben seguir, y cualquier otra cosa que se necesite para saber leer o escribir un documento XML.

DTD y esquemas. Permiten describir la estructura de un lenguaje definido con XML. Gracias a ellos se puede comprobar si un documento sigue las reglas establecidas para un cierto lenguaje; son comparables a la sintaxis gramatical y la ortografía en los lenguajes humanos.

Según la RAE, la sintaxis es el "conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación", y la ortografía es el "conjunto de normas que regulan la escritura de una lengua".

Espacios de nombre (namespaces). Permiten distinguir entre vocabularios aunque algunos de sus términos sean similares. Por ejemplo, la palabra banco, puede significar cosas distintas si utilizamos un vocabulario financiero o si utilizamos un vocabulario de mobiliario urbano. Los espacios de nombres eliminan las ambigüedades.

XPath. Describe un lenguaje de consulta para localizar partes de un documento XML. Permite a las aplicaciones preguntar por una parte específica de un documento XML, en vez de tener que vérselas con todo el documento.

XSL es la familia de recomendaciones para transformar los documentos XML de un tipo a otro.

XHTML. Es la recomendación para crear páginas web derivada de XML. A diferencia de HTML tiene una sintaxis más estricta, y puede ser analizado sintáticamente.

RDF Site Summary (RSS). Es usado por sitios web que desean sindicar nuevos artículos.

SVG. Especificación para describir gráficos vectoriales bidimensionales.

¿Donde puede ser usado XML?

Reducir carga de un servidor: En vez de estar recogiendo datos constantemente en el servidor desde el lado del cliente, se permanece todo el tiempo posible en el lado del cliente, generando progresivamente un fichero XML con los datos del usuario, y cuando éste termina, se envía al servidor un gran fichero XML con todos los datos del usuario.

Simplicar los mecanismos para generar diferentes tipos de presentación de cierta información. Por ejemplo, la información de un catálogo en un sitio web, puede ser facilitada instantáneamente en pdf, html, odt, xls, etc.

Usar XML para todo el contenido, donde se hacía tradicionalmente con HTML. Después puede ser mostrado mediante CSS o transformado mediante XSLT para generar diferentes versiones según el navegador.

En computación distribuida una máquina hace referencia a los objetos en otra máquina. HTTP junto con XML permite realizar este tipo de llamadas con tecnologías como SOAP.

Además de esto, XML se puede usar en muchos otros ámbitos.

Práctica 3. Modifica el documento XML anterior para incluir un título de cortesía (ej. Sr., Sra., Sta., Dr. etc).

Práctica 4. Crea un pequeño documento XML donde definas cierta información sobre animales o sobre plantas.

Saludos.