
7. Documentos XML bien formados y válidos
Los documentos XML bien formados y válidos son elementos fundamentales en el mundo de la programación y la gestión de datos. Veamos cuáles son sus características.
7.1. Documentos XML bien formados
En XML, un documento bien formado (well-formed document) es aquel que sigue las reglas de sintaxis y estructura del lenguaje XML. A lo largo del tutorial se han explicado las características que deben tener los documentos XML, veamos los requisitos más importantes:
- Declaración XML (XML declaration): El documento debe comenzar con una declaración XML que indique la versión de XML utilizada y la codificación de caracteres, por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>. - Elemento raíz único (single root element): El documento debe tener un elemento raíz único que englobe a todos los demás elementos. Este elemento raíz debe abrirse y cerrarse correctamente, es decir, debe tener una etiqueta de apertura y una etiqueta de cierre.
- Etiquetas de apertura y cierre (opening and closing tags): Todas las etiquetas de apertura deben tener su correspondiente etiqueta de cierre, y deben estar anidadas correctamente. Por ejemplo:
<etiqueta>contenido</etiqueta>. - Atributos entre comillas (quoted attributes): Si un elemento tiene atributos, los valores de los atributos deben estar entre comillas, tanto comillas simples (») como comillas dobles («») son aceptadas.
- Entidades de caracteres (character entities): Los caracteres especiales como
<,>,&,'y"deben ser reemplazados por entidades de caracteres correspondientes. Por ejemplo,<se reemplaza por<,>por>,&por&, entre otros. - Comentarios (comments): Se pueden incluir comentarios dentro del documento XML utilizando la sintaxis
<!-- comentario -->. Los comentarios no deben interferir con la estructura del documento. - Espacios en blanco (blank spaces): Los espacios en blanco, como tabulaciones, espacios y saltos de línea, se consideran insignificantes en XML, a menos que estén antes o en medio del nombre de una etiqueta.
- Anidamiento adecuado (proper nesting): Los elementos deben estar anidados de manera adecuada, es decir, un elemento no puede abrirse dentro de otro elemento y cerrarse fuera de él.
7.1.1. Verificar que un documento está bien formado en VS Code
Para verificar que un documento XML está bien formado en Visual Studio Code (VS Code), puedes seguir estos pasos:
- Instalar una Extensión de XML: Primero, asegúrate de tener instalada una extensión que soporte XML. Una de las más populares es «XML Tools» de Josh Johnson. Puedes instalarla desde la sección de extensiones en VS Code buscando «XML Tools», ver cómo se instala.
- Abrir el Documento XML: Abre tu archivo XML en VS Code.
- Utilizar la Extensión: Si tienes instalada «XML Tools» o una extensión similar, normalmente analizará automáticamente el documento XML. Si el archivo está mal formado, la extensión resaltará los errores.
- Comprobación Manual: También puedes comprobar manualmente si el documento está bien formado a partir de las indicaciones vistas anteriormente.
- Formatear el Documento: Puedes utilizar la función de formateo automático de «XML Tools» para organizar y limpiar el código, lo que puede ayudar a identificar errores de formato. Simplemente haz clic derecho en el documento y selecciona «Format Document» o utiliza el atajo
Shift + Alt + Fen Windows/Linux oShift + Option + Fen macOS.
7.2. Documentos XML válidos
Un documento válido (valid document) es aquel que además de estar bien formado, cumple con un conjunto de reglas adicionales definidas en un DTD(Document Type Definition, Definición de Tipo de Documento) o en un esquema XSD(XML Schema Definition, Definición de Esquema XML) que veremos detalladamente en las próximas unidades. Veamos un ejemplo de un documento XML bien formado y válido:
<?xml version="1.0" encoding="UTF-8"?>
<libreria xmlns="http://www.example.com/libreria" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/libreria libreria.xsd">
<libro>
<titulo>El Gran Gatsby</titulo>
<autor>F. Scott Fitzgerald</autor>
<anio>1925</anio>
</libro>
<libro>
<titulo>1984</titulo>
<autor>George Orwell</autor>
<anio>1949</anio>
</libro>
</libreria>
En este ejemplo, el documento XML está bien formado porque cumple con las reglas de sintaxis, como el uso de etiquetas de apertura y cierre, el uso de comillas para delimitar los valores de atributos y el uso de entidades para los caracteres especiales.
Además, el documento es válido si se valida contra un esquema XML llamado «libreria.xsd» que define la estructura y restricciones para los elementos y atributos del documento. La declaración del espacio de nombres, xmlns, y la referencia al esquema en el atributo xsi:schemaLocation son utilizados para asociar el documento con el esquema y validar su conformidad.
Es importante mencionar que los detalles exactos de un documento válido dependerán del esquema o DTD específico utilizado y las reglas definidas en él.
Comprueba tu aprendizaje
Corrige el siguiente documento XML para que esté bien formado:
<?xml version="1.0" encoding="UTF-8"
<catalogo>
<producto>
<nombre>Camisa de manga corta</nombre>
<precio moneda="euros">19.99<precio>
<disponible>true</disponible>
<producto>
<producto>
<nombre>Pantalón vaquero</nombre>
<precio moneda="euros" moneda="dolar">29.99</precio>
<disponible>false</disponible>
</producto>
<producto>
<nombre moneda="euros">Zapatos de cuero</nombre>
<precio>79.99</precio>
<disponible>true</disponible>
</producto>
</catalogo>
Correcciones realizadas:
- Se cerró la etiqueta de declaración XML.
- Se cerró la etiqueta de cierre
</precio>en la primera entrada de producto. - Se corrigió la etiqueta de apertura
<producto>que no estaba cerrada en la segunda entrada. - Se eliminó el atributo repetido moneda, debe ser único en cada elemento.
- Se agregó la etiqueta de cierre
</producto>al final de la segunda entrada de producto.
El documento corregido queda de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<producto>
<nombre>Camisa de manga corta</nombre>
<precio moneda="euros">19.99</precio>
<disponible>true</disponible>
</producto>
<producto>
<nombre>Pantalón vaquero</nombre>
<precio moneda="dolar">29.99</precio>
<disponible>false</disponible>
</producto>
<producto>
<nombre>Zapatos de cuero</nombre>
<precio moneda="euros">79.99</precio>
<disponible>true</disponible>
</producto>
</catalogo>
Ahora el documento XML está bien formado y listo para ser procesado correctamente.
Veamos ahora los espacios de nombres en XML y cómo nos permiten organizar y distinguir elementos con el mismo nombre en diferentes contextos.