El Lenguaje de Definición de Esquema XML (XSD, por sus siglas en inglés) permite definir la estructura y los tipos de datos que un documento XML puede contener. En este artículo, presentaremos un ejemplo práctico de cómo crear un archivo XSD para validar un documento XML con varias etiquetas y atributos.
Ejemplo de Documento XML
Primero, consideremos un documento XML sencillo que describe información sobre libros en una biblioteca.
<library>
<book id="1" category="fiction">
<title>1984</title>
<author>George Orwell</author>
<year>1949</year>
<price>19.84</price>
</book>
<book id="2" category="non-fiction">
<title>Sapiens</title>
<author>Yuval Noah Harari</author>
<year>2011</year>
<price>29.99</price>
</book>
</library>
En este XML, cada libro tiene un id
y una category
como atributos, y contiene los elementos title
, author
, year
, y price
.
Definiendo el XSD
A continuación, creamos un archivo XSD para validar la estructura del XML anterior.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Definición del elemento raíz -->
<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:element name="author" type="xs:string"/>
<xs:element name="year" type="xs:integer"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
<xs:attribute name="category" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Explicación del XSD
- Elemento Raíz (
library
): Definimos el elemento raízlibrary
como un elemento complejo que contiene una secuencia de elementosbook
. - Elemento
book
: El elementobook
se define como un elemento complejo que contiene una secuencia de elementostitle
,author
,year
, yprice
. - Elementos Internos:
title
: Es una cadena (xs:string
).author
: Es una cadena (xs:string
).year
: Es un entero (xs:integer
).price
: Es un decimal (xs:decimal
).
- Atributos del
book
:
id
: Es un atributo requerido (use="required"
) y debe ser un entero (xs:integer
).category
: Es un atributo requerido (use="required"
) y debe ser una cadena (xs:string
).
Uso del XSD
Este esquema puede ser utilizado para validar que los documentos XML cumplen con la estructura especificada. La validación garantiza que todos los elementos y atributos están presentes y tienen los tipos de datos correctos.
Validación del XML con el XSD
Para validar un documento XML utilizando un archivo XSD, se pueden usar varias herramientas y bibliotecas, dependiendo del entorno de programación. Aquí hay un ejemplo usando Python y la biblioteca lxml
.
Código de Validación en Python
from lxml import etree
xml_file = 'library.xml'
xsd_file = 'library.xsd'
# Parsear XML y XSD
xml_doc = etree.parse(xml_file)
xsd_doc = etree.parse(xsd_file)
# Crear esquema XSD
xsd = etree.XMLSchema(xsd_doc)
# Validar XML
if xsd.validate(xml_doc):
print("El documento XML es válido.")
else:
print("El documento XML no es válido.")
for error in xsd.error_log:
print(error)
Conclusión
Definir un XSD para un documento XML es crucial para garantizar la integridad y consistencia de los datos. En este ejemplo, hemos visto cómo crear un archivo XSD que valida un documento XML que describe libros, con etiquetas y atributos específicos. La validación mediante XSD es una práctica recomendada para aplicaciones que dependen de datos estructurados en XML, asegurando que los documentos cumplan con las especificaciones necesarias antes de su procesamiento.