¿Qué es XML?
XML: eXtensible Markup Language
es un subconjunto del SGML (un lenguaje de marcas de propósito general) y es el lenguaje que la w3c recomienda para crear lenguajes de marcas orientados a determinadas funciones. Es una especie de lenguaje como HTML pero en el que las etiquetas las inventamos nosotros.
 
Dicho de otra forma:

XML es un lenguaje de marcas con el que tenemos libertad total para decidir que etiquetas y atributos metemos. Su principal aplicación es la de intercambio de datos entre sistemas y aplicaciones.
Este es el aspecto de un fichero XML
<?xml version="1.0" encoding="UTF-8"?>
<libro>
    <titulo>Neuromante</titulo>
    <autor>William Gibson</autor>
    <isbn>84-450-7405-9</isbn>
    <fecha edicion=”2”>1985-12-4</fecha>
    <paginas>450</paginas>
</libro>

¿Y para que necesito esto?

  • Es el lenguaje ideal para el intercambio de información ya que tiene estas ventajas
  • Es texto plano
  • Es legible por humanos y máquinas
  • Es muy simple
  • Es muy útil para representar tipos de datos (registros, arboles, listas)
  • Es un estándar abierto
  • La mayoría de lenguajes tienen librerías para tratar XML


Cómo hacer que XML siga un esquema determinado: DTD

(Igual esquema no es la palabra apropiada, pero en fin)
Si nos interesa podemos hacer que un documento XML cumpla un determinado esquema de etiquetas y atributos. Ese esquema esta definido por un DTD. Esa definición puede ir dentro del XML o estar referenciado así:
<!DOCTYPE libro SYSTEM "libros.dtd">

El DTD es un Document Type Definition, en definitiva un fichero que indica el formato que debe tener un contenido XML, indicando las etiquetas, atributos, jerarquía etc..

Este sería un ejemplo de DTD para el XML anterior:

<!ELEMENT libro (titulo,autor,isbn,fecha,paginas)>
    <!ELEMENT titulo (#PCDATA) >
    <!ELEMENT autor (#PCDATA) >
        <!ELEMENT isbn (#PCDATA) >
    <!ELEMENT fecha (#PCDATA) >
        <!ATTLIST fecha edicion CDATA "1">
    <!ELEMENT paginas (#PCDATA) >

Requisitos que debe cumplir un fichero XML
Estas son las propiedades que debe tener un fichero XML considerarse como tal:

1.-Debe estar BIEN FORMADO (well formed)
 -Siempre debe tener un elemento raíz
 -Todas las etiquetas deben cerrarse
 -Todos los atributos llevan comillas ' o “.
 -Las etiquetas se anidan pero nunca se solapan
 -Las etiquetas son case-sensitive, no hay que mezclar mayúsculas con minúsculas

2.-En caso de depender de un DTD, debe ser VÁLIDO

Una ventaja muy  obvia de XML es que podemos crear un fichero de propiedades, de configuración, de lo que sea y no necesitamos crear desde 0 código para verificar y validar que ese fichero es correcto. Todo ese trabajo nos lo dan las librerías de las que disponemos para gestionar XML. Por ejemplo en java si abrimos un fichero xml y esté no está bien formado o no es válido nos los dirá de forma inmediata.

Los DTD se quedan un poco cortos si necesitamos un mayor control de los tipos de datos que metemos en el fichero XML. Con un DTD podemos decir que vale, en tal etiqueta hay un texto, pero ese texto puede ser cualquier cosa. ¿Podemos controlar que sea número, texto o que siga un patrón predeterminado?

La respuesta es XSD, pero eso amigos, es otra historia para otro día.

xml sigue vigente, y de qué manera. Basta con ver android y sus inifinitos ficheros XML para configurar hasta el último texto de la etiqueta más remota. También en muchos frameworks son frecuentes los ficheros de configuración aunque hay cierta lucha con la opción XML o las anotaciones. En un principio cualquier cosa configurable se hacía en un fichero XML aparte, y de tanto exceso hay quien tratade volver atrás.