XML

Ramón Saquete

Escrito por Ramón Saquete

El lenguaje XML, acrónimo de eXtensible Markup Language, es un lenguaje de marcado, pensado para que sea fácil de usar tanto por las máquinas como por los humanos.

Un lenguaje de marcado es aquel que añade marcas, etiquetas o elementos a un documento para añadir información adicional a este. Por lo que XML es un lenguaje informático de marcado pero no lo es de programación. Expresiones como «programar un XML» o «programación de XML» son, pues, incorrectas ya que los lenguajes de programación sirven para ejecutar algoritmos mediante estructuras de control que dirigen el flujo de los programas, y esto algo mucho más complejo que simplemente añadir información a un documento.

Ejemplo de documento XML

Veamos un ejemplo de XML del tipo sitemap, usado para listar a Google las URLs de un sitio. En el ejemplo, tenemos las marcas señaladas en negrita y éstas nos dicen qué parte del texto es la URL y qué parte es la última fecha de modificación:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" 
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd" 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
              <loc>https://www.humanlevel.com/blog.html</loc>
              <lastmod>2019-10-02T10:15:48+02:00</lastmod>
       </url>
</urlset>

Diferencia entre XML válido y bien formado

Todo documento XML debe seguir una serie de reglas  para considerar el documento bien formado. Por ejemplo, todo documento XML debe tener una etiqueta raíz (en el caso del ejemplo, <urlset>). Además, debe cumplir las reglas especificadas para el tipo de documento XML que se está escribiendo (XHMTL, Sitemap, etc.)

Comúnmente, estas reglas se definen con documentos escritos también en XML siguiendo el estándar XML Schema (en el ejemplo tenemos el XML Schema de los Sitemaps, declarado en el elemento raíz, en lo que se llama espacio de nombres), por lo que XML es un meta-lenguaje, ya que permite definir lenguajes y es la razón de que lleve la palabra extensible en el propio nombre.

Teniendo un documento XML y el documento XML Schema que lo define, podemos validar si es correcto con una herramienta automática. Esto lo convierte en el formato ideal para ser interpretado por las máquinas. Solo si el documento está bien formado podrá ser validado contra las reglas de su formato y ser considerado válido, si cumple los requisitos.

La herramienta de validación nos dirá si el documento está bien formado y, en caso de estarlo, si es válido o no.

Relación con XHTML

Antiguamente, también se ha utilizado bastante el estándar DTD (Document Type Definition), en lugar de XML Schema, como lenguaje de definición de las reglas de los distintos formatos XML, sobre todo antes de la aparición de HTML5, cuando al principio de cada XHTML se especificaba que conjunto de reglas debía seguir éste, estableciendo la URL del DTD dónde estaban definidas:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- the XHTML document body starts here-->
<html xmlns="http://www.w3.org/1999/xhtml">
 ...
</html>

Los DTD, no están en XML, si no en SGML (Standard Generalized Markup Language), que es un lenguaje anterior más potente y complejo que XML. No obstante, SGML es igualmente un meta-lenguaje que sirve para definir documentos en XML, ya que SGML es un superconjunto de XML.

En HTML5 no se define el DTD, quedando solo la declaración vacía, lo cual indica que se debe seguir la última versión de la especificación:

<!DOCTYPE html>

Pero los documentos HTML5 no están en XML ya que, aún siendo también un lenguaje de marcado similar, permite una sintaxis más laxa que el XML y admite documentos mal formados.

Cuando seguimos las reglas de sintaxis estrictas de XML en un documento HTML5, podemos validarlo para confirmar que sí es XML y servirlo al usuario como tal. A esto se le llama XHTML5, pero es una tecnología que no se utiliza, pues aunque el intérprete del navegador puede procesarlo más rápido, un solo fallo no detectado o un documento a medio descargar por un corte de conexión, provocará que el usuario vea una página en blanco o de error.

Aplicaciones prácticas

El uso de XML como formato común de intercambio de información entre distintas fuentes de datos, es necesario y muy habitual para crear soluciones que serían imposibles sin un formato de documento intermedio, entre la fuente y el destino.

Por ejemplo, si los desarrolladores de Google tuviesen que leer los datos que muestran en Google Merchant cogiéndolos directamente de las bases de datos de las tiendas que los ofrecen, tendrían que implementar millones de transformaciones de datos, una para cada tipo de base de datos, hacia la base de datos de Google Merchant. Mientras que estableciendo un formato común en XML, solo precisan implementar una transformación, la que traduce el formato XML de Google Merchant a su propia base de datos.

Su facilidad de uso y su extensibilidad son las razones por las que XML es usado en multitud de estándares abiertos de la web (RSS, SVG, MathML, XHTML, Sitemaps, Feed de Google Merchant, el protocolo SOAP que usan las webs para comunicarse con WebServices, etc.), así como en estándares abiertos y cerrados para el traspaso de información interna (información de reservas disponibles de hoteles, productos para hacer Dropshipping, etc.).

  •  | 
  • Modificado el
Ramón Saquete
Ramón Saquete
Desarrollador web y consultor SEO técnico en Human Level. Graduado en Ingeniería Informática e Ingeniería Técnica en Informática de Sistemas. También es Técnico Superior en Desarrollo de Aplicaciones Informáticas y posteriormente obtuvo la Certificación de Aptitud Pedagógica. Experto en WPO e indexabilidad.

¿Y tú qué opinas? Deja un comentario

Por si acaso, tu email no se mostrará ;)

es