XML… y más
Hoy me apetece contar cositas. XML, seguro que a muchos nos suena, pero más seguro aún estoy de que a otros para nada… XML es un metalenguaje que sirve para organizar datos, simplemente. Especifica unas reglas sobre la “ortografía” de la estructura de estos datos. Para explicarlo un poquito mejor haré un símil: envases.
En las tiendas hay varios tipos de envases: para lápices, comida, folios, procesadores, discos compactos, bebida, etc… Estos son genéricos hasta cierto punto, es decir, no tienen un contenido totalmente específico (puedes meter bebidas con gas o sin gas). Luego existen envases más grandes en las que puedes meter varios envases y que a su vez se pueden meter en otros envases mayores, etc… Pues bien, XML sólo define qué apariencia deben tener los contenedores, pero en un fichero de texto. Los envases genéricos en este caso son números, textos, fechas, etc…
La gracia de esto es que si te dedicas a dar servicio de bebidas en una tienda de música (por ejemplo) puedas definir cómo es un envase que tenga dentro bebida y CDs. Con XML sucede lo mismo y ahí radica su potencia: lo puedes utilizar para definir el tipo de dato que quieras. Y no me refiero a una cadena de texto, sino a algo más complejo como una imagen tridimensional, bidimensional, un libro, una página web… Lo que quieras. Lo interesante es que alguien define un “modelo” para el envase más grande, el que contiene todo; este modelo dice cómo deben organizarse los envases dentro de él, cuántos puede haber, etc… Así, si todos conocemos el modelo, podremos intercambiarnos los datos ya que sabremos cómo interpretar lo que hay dentro del envase grande.
Todo esto viene a cuento de que hay un formato de dibujo, SVG, que me está interesando mucho. Basado en XML, permite hacer cosas increíbles en dos dimensiones y es muy fácil darle animación. Se puede ver como la versión XML de flash. La ventaja de XML es que es muy fácil de interpretar por lo que es fácil hacer programas que usen estos ficheros; existen librerías muy optimizadas para tratar XML. Además, en la práctica un subconjunto muy pequeño de caracteres Unicode y al tener estructuras repetitivas es propenso a ser beneficiado enormemente por una muy alta compresión sin pérdida (como gzip, o zip).
La suite ofimática libre por excelencia OpenOffice (que viene de StarOffice de Sun) usaba desde sus inicios XML para sus archivos. El problema es que OpenOffice tenía su formato, KOffice el suyo, AbiWord otro y MSOffice otro… Por esto se ha creado el estándar OpenDocument, que es una serie de archivos XML (unos definen los estilos, otros el contenido, etc…) que se comprimen en un zip. Es increíble: guarda un archivo desde OpenOffice con formato OpenDocument y como Word: ¡verás qué diferencia de tamaño! La idea es que, al ser un formato libre, por utilizarlo no fuerzas a nadie a que utilice un determinado programa para tratarlo. Utilizar el formato de word sólo favorece a que Microsoft siga con el monopolio del mercado y a desfavorecer la competencia. No uso Office, así que no se si desde éste hay alguna manera de guardar en formato OpenDocument.