Documento XML
Consideremos el siguiente documento XML que describe un catálogo de productos con información sobre los productos y sus detalles. Tu tarea es crear un archivo XSD que valide la estructura de este XML.
<catalog>
<product id="P001">
<name>Laptop</name>
<description>15 inch, 16GB RAM</description>
<price currency="USD">1200.00</price>
<availability>in stock</availability>
</product>
<product id="P002">
<name>Smartphone</name>
<description>6 inch, 128GB Storage</description>
<price currency="USD">800.00</price>
<availability>out of stock</availability>
</product>
<product id="P003">
<name>Tablet</name>
<description>10 inch, 64GB Storage</description>
<price currency="USD">600.00</price>
<availability>in stock</availability>
</product>
</catalog>
Instrucciones para Crear el XSD
- Define el elemento raíz
catalog
. - Cada
product
debe tener un atributoid
de tipo string. - Cada
product
debe contener los elementosname
(string),description
(string),price
(decimal con atributocurrency
de tipo string) yavailability
(string).
Solución en XSD
A continuación se presenta una posible solución en XSD para validar el documento XML anterior:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Definición del elemento raíz -->
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element name="product" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="price">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="currency" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="availability" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Explicación de la Solución
- Elemento
catalog
: Es el elemento raíz que contiene múltiplesproduct
. - Elemento
product
: Cadaproduct
tiene un atributoid
de tipo string y contiene los elementosname
(string),description
(string),price
(decimal con atributocurrency
de tipo string y requerido) yavailability
(string).
Este XSD valida la estructura del XML, asegurando que todos los elementos y atributos estén presentes y tengan los tipos de datos correctos.