XML
A pesar de su sencillez aparente, XML está transformando completamente la creación y el uso de software. El Web revolucionó la comunicación entre usuarios y aplicaciones. XML está revolucionando la comunicación entre aplicaciones o, de forma más general, la comunicación entre equipos, pues ofrece un formato de datos universal que permite adaptar o transformar fácilmente la información.
Como veremos a continución, XML es la base de los Servicios Web, así que antes vamos a hacernos una idea clara de qué aspecto tiene la información en lenguaje XML.
XML es la solución a un problema de comunicación entre programas de ordenador. La información generalmente queda fuertemente ligada al programa con que fue creada, y es así como se pierde mucho tiempo en pasar de RTF a PS a PDF a páginas HTML ó a otros formatos de definición de documentos.
Muchos Linuxeros, sobre todo debianitas, saben de un nuevo standard llamado DocBook, que pretende dar solución a este problema. Precisamente, DocBook es un caso particular de XML. DocBook se aplica sobre documentos ... ¿pero si se trata de una imagen o un sonido? XML intenta ser un formato absolutamente genérico, con el que describir CUALQUIER tipo de fichero. Así, por ejemplo SVG 1.0, Scalable Vector Graphics, es un formato basado en XML para representar imágenes vectoriales. DSML 1.0, Directory Services Markup Language, otro formato basado en XML, específico para definir directorios. XHTML 1.0, Extensible HyperText Markup Language, ya os podeis imaginar que es un formato basado en XML para representar páginas web.
Cada día aparecen nuevas propuestas para estadarizar formatos basados en XML. Ya existen muchas herramientas de programación preparadas para trabajar con formatos basados en XML. Es una tendencia y se está consolidando. Los programadores con mentalidad abierta, codifican sus ficheros de datos en "algo" basado en XML. Así si un día necesitan portar sus datos a otras aplicaciones, pueden usar herramientas ya hechas y probadas.
Muy pronto, si no es ya, que una aplicación trabaje con formatos basados en XML será una cualidad tan valorada como que sea GPL.
Queda claro que XML es ya un formato universal, que lo están adoptando multitud de programadores y que puede abarcar cualquier caso de intercambio de información, pero la pregunta que a muchos os habrá surgido es: ¿por qué no intercambiar los datos mediante ficheros de texto plano? Linux lo usa en casi todas las configuraciones de sus programas: httpd.conf, my.cnf, inetd.conf, etc, etc y todos sabemos lo bien que funciona y lo abierto que es ... Efectivamente, pero ¿y si necesitamos transmitir información con estructura? Ahí es donde resulta interesante XML.
Imaginemos el caso de describir una página web con un fichero de texto ... se puede hacer, de hecho se hace constantemente usando HTML, que puede grabarse como un fichero de texto plano. Sin embargo, HTML no podría ser lo que es, sin su lenguaje de marcas. Luego ya no es sólo un texto plano, sino un texto y sus marcas. Las marcas sirven para estructurar la información: separar el título del contenido, por ejemplo.
XML es una generalización de este proceso. En XML se marca TODO. Caulquier información transmitida por un XML está perfectamente estructurada. Para ello se emplea también un lenguaje de marcas. Como XML es un formato universal, y no puede limitarse a saber describir sólo páginas web, por ejemplo, las marcas no son fijas, sino variables según el subformato (esto es lo que luego veremos que se llama DTD).
Un ejemplo sencillo (extraido de Internet: Introducción a XML): una colección de 750 recetas de cocina. ¿Escribirlas todas en KOffice? ¡Qué peligro! ¿Qué pasaría si me dicen que es necesario tenerlas en HTML? ¿O imprimirlas en un libro usando programas específicos y cierto estilo de tipografía para los ingredientes? Entonces es conveniente poner mayor atención al elegir el formato a emplear. ¿Sólo texto? podría ser ... si no incluimos fotos, ni índices, ni tablas, ni ... etc, etc. Es evidente que una receta se divide en partes bien identificadas, así que usar sólo texto sería perder información sobre dónde está cada cosa en el documento.
XML nos dice que podemos estructurar la información en un árbol. Es decir imaginar a la receta como un componente, que a su vez esta formado de componentes, y así sucesivamente. Cada componente podría tener texto y/o más componentes. Una posible estructura sería imaginar que la receta tiene un componente llamado "necesitamos". No todo el texto estaría dentro de "necesitamos", solamente aquellas cosas que el cocinero de la receta necesitaría para llevarla a cabo. Dentro podríamos tener uno o más componentes llamados "ingrediente". Veamos como se ve esto (usando ya la sintaxis de XML).
<receta>
...
<necesitamos>
<ingrediente>2 cucharadas de azucar</ingrediente>
<ingrediente>3 manzanas</ingrediente>
</necesitamos>
...
</receta>
¿Se adivina cuál es la sintaxis de XML? Es simplemente encerrar al texto que pertenece a un componente entre y . Bueno, en realidad ya se ve que estos componentes son "tags".
El XML se completa mediante una "hoja de estilo", que es una descripción de cómo debe verse una información en un determinado medio. A un mismo documento XML se le pueden aplicar distintas hojas de estilo según convenga. Por ejemplo usando una hoja de estilo por cada medio en la que se debe representar la información.
Existen actualmente dos lenguajes de hojas de estilo: CSS (Cascading Style Sheets: que ya está parcialmente implementado en los navegadores de WWW) y XSL (eXtended StyleSheet Language: El W3 Consortium creó este nuevo lenguaje de hojas de estilo)
XML sirve para que muchos programas interpreten bien cualquier tipo de dato. No sólo eso. XML sirve para que algunos programas hablen entre ellos sin intervención humana. ¿Para qué? Computación Distribuida, Interoperatividad, Monitorización, ... son situaciones en las que resulta imprescindible este tipo de comunicación. XML es también la solución en estos casos. Como veremos ya, muy pronto, los Servicios Web son un caso particular de "Computación Distribuida" y XML es su lenguaje base.
Referencias