====== 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.