====== 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 =====
Código limpio
Robert C. Martin
programming
craft
^ Elemento ^ Sintaxis ^
| Prólogo | '''' |
| Elemento | ''...'' con etiqueta de apertura y cierre |
| Atributo | Datos dentro de la etiqueta: ''id="42"'' |
| Elemento vacío | ''
'' o '''' |
| Comentario | '''' |
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:
...
===== 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 |
Con ese esquema, un '''' 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 |
Cuando edites ficheros de configuración XML (''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.