Introducción
Desde que el W3C aprobó la especificación 1.0 del XML en febrero de 1998, ha sido increible la cantidad de información, aplicaciones y software que se ha ido generando alrededor de este nuevo estándar.
En este tutorial veremos las principales caracteríticas del XML y como podemos irlo utilizando para crear nuestras aplicaciones para internet.
Orígenes del XML
HTML
El lenguaje HTML, a pesar de su sencillez, es sin duda un invento prodigioso. Es el más existoso sistema de presentación de documentos de la historia. Desde que apareció el WWW, gracias al HTML hemos podido publicar y acceder a más información de la que jamás podiamos haber imaginado.
Pero, a su vez, el HTML ha sido víctima de su propio éxito. El gran crecimiento de Internet, los intereses comerciales y la necesidad de poder realizar páginas web vistosas, ha dado lugar a que en poco tiempo este lenguaje haya evolucionado muy rápidamente y, por desgracia, no siempre por el camino más adecuado. Actualmente estamos en la versión 4.0 y, sin embargo, sigue siendo igual de rígido e inflexible como era en un principio. Y es que es un lenguaje limitado en cuanto que no nos permite realizar sobre Internet todas las aplicaciones o cosas que nos gustaría.
XML
Estas razones han obligado a los miembros del W3 Consortium a desarrollar nuevas versiones de HTML un nuevo lenguaje (mejor dicho, metalenguaje), que han denominado XML (Extensible Markup Language); que aproveche las innegables ventajas del HTML, pero que a su vez permita realizar muchas cosas más. Esto no signfica, al menos por el momento, el fin del HTML. Existen demasiadas páginas en HTML y resulta muy sencillo crearlas. Además, los navegadores no soportarán todavía en toda su potencia el XML y tecnologías asociadas, pero es evidente una reformulación del HTML como una aplicación XML y un cambio radical en la forma de elaborar las páginas web en los próximos años.
La diferencia es clara en el siguiente ejemplo:
donde podemos observar cómo Amazon presenta en su web información sobre los libros.
El código en HTML es el siguiente:
Libro de Amazón en HTML
<p>
<dt>
<b>
<a href="/exec/obidos/ASIN/0764531999/qid=919015337">
Xml : Extensible Markup Language</a></b> ~
<NOBR><font color=#990033>Usually ships in 24 hours</font></NOBR>
<dd> Elliotte Rusty Harold / Paperback / Published 1998
<br>
Our Price: $31.99 ~
<NOBR><font color =#990033>You Save: $8.00 (20%)</font></NOBR>
<br>
<a href="/exec/obidos/ASIN/0764531999/qid=919015337">
<i>Read more about this title...</i></a>
y en XML lo podríamos escribir de la siguiente manera:
Libro de Amazón en XML
<?xml version="1.0"?>
<libro>
<titulo>Xml: Extensible Markup Language</titulo>
<disponible tiempo="24" unidad="hours"/>
<autor>Elliotte Rusty Harold</autor>
<formato>Paperback</formato>
<publicacion>1998</publicacion>
<precio cantidad="31.99" moneda="dolar"/>
<descuento cantidad="20"/>
<enlacelibro href="/exec/obidos/ASIN/0764531999/qid=919015337"/>
</libro>
Es evidente que no hay que ser ningún programador experto para entender que cualquier programa informático podrá trabajar de forma más eficiente sobre el segundo ejemplo que sobre el primero.
Esto permitirá, por ejemplo, realizar motores de búsqueda mucho más eficaces, lo que nos permitirá un acceso más rápido y eficiente a la información. Nos permitirá acceder a nuestras páginas favoritas desde nuestro teléfono móvil, o desde la radio de nuestro coche, en el momento en el que los programas de reconocimiento de voz trabajen con XML. Facilitará el intercambio de información y la cooperación entre las empresas facilitando el comercio electrónico, etc. Y es que el XML busca precisamente crear la capacidad de hacerlo todo en la web.
La potencia de esta forma de trabajar radica en que estamos etiquetando e identificando el contenido, olvidándonos en un principio por la forma de presentarlo. ¡Ya nos encargaremos luego de darle un formato de salida! El W3c está trabajando actualmente en el desarrollo de un lenguaje de hojas de estilo que nos lo permita, denominado XSL (Extensible Style Languaje).
Mediante una XSL podremos transformar un document XML en otro XML (por ejemplo en HTML) o convertirlo a un formato de impresión: RTF, PDF, etc.
Si el HTML supuso una revolución porque permite la comunicación entre las personas, el XML supondrá una revolución porque va a permitir la comunicación entre las máquinas.
HTML, XML versus SGML
Tampoco tenemos que equivocarnos y pensar que el XML es un HTML++. Tanto el XML como el HTML tienen su base en el SGML. El SGML (Standard Generalized Markup Language, ISO 8879) es el estándar internacional para la definición de la estructura y el contenido de diferentes tipos de documentos electrónicos. Es decir, es un metalenguaje que nos permite definir lenguajes para definir la estructura y el contenido de nuestros documentos. La definición de la estructura y el contenido de un tipo de documento se realiza en una DTD. En ella definimos los elementos que conformarán ese tipo de documentos y cómo tienen que estar organizados para que sea correcto.
Un ejemplo de DTD puede ser la que define cómo tendrán que ser los documentos HTML. Por tanto, el HTML no es más que un tipo de documento SGML que se utiliza en el web, y esto es importante, ya que aquí radica su principal diferencia con el XML.
El XML no es ningún tipo de documento SGML, sino que es una versión abreviada de SGML optimizada para su utilización en Internet. Esto significa que con él vamos a poder definir nuestros propios tipos de documentos (podremos definir nuestras propias etiquetas) por lo que ya no dependeremos de un único e inflexible tipo de documento HTML.
El XML, más que un HTML++, hay que considerarlo como un SGML-- optimizado para su utilización en Internet. Como escribió Richard Ligth en su libro Presenting XML: "XML ofrece el 80% de las ventajas del SGML con un 20% de su complejidad". Y es que los diseñadores de XML intentaron dejar fuera sólo aquellas partes que raramente se utilizan. Esta reducción resultó ser muy importante: la especificación XML ocupa aproximadamente 30 páginas, frente a las 500 del SGML.
Ventajas de utilizar XML en las aplicaciones Web.
Entre las muchas que existen podemos destacar tres:
- Sencillez
- Variedad de estructuras de datos
- Excelente tratamiento de caracteres internacionales.
Sencillez
La primera y más importante ventaja del XML se refiere a su sencillez, en especial si lo comparamos con los formatos binarios.
El XML es un formato basado en caracteres y por tanto comprensible para los seres humanos. Además los documentos XML pueden leerse fácilmente, crearse y modificarse por medio de las herramientas que utilizamos normalmente, como editores de texto. Todo esto hace que la compresión y el análisis de documentos XML resulte mucho más sencillo que los escritos en formato binario.
Otro ejemplo de la sencillez de XML tiene que ver con su habilidad para representar datos estructuras en forma de árbol con todas las ventajas que esto comporta. Existen otras sintaxis estandar, como por ejemplo la ANS.1 (Abstract Syntaxt Notation 1) que nos permiten representar datos estructurados en forma de árbol. Pero dicho estandar resulta bastante complicado de entender y generar. Se pueden utilizar herramientas de generación automática para facilitar la tarea, pero las herramientas adecuadas suelen ser bastante costosas. Por el contrario el XML posee la misma habilidad para representar datos estructurados en forma de árbol y su compresión y manejo son más sencillos.
Si algo puede decirse del intrincado mundo de Internet es que la "sencillez gana y la eficacia pierde". En Internet la regla de oro es la apertura, es decir, accesibilidad y disponibilidad para todos. Incluso si se trata de una tecnología totalmente revolucionarias, sólo logrará imponerse si cuenta con el apoyo de la mayoría de la población afectada. Un tecnología menos eficaz pero abierta a todo el mundo y fácilmente comprensible tendrá más probabilidad de imponerse en Internet que otra mejor pero de acceso restringido. Por esto ha triunfado el HTML y por esta razón esta triunfando el XML: es sencillo.
Variedad de estructuras de datos
Aunque sencillo, XML tiene la potencia suficiente para expresar estructuras complejas de datos. Para muchas aplicaciones, una estructura en forma de árbol es lo suficientemente general y potente como para expresar datos con un cierto nivel de complejidad. De hecho, supone un buen equilibrio entre el nivel de expresividad y sencillez. Incluso estructuras de datos tan complicadas como gráficos (VML, SVG) pueden llegar a representarse en un arbol. Por todo esto, XML permite expresar estructuras complejas de datos que satistfacen las exigencias de casi todas las aplicaciones.
Tratamiento de caracteres internacionales
Una de las grandes ventajas del XML que no debe subestimarse es su capacidad para gestionar conjuntos de caracteres internacionales. Incluso si se está diseñando un documento muy simple, esta sola característica basta para decantarse por XML.
Hoy en día, los negocios se realizan a escala mundial. Esto es especialmente cierto cuando se trata de aplicaciones Web, puesto que Internet se ha encargado de borrar las fronteras nacionales. Resulma muy común que las transacciones comerciales contengan, por ejemplo, nombres de calles en chino o nombres propios de origen árabe. La recomendación 1.0 de XML está definida de acuerdo con el conjunto de caracteres ISO-10646(Unicode), por lo que virtualmente todos los caracteres que actualmente se utilizan en el mundo son caracteres oficiales.
Areas de aplicación del XML
En este tutorial se estudia la utilización de XML para el etiquetado y la estructuración de documentación. Pero el XML es tan potente y flexible que muchos personas lo utilizan para otros fines. Algunas de estas otras aplicaciones las podemos englobar en estos tres grupos:
- Uso de XML para describir metacontenidos respecto a documentos o recursos en línea.
- Uso de XML para publicar e intercambiar contenidos de bases de datos.
- Uso de XML como formato para sistemas de mensajería con el fin de permitir la comunicación entre programas de aplicaciones.
Metainformación
En 1997 XML se consideraba fundamentalmente un lenguaje para definir metacontenidos. Un metacontenido no es más que la información relativa al contenido del documento, como su título, autor, amaño del archivo, fecha de creación, historial de cambios, palabras clave, y demás información asociada. Se puede utilizar un metacontenido, por ejemplo, para realizar búsquedas, filtrar información y gestionar el documento.
El HTML, dado que es un lenguaje de marcas enfocado a la presentación, proporciona mecanismos muy pobres para la manipulación de metacontenidos.
XML está considerado el mejor vehículo para definir una sintaxis de metacontenidos dada su flexibilidad, legibilidad y capacidad de ampliación. Ademas nos proporciona la posibilidad de definir estos metacontenidos fuera del documento. RDF, CDF y OSD son ejemplos de formatos de metacontenidos definidos en XML.
Bases de datos
Muchos aplicaciones basadas en el modelo de tres capas extraen los datos a partir de sistemas remotos de bases de datos. Por lo general, los resultados se transforman a través de la etiquta <table> del HTML y se muestran en pantalla. Si los datos se suministran en un documento XML que preserva la información original, como nombres de columnas y tipos de datos, el cliente puede utilizarlos para otros fines además de visualizarlos en pantalla. Por ejemplo, podrá descargar los datos e insertarlos en una hoja de cálculo para realizar sumas y promedios.
Mensajería
Es sin duda alguna el área de aplicación más importante del XML. Por mensajería se entiende el intercambio de mensajes entre organizaciones o entre sistemas de aplicación dentro de una misma organización.
La mensajería entre distintas compañías se ha realizado tradicionalmente a través del EDI (Intercambio ELectrónico de Datos) que ha sido ampliamente utilizado por sectores tan importantes como el financiero o productivo desde la década de los setenta.
Uno de los problemas técnicos del EDI tiene que ver con el formato estándar que debe adoptarse, y aqui XML puede desempeñar un papel decisivo. Entre las habilidades necesarias para construir un sistema EDI, destaca el conocimiento de los formatos de los mensajes X12 y EDIFACT. El formato de estos fichero es complicado de leer. La gran diferencia entre EDI y XML es que en XML, lo nombres de elementos tienen sentido por si mismos. Es verdad que los mensajes los procesan normalmente los programas, y no los usuarios de carne y hueso. Pero la legibilidad sigue siendo un aspecto fundamental para los programadores de aplicaciones, que desarrollan, depuran y mantienen los programas que procesan los mensajes EDI.