Ejemplo de XSD Usando un XML con Etiquetas y Atributos

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

  1. Elemento Raíz (library): Definimos el elemento raíz library como un elemento complejo que contiene una secuencia de elementos book.
  2. Elemento book: El elemento book se define como un elemento complejo que contiene una secuencia de elementos title, author, year, y price.
  3. 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).
  1. 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.

close up photo of programming of codes
Photo by luis gomes on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad