∷ Notas que datan de hace muchísimo tiempo, desde los comienzos de este blog

Qué es un archivo XML y cómo crear archivos XML

Nota histórica: este artículo fue publicado originalmente en marzo de 2011. Aunque hoy en día JSON domina la transferencia de datos en la web, los conceptos básicos de XML y el uso de CDATA siguen siendo fundamentales en la integración de sistemas legacy. Lo conservo acá como parte del archivo histórico del blog.

Sin dudas la mejor definición de XML nos la da el mata burros de Wikipedia que dice así:

La tecnología XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable posible. Que la información sea estructurada quiere decir que se compone de partes bien definidas, y que esas partes se componen a su vez de otras partes. Entonces se tiene un árbol de pedazos de información. Ejemplos son un tema musical, que se compone de compases, que están formados a su vez con notas. Estas partes se llaman elementos, y se las señala mediante etiquetas. Una etiqueta consiste en una marca hecha en el documento, que señala una porción de este como un elemento. Un pedazo de información con un sentido claro y definido.

Teniendo en cuenta esta definición podremos definir un XML para una lista de temas musicales de esta manera: ¡tanto MUSICA como tema son ambas etiquetas!

<MUSICA>
    <tema titulo="Mi musica" />
</MUSICA>

Como pueden observar la información está fragmentada pero a su vez está organizada de manera secuencial y en un orden jerárquico. Digamos que MUSICA es el padre de tema porque cada uno de los tema, que son nodos, se encuentra dentro de la etiqueta MUSICA que agrupa todos los hijos o nodos tema.

Pero para que un archivo realmente cumpla con las normas de XML no solo debe respetar esta estructura jerárquica, sino también debe incluir elementos obligatorios como es el tipo de codificación de lenguaje o prólogo.

<?xml version="1.0" encoding="utf-8"?>
<MUSICA>
    <tema titulo="Mi musica" />
</MUSICA>

Como pueden observar se agregó una nueva línea en la parte superior del XML que cumple con la función de indicar la versión 1.0 y el tipo de codificación de lenguaje utf-8, que en este caso sirve para poder usar el alfabeto español dentro de la estructura del XML.

Otro elemento importante de un XML son sus atributos. Estos son elementos que están indicados dentro de una etiqueta anteponiéndose al signo igual (=). Estos atributos son de gran utilidad si queremos incluir información extensa; si observan en el ejemplo verán que titulo="la dormida" es un atributo y su contenido es la dormida. La manera correcta de escribir un atributo es no usar letras como la ñ o acentuadas en el nombre del atributo. Posterior al signo igual (=), entre comillas ya sean dobles o simples, indicamos el valor del atributo.

El valor del atributo sí puede tener espacios, la ñ o acentos, pero deben tener cuidado con el uso de las comillas: si para encerrar el valor del atributo usamos comillas dobles y necesitamos volver a utilizar comillas dentro de ese valor, usaremos comillas simples, o viceversa.

Los atributos son usados en la mayoría de los casos para representar información corta, por ejemplo, la duración del tema, nombre del tema o el autor. Pero si quisiéramos almacenar una descripción larga, sea del tema o del disco, ya no es para nada aconsejable usar un atributo para dicho fin. En ese caso, haremos uso de una nueva etiqueta llamada CDATA.

CDATA nos permite colocar dentro de ella todo el texto que queramos y el intérprete de XML ignorará todos los caracteres internos, impidiendo que cualquier palabra que esté allí sea confundida con una etiqueta.

<?xml version="1.0" encoding="utf-8"?>
<MUSICA>
    <tema titulo="Mi musica">
        <![CDATA[aqui el texto]]>
    </tema>
</MUSICA>

Como pueden observar, las etiquetas CDATA están dentro del cuerpo de cada nodo, por lo tanto seguimos respetando el orden jerárquico de padres a hijos. También es importante respetar la sintaxis de escritura de CDATA de la siguiente manera:

<![CDATA[aqui el texto]]>

Conclusión indispensable, nunca olvidarse:

1º Prólogo:

<?xml version="1.0" encoding="utf-8"?>

Siempre al principio de nuestro XML y solo lo indicamos una vez.

2º Cuerpo:

<MUSICA></MUSICA>

Es la etiqueta superior que abarcará todas las subetiquetas. No existirá ninguna fuera de ella; esta se declara y se cierra una sola vez.

3º Nodos:

<tema titulo="Mi musica" />

Pueden existir la cantidad de nodos que necesiten. Siempre que se abre uno “<” se debe cerrar en alguna parte “/>”; estos nodos pueden tener el mismo nombre de nodo y cada uno será interpretado como un elemento diferente.

4º Atributos: nombre="Kevin Chuca"

Los atributos deben ir dentro del nodo y utilizar un nombre lo más descriptivo y corto posible. Su contenido se escribe a continuación del signo = y entre comillas, ya sean simples o dobles. Si usan comillas dobles, deberán mantener la consistencia para el resto de sus atributos.

5º CDATA:

<![CDATA[aqui el texto]]>

Por cada nodo puede existir un CDATA.

XML finalizado:

<?xml version="1.0" encoding="utf-8"?>
<MUSICA>
    <tema titulo="Mi musica1">
        <![CDATA[aqui el texto]]>
    </tema>
    <tema titulo="Mi musica2">
        <![CDATA[aqui el texto]]>
    </tema>
    <tema titulo="Mi musica3">
        <![CDATA[aqui el texto]]>
    </tema>
</MUSICA>