
Después de formarte con el curso de XML y el tutorial de XSD, es importante practicar tus habilidades con ejercicios XSD. En esta sección encontrarás una recopilación de ejercicios XSD que incluyen prácticas resueltas y ejercicios tipo examen. Estos recursos están diseñados para ayudarte a consolidar tus conocimientos, ofreciendo tanto ejemplos detalladamente resueltos como retos para poner a prueba tus habilidades y practicar para un examen de Lenguajes de Marcas y Sistemas de Gestión de la Información.
1. Ejercicios XSD: prácticas resueltas
Con este conjunto de ejercicios XSD prácticos resueltos podrás poner en práctica tus habilidades en XSD y comprobar si un archivo XML cumple las reglas definidas en XML Schema.
1.1. Ejercicio resuelto: Catálogo de libros
Dado el siguiente archivo XML, crea un archivo XSD (XML Schema) que defina la estructura y restricciones del documento XML. A continuación, utiliza una herramienta de validación de XML con XSD para verificar si el archivo XML cumple con las reglas definidas en el XSD.
Archivo XML (documento.xml):
<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro>
<titulo>El Gran Gatsby</titulo>
<autor>F. Scott Fitzgerald</autor>
<anio>1925</anio>
<genero>Ficción</genero>
</libro>
<libro>
<titulo>1984</titulo>
<autor>George Orwell</autor>
<anio>1949</anio>
<genero>Distopía</genero>
</libro>
</libreria>
Solución:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="libreria">
<xs:complexType>
<xs:sequence>
<xs:element name="libro" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="titulo" type="xs:string"/>
<xs:element name="autor" type="xs:string"/>
<xs:element name="anio" type="xs:integer"/>
<xs:element name="genero" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Puedes utilizar VS Code con una extensión como «XML Tools» como hemos visto en la sección anterior para validar el documento o cualquiera de las otras opciones mencionadas.
1.2. Ejercicio resuelto: Lista de estudiantes
Dado un archivo XML llamado «datos.xml» que contiene información sobre estudiantes de una universidad. Crea un archivo XSD (XML Schema) que defina la estructura y las restricciones del documento XML. A continuación, valida el archivo XML utilizando el XSD para asegurarte de que cumple con las reglas especificadas.
Archivo XML (datos.xml):
<?xml version="1.0" encoding="UTF-8"?>
<universidad>
<estudiante>
<nombre>Juan Pérez</nombre>
<edad>20</edad>
<carrera>Ingeniería Informática</carrera>
</estudiante>
<estudiante>
<nombre>María López</nombre>
<edad>22</edad>
<carrera>Arquitectura</carrera>
</estudiante>
</universidad>
Solución:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="universidad">
<xs:complexType>
<xs:sequence>
<xs:element name="estudiante" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="edad" type="xs:integer"/>
<xs:element name="carrera" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
1.3. Ejercicio resuelto: Productos de tienda online
Dado un archivo XML llamado «productos.xml» que contiene información sobre productos de una tienda en línea. Crea un archivo XSD (XML Schema) que defina la estructura y las restricciones del documento XML. A continuación, valida el archivo XML utilizando el XSD para asegurarte de que cumple con las reglas especificadas.
Archivo XML (productos.xml):
<?xml version="1.0" encoding="UTF-8"?>
<tienda>
<producto>
<nombre>Teléfono móvil</nombre>
<precio>299.99</precio>
<cantidad>10</cantidad>
</producto>
<producto>
<nombre>Ordenador portátil</nombre>
<precio>899.99</precio>
<cantidad>5</cantidad>
</producto>
</tienda>
Solución:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tienda">
<xs:complexType>
<xs:sequence>
<xs:element name="producto" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="precio" type="xs:decimal"/>
<xs:element name="cantidad" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
1.4. Ejercicio resuelto: Empleados
Dado un archivo XML llamado «empresa.xml» que contiene información sobre empleados de una empresa. Crea un archivo XSD (XML Schema) que defina la estructura y las restricciones del documento XML. A continuación, valida el archivo XML utilizando el XSD para asegurarte de que cumple con las reglas especificadas.
Archivo XML (empresa.xml):
<?xml version="1.0" encoding="UTF-8"?>
<empresa nombreEmpresa="TechCorp">
<empleado id="1">
<nombre>John</nombre>
<apellido>Doe</apellido>
<fechaNacimiento>1990-05-15</fechaNacimiento>
<salario>50000.00</salario>
<activo>true</activo>
<horaEntrada>09:00:00</horaEntrada>
</empleado>
<empleado id="2">
<nombre>Jane</nombre>
<apellido>Smith</apellido>
<fechaNacimiento>1985-08-20</fechaNacimiento>
<salario>60000.50</salario>
<activo>false</activo>
<horaEntrada>08:30:00</horaEntrada>
</empleado>
</empresa>
Archivo XSD (empresa.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="empresa">
<xs:complexType>
<xs:sequence>
<xs:element name="empleado" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="apellido" type="xs:string"/>
<xs:element name="fechaNacimiento" type="xs:date"/>
<xs:element name="salario" type="xs:decimal"/>
<xs:element name="activo" type="xs:boolean"/>
<xs:element name="horaEntrada" type="xs:time"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="nombreEmpresa" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
Utiliza estos archivos como base para realizar la validación del XML con el XSD, asegurándote de que la estructura y los tipos de datos cumplan con las reglas especificadas en el esquema.
2. Ejercicios XSD: ejemplos tipo examen
2.1. Ejemplo examen XSD: Crea un archivo XML basado en el XSD proporcionado
Utiliza el XSD proporcionado para crear un archivo XML que cumpla con la estructura definida en el XSD. El XSD especifica la estructura para un documento XML y espera información sobre al menos tres lenguajes de programación diferentes.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="programming_library">
<xs:complexType>
<xs:sequence>
<xs:element name="language" minOccurs="3" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="creator" type="xs:string"/>
<xs:element name="year_created" type="xs:integer"/>
<xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Ejemplo de información que puede contener:
| Lenguaje | Creador | Año de creación | Descripción |
| Python | Guido van Rossum | 1991 | Python is a high-level, interpreted, and general-purpose programming language that emphasizes readability with its notable use of significant whitespace. |
| Java | James Gosling | 1995 | Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. |
| C++ | Bjarne Stroustrup | 1985 | C++ is a general-purpose programming language created as an extension of the C programming language, or «C with Classes». |
2.2. Ejemplo examen XSD: Crea un XSD para un XML de catálogo de libros
Desarrolla un XSD que coincida con la estructura del archivo XML proporcionado, que representa un catálogo de libros. El archivo XML proporcionado contiene información sobre varios libros, incluyendo sus títulos, autores, años de publicación y editoriales. Tu tarea es crear un XSD que especifique la estructura y las restricciones para este XML de catálogo de libros.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book>
<title>Clean Code: A Handbook of Agile Software Craftsmanship</title>
<author>Robert C. Martin</author>
<year>2008</year>
<publisher>Prentice Hall</publisher>
</book>
<book>
<title>Introduction to Algorithms</title>
<author>Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein</author>
<year>2009</year>
<publisher>MIT Press</publisher>
</book>
<book>
<title>Design Patterns: Elements of Reusable Object-Oriented Software</title>
<author>Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides</author>
<year>1994</year>
<publisher>Addison-Wesley</publisher>
</book>
<book>
<title>Effective Java</title>
<author>Joshua Bloch</author>
<year>2018</year>
<publisher>Addison-Wesley</publisher>
</book>
</catalog>
2.3. Ejemplo examen XSD: Crea un XSD para un catálogo de componentes hardware
Desarrolla un XSD que coincida con la estructura del archivo XML proporcionado, que representa un catálogo de componentes de hardware. El archivo XML proporcionado contiene información sobre varios elementos de hardware, incluyendo sus IDs, tipos, marcas, modelos y especificaciones. Tu tarea es crear un XSD que especifique la estructura y las restricciones para este XML de catálogo de hardware.
<?xml version="1.0" encoding="UTF-8"?>
<hardwareCatalog>
<item>
<id>1</id>
<type>Processor</type>
<brand>Intel</brand>
<model>Core i7-9700K</model>
<specifications>8-Core, 3.6 GHz</specifications>
</item>
<item>
<id>2</id>
<type>RAM</type>
<brand>Corsair</brand>
<model>Vengeance LPX 16GB</model>
<specifications>DDR4, 3200MHz</specifications>
</item>
<item>
<id>3</id>
<type>Graphics Card</type>
<brand>NVIDIA</brand>
<model>GeForce RTX 3080</model>
<specifications>10GB GDDR6X</specifications>
</item>
<item>
<id>4</id>
<type>Hard Drive</type>
<brand>Western Digital</brand>
<model>WD Blue 1TB</model>
<specifications>SATA, 7200 RPM</specifications>
</item>
<item>
<id>5</id>
<type>Motherboard</type>
<brand>ASUS</brand>
<model>ROG Strix Z390-E</model>
<specifications>Socket LGA1151, ATX</specifications>
</item>
</hardwareCatalog>
2.4. Ejemplo examen XSD: Crea un archivo XML basado en el XSD proporcionado
Utiliza el XSD proporcionado para crear un archivo XML que cumpla con la estructura definida en el XSD. El XSD especifica la estructura para un documento XML y espera información sobre al menos tres tipos diferentes de árboles.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tree_types">
<xs:complexType>
<xs:sequence>
<xs:element name="tree" minOccurs="3" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="scientific_name" type="xs:string"/>
<xs:element name="year_planted" type="xs:date"/>
<xs:element name="height_in_meters" type="xs:integer"/>
<xs:element name="description" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Información de ejemplo:
| Tree | Name | Scientific Name | Year Planted | Height in Meters | Description |
|---|---|---|---|---|---|
| 1 | Oak | Quercus | 1990-05-15 | 15 | The oak is a large deciduous tree. |
| 2 | Pine | Pinus | 1985-08-20 | 10 | The pine is an evergreen coniferous tree. |
| 3 | Maple | Acer | 2000-11-30 | 12 | The maple is known for its colorful autumn leaves. |
2.5. Ejemplo examen XSD: Crea un XSD para un sistema de reservas
Desarrolla un XSD que coincida con la estructura del archivo XML proporcionado que representa un sistema de reservas para alojamientos. El archivo XML proporcionado contiene información sobre varias reservas, incluidos los IDs de reserva, tipos de alojamiento, fechas de check-in y check-out, y detalles de los huéspedes. Crea un XSD que especifique la estructura y las restricciones para este XML de reservas de alojamiento.
<?xml version="1.0" encoding="UTF-8"?>
<accommodationReservations>
<reservation>
<id>1</id>
<accommodationType>Hotel</accommodationType>
<checkInDate>2024-08-15</checkInDate>
<checkInTime>15:00:00</checkInTime>
<checkOutDate>2024-08-20</checkOutDate>
<checkOutTime>11:00:00</checkOutTime>
<guest>
<firstName>John</firstName>
<lastName>Doe</lastName>
<email>john.doe@example.com</email>
</guest>
</reservation>
<reservation>
<id>2</id>
<accommodationType>Vacation Rental</accommodationType>
<checkInDate>2024-09-10</checkInDate>
<checkInTime>14:00:00</checkInTime>
<checkOutDate>2024-09-15</checkOutDate>
<checkOutTime>10:30:00</checkOutTime>
<guest>
<firstName>Jane</firstName>
<lastName>Smith</lastName>
<email>jane.smith@example.com</email>
</guest>
</reservation>
<!-- Add more reservation entries as needed -->
</accommodationReservations>
Esperamos que este tutorial XSD, junto con los ejercicios XSD prácticos asociados te haya sido útil para validar un documento y comprobar si un archivo XML cumple las reglas definidas en XML Schema. Te recordamos que este tutorial de XSD se incluye dentro de una serie de tutoriales en los que estudiamos diversos aspectos del lenguaje XML y sus tecnologías asociadas. ¡Continua tu aprendizaje con los tutoriales de XPath o DTD!