XML: Qué es, para qué sirve, y por qué me interesa

XML = eXtensible Mark-up Language

La traducción del acrónimo XML sería Lenguaje de Marcado Extensible. Algo es algo, pero no nos dice mucho… ni sobre el lenguaje ni su utilización.

Empecemos por el principio: XML es un lenguaje, esto es, un código, un conjunto acordado de signos para la comunicación. Pero es un lenguaje de marcado, lo que significa que sirve para modificar el significado de otros símbolos que se envían, para dotarlos de mayor significado. Y por último, es extensible, de modo que el conjunto de símbolos no es fijo, sino que puede ampliarse para que pueda abarcar prácticamente cualquier ámbito en el que sea preciso identificar —marcar— cualquier otro tipo de información.

Vamos a empezar con un ejemplo:

<documento>
<libro>
<titulo>El fin de la Eternidad</titulo>
<autor>Isaac Asimov</autor>
</libro>
<libro>
<titulo>Building Cocoa Applications</titulo>
<subtitulo>A Step-by-Step Guide</subtitulo>
<autor>Simson Garfinkel</autor>
<autor>Michael Mahoney</autor>
</libro>
</documento>

En este ejemplo, podemos ver varias de las características de XML:

  • Se utilizan etiquetas, entre llaves angulares < >, para marcar, esto es, calificar, la información a la que rodean
  • Hay dos tipos de etiquetas, las de apertura, < >, y las de cierre, . En realidad, hay un tercer tipo, las de autocierre, que no rodean a ninguna otra información, y que son, por ejemplo, así: <br />
  • Las etiquetas no se entrecruzan, esto es, la última en abrirse siempre ha de ser la primera en cerrarse
  • El archivo XML es fácil de leer, no sólo para un ordenador, sino también para una persona; en efecto, cualquiera puede entender que la información anterior se refiere a un par de libros, y que los títulos y autores estaban agrupados jerárquicamente. Uno de los libros sólo tenía título y autor, y el otro tenía título, subtítulo, e incluso un par de autores

El archivo que hemos mostrado, en realidad, no es un documento XML válido, porque faltan un par de cosas: una etiqueta que lo identificase como archivo XML, y un modelo de datos que permitiera a otros programas comprobar, por ejemplo, si realmente el subtítulo es o no obligatorio en cualquier libro, y si se permite más de un autor, pero entraremos en esos detalles más adelante.

La familia, y uno más

El lector atento que haya jugado alguna vez con un editor web pensará que existe un gran parecido entre XML y HTML, y tendrá razón.

En realidad, tanto XML como HTML provienen de un lenguaje más antiguo, llamado SGML, o Lenguaje Generalizado de Marcado Estándar. SGML es, en realidad, un meta-lenguaje, o lenguaje para describir lenguajes. Se utilizó en los años 60-70 para crear sistemas de gestión documental, y descripción de datos, pero la especificación era tan enorme, y había tantas sutilezas en su uso, que al final no ha tenido más utilización práctica que describir un par de lenguajes, HTML y XML.

En primer lugar se creo HTML, que era un conjunto de etiquetas para controlar la presentación de información en la entonces incipiente WWW.

Posteriormente se creo el XML como subconjunto de SGML, de modo que XML también permite describir otros lenguajes, a través de ese modelo de datos, pero normalmente se utiliza para marcar, describir información que puede existir en muy diferentes formatos.

Como heredero de SGML que era, el lenguaje HTML estaba pensado fundamentalmente para “calificar” diferentes elementos de una página. Con ese archivo, el navegador creaba una presentación en pantalla de esos elementos, que podía variar enormemente de navegador a navegador.

Cuando la Web pasó de simple herramienta de acceso a la información a un medio de comercio, HTML pasó de ser un lenguaje de marcado de contenido a ser un lenguaje de presentación, y la guerra entre Netscape y Microsoft hizo que cada una de las empresas ampliara el HTML para facilitar la tarea de los diseñadores gráficos, cada una a su manera, y muchas veces de forma incompatible entre ellas.

Esto llevó a modificaciones tremendas en el HTML, que aparte de vincularlo con una implementación concreta, hacían que las páginas fueran otro formato de archivo de ordenador, no una representación de la información que contenían. Además, HTML no obligaba a que las páginas estuviesen bien formadas, lo que permitía a los diseñadores crear páginas erróneas que podían ser interpretadas de diferente forma por diferentes navegadores.

XHTML surge precisamente como una reformulación del HTML en base a XML, con las siguientes ventajas:

  • Al ser XHTML un lenguaje basado en XML, dispone de un modelo de datos, con el que es posible validar el archivo: es posible que un programa de ordenador te indique si tu página web en XHTML está bien o mal escrita
  • XHTML tiene un conjunto de etiquetas más reducido que HTML: esto permite describir el contenido, y luego utilizar hojas de estilo CSS para darle formato. Esto permite la separación entre contenido y presentación, de modo que es posible, a partir de un único archivo XHTML, crear diferentes presentaciones, cambiando la hoja de estilos. La página web CSS Zen Garden es un maravilloso ejemplo
  • La separación entre descripción (XHTML) y formato (CSS) permite que sea más sencillo montar herramientas de gestión de contenidos en base de datos, utilizar XHTML (XML) para describir los datos, y utilizar CSS para aplicar el formato que se desee a esos datos. De esta forma, aislamos al diseñador de la programación de los accesos a la base de datos

Así que XML ya es importante para la web, ya que ha permitido una reformulación del HTML para dar lugar al XHTML, independiente del navegador, y que separa contenido de formato. Pero no es, para nada, su única importancia.

Servicios web y XML

Al ser un lenguaje de descripción, un meta-lenguaje, se está utilizando para muchas más cosas, especialmente aquellas que implican intercambio de información en un formato lo más autocontenido posible. Y así hablamos de Servicios web.

Un servicio web no es más que un programa que reside en un ordenador remoto, al que se accede por medio de los mismos protocolos que utilizamos en los navegadores, pero que recogen información que se les suministra, y devuelven un conjunto de información relevante a partir de la información suministrada.

Un ejemplo de servicio web es el de Amazon, que permite que Delicious Library — por cierto, un programa la mar de interesante, y que se ha merecido una extensa “revisión”: por parte de John Siracusa en ArsTechnica — obtenga toda la información de un libro a partir del código ISBN del código de barras.

Y un ejemplo de cómo un servicio que sólo proporciona datos en XML puede utilizarse para crear aplicaciones muy diversas vuelve a ser el de Amazon. Pero esta vez, a través de AmazType se logra, por ejemplo, crear la palabra “quijote” a base de portadas de libros que contengan ese texto, y obtener información sobre ellos haciendo clic en un ejemplar concreto.

En este servicio, el papel de XML es describir la información que se recibe al hacer peticiones a Amazon, pero existe otra clase de servicios web que utilizan XML para todo el proceso. Se llaman servicios SOAP, y permiten, aparte de recuperar información en XML:

  • Describir el conjunto de servicios disponibles en un servidor SOAP
  • Describir el formato de petición para cada uno de los servicios disponibles
  • Describir la forma de entrega de la información solicitada

De modo que XML, a través de los servicios web, también tiene una gran importancia en la web.

Por qué es interesante para mi trabajo

En primer lugar, ¿en qué estoy trabajando? En alguna otra ocasión he comentado que estoy trabajando en el Instituto de Astrofísica de Andalucía , pero no he comentado qué estoy haciendo allí.

Pues bien, la comunidad astronómica tiene enormes archivos de datos, pero guardados en un montón de formatos diferentes, y en un montón de ordenadores diferentes, con diferentes interfaces de acceso, y diferentes medios de almacenamiento.

La iniciativa Virtual Observatory pretende unificar los formatos de archivos, y unificar la forma en que se solicita información radioastronómica, utilizando por un lado XML para describir los datos —formatos VOTable, VOResource, por ejemplo—, XML para describir los servicios y encontrar otros servidores —SOAP, y VOResource para describir registros de información astronómica—, y XML para el lenguaje de petición de datos radioastronómicos, VOQL o ADQL.

En una segunda fase, se implementará la ejecución remota de programas arbitrarios y obtención de resultados de simulaciones, por ejemplo, a través de un lenguaje como XML-RPC.

Y en una tercera fase, se podrá poner a disposición de la comunidad astronómica la potencia de cálculo de los diferentes servidores para la ejecución de programas distribuidos.

Lo interesante de esta iniciativa es que muchos de los elementos que se crearán para los Observatorios Virtuales servirán para crear infraestructuras B2B, y B2C, más allá de la enorme ayuda a la ciencia fundamental.

En cualquier caso, esto significa que voy a estar trabajando con XML, y muchas de las tecnologías subyacentes —XLST, XQuery, XPath—, en los próximos meses, y seguro que escribiré más sobre ello. Y por supuesto, espero impaciente vuestras sugerencias.

ps. En http://del.icio.us/juandesant/xml están las diferentes páginas que voy marcando con información sobre XML. Lamentablemente, la inmensa mayoría está en inglés.

Post relacionados
Dejar un comentario?

31 Comentarios.

  1. esto documento me parecio muy estupido y largo y es mejor resumirlo, tambien creo que esto explica cosas que ninguna persona entiende.Deberían hacerlo más corto.

    Los odia con mucho afecto Marina

  2. Hola, Marina, yo también te quiero ;-) Si pudieras indicar qué cosas son las que no se entienden, sería más fácil mejorarlo. De otra parte, no es mucha educación pedir las cosas así…

  3. estoy de acuerdo con Marina deberían resumirlo y explicarlo mejor

  4. esta muy buena la informacion da para entender .. ns por que otras personas opinan lo contrario

  5. Me parece un Articulo muy adecuado, y que realemnte clarifica muchas cosas.
    No comparto las opiniones negativas que el articulo ha despertado pero las respeto, aunque su manera de expresarlas prodria mejorar.

    mi valoracion personal es de un 7 sobre 10.

    Un saludo a todos.

  6. Me pareció bueno el articulo, si no lo entiendes es porque no quizás no estas muy ligada el mundo de la tecnología de la información, este tema requiere de un mínimo de experiencia en este mundo.

  7. Totalmente de acuerdo, muy largo y acabé con la misma duda “¿qué rayos es xml?”… se agradece el intento pero el artículo no es nada útil.

    Tampoco estoy de acuerdo con el último comentario, si necesito un mínimo de experiencia antes de leer este artículo entonces para qué rayos lo titulan “que es el xml y para que sirve” ??? Creo que es un artículo para gente CON NADA de experiencia y que desea aprender qué rayos es XML ¿o me equivoco? si tuviera un mínimo de experiencia no hubiera entrado aquí :-) … Ah, y para aquellos ignorantes que quieran corregirme que en vez de decir CON NADA debería ser SIN NADA les aviso que los incorrectos son ustedes, sino consúltenlo con un experto en Lógica y Algebra Booleana :-)

    Saludos.

    David.

  8. Buenas tardes Juan,

    En efecto comparto de alguna manera los comentarios anteriores pero tampoco quiero parecer pesado. Creo que tu articulo empieza muy bien sin embargo en algun punto a medida que vas avanzando se vuelve demasiado complejo, como si despues de mitad de pagina te olvidaras que estabas dirigiendote a principiante (XHTML? SOAP? Creo que si los citas debes dar aunque sea una explicacion) . Te sugeriria colocar más ejemplos prácticos asi como el primero que fue muy fácil de entender.

    Espero te valga de algo esta sugerencia. Saludos.

  9. Hola! me he quedado con ganas de ver mas ejemplos o de saber cosas que mencionas y luego no se desarrollan pero para empezar me ha dado ideas!

  10. me parece que tenes que ir mas al grano con la info!!! muchas vueltas y nada de información concreta

  11. La publicación es buena, pero a mitad de la lectura, ya no estaba seguro que me fuera a entender que era un XML, y al final me dejo mas dudas de las que tenía, cosa que es buena en ocasiones.

  12. Opino que el articulo esta muy bien y que responde al titulo del articulo. Me parece correcto en su extension para cubrir la pregunta que se hace.
    El ejemplo muy claro.

    Es una primera aproximacion, valida para todos, para quienes quieran ampliar les ayuda, y para el que busque una introduccion tambien.

    PD.
    Para muchos de los que han hablado antes, quisiera decir que el conocimiento no se obtiene mediante ingestion de farmacos, vamos hay que leer y lo que no se entiende releer o buscar.

  13. Plop!!, quede donde mismo, no entendi nada :-(

  14. GRACIAS… LA VERDAD ES QUE ES MUY DIFICIL EXPLICAR QUE ES XML, QUIZAS PARA LOS QUE NO SEPAN NADA DE NADA, NO SEA UTIL, PERO UNO QUE SABE QUE ES , PERO NO SABE COMO DEFINIRLO, HAS HECHO UN GRAN TRABAJO, Y ME HA AYUDADO MUCHO..

    GRACIAS

  15. gracias por el aporte, la verdad que los q conocemos de informatica, ing. en sistemas, etc… entendemos mejor el tema, pero las personas q no conocen y tienen idea de lo q estan leyendo existen diccionarios con terminologias infromaticas, y me da mucha pena por el comentario dado por:
    Marina publicado el 29 Julio, 2006
    pero espero q como ya a pasado mucho tiempo, ella ya tenga la respuesta entoces ¿de lo q es?.juan la vdd es q es dificil explicar lo q es XML, pero MUY BUEN TRABAJO. saludos…

  16. Hola, a mi me parece biuen artículo y en el primer párrafo se specifica claramente que es un archivo de este tipo!! Quisiera saber los signos y el uso de los mismos dentro del archivo para poder generar uno…. :D

    Buen artículo, que ppara entenderlo rquiere q sepas un poquito de muchas cosillas!!

  17. vaya manada de ignorantes, el articulo esta excelente y claro, el que diga lo contrario, que termine la primaria antes de preguntar, si no se entiende alguna palabra o concepto dentro del articulo hay un librito que se llama diccionario y si no esta ahi pues en internet, si quieren les limpiamos la casa tambien,,,,,todo informatico que se respete sabe que solo aprendemos explorando, y que no podemos esperar a que nos lo den todo resuelto asi que busquesen un poco la vida y no toquen las narices a los que por lo menos se toman la molestia de orientarnos un poco, que por cierto le debemos mucho por lo menos a mi me han sacado de muchas dudas, asi que gracias al del articulo, esta excelente, y al resto de quejicas que os den por el XML……

  18. Gracias por la aportación, me ha resultado muy útil..

  19. exelente explicacion, solo hay que tener algo de base para entenderlo… :cool: :cool:

  20. Hay Maneras de decir las cosas, y si hubieran escogido una mas amable otra cantar seria, Pues realmente yo tengo experiencia en desarrollo web y tecnologias de informacion pero no sabia muy bien que era un xml, y pues tu documento me aclaro algunas dudas, pero apoyo a alguno en que te tornaste cada vez mas complejo sobre todo al final de que para que te servia a ti, con mas ejemplos practicos y ejemplos de en que se podria utilizar seria genial y mas entendible. salidos

  21. el articulo parece interesante pero, no muestra una relacion practica con otros lenguajes, espreo que se pueda mejorar en ese aspecto

    saludos

  22. Muy buena explicación me aclaro algunas dudas

  23. El articulo se puede entender solo que es muy extenso, en cuanto a los comentarios sin comentarios…

  24. El xml zirvvvvve para “identificar” laz partez de un documento electrónico :razz:
    hazi puez cuando ze ezcribe:

    El fín de la Eternidad

    le dize a una aplicazión web(por ejemplo “programa cliente-zervidor”) que lo que ezta entre laz “etiquetaz” ez un título(obio).

    El xml se utiliza pa’ organizar “código” y explotar recurzoz de una “baze de datoz” o en su uzo maz rudimentario hazer que se vea chula la página con css.

    Azi que mijos ya lo saben el xml es mas chingon que el html.
    I love heavy metal METALLICA YEEEEA !!!!!
    :cool:

  25. Gracias por el artículo, se entiende perfectamente y yo no soy ni diseñadora ni nada, solo aficionada, pero lo que explica me resume perfectamente lo que necesitaba para ubicarme en XML.- Extensible mark-up language. Me ayudo mucho a a mi trabajo académico y discrepo de los otros comentarios, creo que si leyeran con paciencia y mesura entenderían perfectamente. Gracias.

  26. La verdad puedo entender para que sirve html osea crear paginas web….pero no puedo entender para que necesito crear un archivo xml……donde lo aplico……no pude encontrar ningun manual que lo diga claramente, por que solo dicen como es su sitaxis y ya….pero para que demonios sirve eso……la verdad me interesa saberlo pero con un ejemplo práctico y no solo codigo……Gracias

  27. hola en mi lapto, en el disco c hay bastantes carpetas q contienen este tipo de documento xml una dentro de otra son interminable. afectara si las elimino… o simplemente no sucede nada. que me recomienda saludos gracias.

  28. El principio es lo más importante de XML ya que deja bien en claro lo qué es XML, es lo que en realidad se necesita, el resto es relativo de acuerdo al tema que el lector esté buscando, es decir donde voy a utilizar el XML (para qué).

Deja un comentario