05 - XML
XML (*eXtensible Markup Language*) es un lenguaje de marcas para describir documentos y ficheros de configuración con estructura jerárquica. A diferencia de JSON, cuyo papel es el intercambio de datos con las APIs, XML sigue siendo el formato habitual de configuración de herramientas: pom.xml de Maven, web.xml de Tomcat, configuración de frameworks.
1. Sintaxis
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book id="42" available="true">
<title>Código limpio</title>
<author>Robert C. Martin</author>
<tags>
<tag>programming</tag>
<tag>craft</tag>
</tags>
</book>
</library>
| Elemento | Sintaxis |
|---|---|
| Prólogo | <?xml version=“1.0” encoding=“UTF-8”?> |
| Elemento | <book>…</book> con etiqueta de apertura y cierre |
| Atributo | Datos dentro de la etiqueta: id=“42” |
| Elemento vacío | <br/> o <tag/> |
| Comentario | <!– texto –> |
Un documento bien formado cumple las reglas sintácticas: un único elemento raíz, etiquetas cerradas y correctamente anidadas, atributos entre comillas.
2. Nombres y espacios de nombres
Los nombres distinguen mayúsculas y minúsculas y no pueden empezar por número. Los espacios de nombres agrupan vocabularios para evitar colisiones entre etiquetas del mismo nombre:
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="6.0"> ... </web-app>
3. Validación
La validación comprueba que un XML respeta una estructura acordada:
| Mecanismo | Qué define |
|---|---|
| DTD | Estructura antigua y sencilla: elementos y atributos permitidos |
| XSD (XML Schema) | Tipos de datos, ocurrencias, obligatoriedad; el estándar actual |
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="library">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Con ese esquema, un <book> sin title o con id no numérico no es válido.
4. XML frente a JSON
| Criterio | XML | JSON |
|---|---|---|
| Uso típico | Configuración, documentos, SOAP | Intercambio de datos en APIs REST |
| Tamaño | Más verboso | Más compacto |
| Tipos | Todo es texto; el esquema aporta tipos | Números, booleanos y null nativos |
| Herramientas | XSD, XPath, XSLT | Parseo directo en casi todos los lenguajes |
pom.xml, web.xml), sabrás leer la estructura y sus atributos, y validarás contra el esquema correspondiente cuando exista. Para datos con APIs, el formato será JSON.