- Diseña el esquema XSD para el siguiente archivo XML con las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8"?> <alumno dni="12345678A" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="alumno.xsd"> <nombre>Juan Garcia</nombre> <direccion> <calle>Avenida de la Fuente</calle> <numero>6</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924555555</telefono> <telefono>658741236</telefono> </alumno>
- El elemento número será un entero entre 0 y 500.
- El elemento teléfono será un entero y dicho elemento podrá aparecer entre 0 y 5 veces.
- El atributo dni será una plantilla de 8 números y una letra mayúscula.
- Diseña el esquema XSD para el siguiente archivo XML con las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8"?> <alumnos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="alumnos.xsd"> <alumno dni="11111111A"> <nombre>Juan Andrés</nombre> <direccion> <calle>Avenida de la Fuente</calle> <numero>6</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924555555</telefono> </alumno> <alumno dni="22222222B"> <nombre>Jose Sanchez</nombre> <direccion> <calle>Calle Ancha</calle> <numero>3</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <direccion> <calle>Calle Mayor</calle> <numero>33</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924550000</telefono> </alumno> </alumnos>
- El elemento número será un entero entre 0 y 500.
- El elemento teléfono será un entero y dicho elemento podrá aparecer entre 0 y 5 veces.
- El elemento dirección podrá aparecer 1 o 2 veces.
- El elemento provincia sólo podrá contener Badajoz o Cáceres. Modifica el alumno Juan Andrés para que su provincia sea Cáceres.
- El atributo dni será una plantilla de 8 números y una letra mayúscula.
- Diseña el esquema XSD para el siguiente archivo XML con las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8"?> <heladeria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="heladeria.xsd"> <helado fabricación="2015-01-30"> <chocolate>250</chocolate> <turron>300</turron> </helado> <helado fabricación="2015-01-30"> <fresa>500</fresa> <vainilla>200</vainilla> </helado> </heladeria>
- Como primer elemento de helado podemos elegir, o bien chocolate, o bien fresa (pero no los dos al mismo tiempo). Estos elementos almacenarán la cantidad en gramos (como un número entero entre 0 y 1000).
- Como segundo elemento de helado se podrá elegir uno de los siguientes vainilla, turrón o nata. Estos elementos almacenarán la cantidad en gramos (como un número entero entre 0 y 1000).
- El atributo fabricación indicará la fecha en la que se fabricó el mismo mediante el tipo de dato fecha.
- Diseña el esquema XSD para el siguiente archivo XML con las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8"?> <heladeria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="heladeria.xsd"> <helado> <fresa /> <chocolate /> </helado> <helado> <vainilla /> <chocolate /> </helado> </heladeria>
- El helado sólo puede ser de fresa y chocolate, o bien, de vainilla y chocolate.
- Los sabores serán elementos vacíos.
- Diseña el esquema XSD para el siguiente archivo XML con las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8" ?> <faq> <info> <titulo>WINDOWS98? SOLO SI ME OBLIGAN!</titulo> <autor>Fernando Damián Lorenzo García</autor> <email>Fer@yahoo.es </email> <version>1.0</version> <fecha>1999-05-01</fecha> </info> <part> <q> <qtext>¿Por qué tengo que instalar W95?</qtext> <a> A mi también me parece una buena pregunta.</a> </q> <q> <qtext>Y de que me vale?</qtext> <a>Otra ingeniosa pregunta.</a> </q> </part> </faq>
- El elemento versión será una plantilla que permita números seguidos de un punto y seguido de más números.
- El elemento fecha será de tipo fecha.
- El elemento faq está compuesto por solo un elemento info y por uno o más elementos part.
- El elemento info está compuesto por un titulo, un autor, y puede tener o no email, versión y fecha.
- El elemento part puede tener uno o más elementos q.
- El elemento q está compuesto por los elementos qtext y a que son obligatorios.
- Diseña el esquema XSD para el siguiente archivo XML y las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8" ?> <libreria> <codigo>1263</codigo> <direccion>Juan de Juni, 31</direccion> <telefono>983555555</telefono> <propietario> <nombre>Juanito</nombre> <telefono>656222111</telefono> </propietario> <libro> <titulo>Cien años de soledad</titulo> <autor>Gabriel García Márquez</autor> <formato>Rústica</formato> <publicacion>1967</publicacion> <precio>23,5</precio> </libro> </libreria>
- La librería tiene obligatoriamente un código, una dirección, un teléfono, un propietario, y uno o más libros.
- El código será un número entero entre 1000 y 9999.
- El propietario tiene un nombre y puede tener ninguno o varios teléfonos.
- El teléfono sólo se definirá una vez en el esquema, repitiendo su uso. Su contenido será una plantilla de 9 números.
- Cada libro está formado por los elementos título, autor, puede tener o no formato, publicación, precio, cantidad.
- El formato podrá ser rústica, tapa blanda o tapa dura.
- Diseña el esquema XSD para el siguiente archivo XML y las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8" ?> <pagos> <nombre>Javier Toledano</nombre> <fechaNacimiento>1979-02-04</fechaNacimiento> <hora>23:55:15</hora> <hora>23:55:15</hora> <precio>123.56</precio> <cantidad>678</cantidad> <pagado>true</pagado> </pagos>
Añade a los elementos anteriores las siguientes propiedades:
- El elemento nombre puede aparecer como máximo 3 veces y su valor por defecto es "A".
- El elemento hora puede aparecer un numero infinito de veces.
- El valor por defecto de pagado es false.
- La cantidad es fija y es siempre 678.
Añade los atributos siguientes:
- Atributo dni requerido obligatoriamente y con una longitud máxima de 10 caracteres en el elemento nombre.
- Atributo edad entre 16 y 24 años, en el elemento FechaNacimiento.
- Diseña el esquema XSD para el documento XML y las siguientes consideraciones:
<?xml version="1.0" encoding="UTF-8"?> <discos> <grupo nom="muse"> <nombre>MUSE</nombre> <miembro>Matthew Bellamy</miembro> <miembro>Dominic Howard</miembro> <miembro>Chris Wolstenholme</miembro> <nacionalidad>Alemania</nacionalidad> <web>www.ponprecioamimusica.org/muse</web> <email> midireccion@ponprecioamimusica.org</email> </grupo> <grupo nom="feeder"> <nombre>FEEDER</nombre> <miembro>Grant Nicholas</miembro> <miembro>Taka Hirose</miembro> <miembro>Jon Henry Lee</miembro> <calle>Calle no existe n2</calle> <localidad>tampoco existe</localidad> </grupo> <grupo nom="nvnud"> <nombre>No vendo ni un disco</nombre> <miembro>Marta</miembro> <miembro>Ramon</miembro> <miembro>Pedro</miembro> </grupo> <disco precio="12.80"> <interprete nom="muse"/> <titulo>Showbiz</titulo> <discografica>Sony</discografica> <anio>2000</anio> <stock>20</stock> </disco> <disco precio="19.90"> <interprete nom="feeder"/> <titulo>Echo Park</titulo> <discografica>Sony</discografica> <anio>1980</anio> <stock>5</stock> </disco> <disco precio="15.50"> <interprete nom="muse"/> <titulo>Origin of symmetry</titulo> <discografica>SIRE</discografica> <anio mes="enero">2007</anio> <stock>20</stock> </disco> <disco precio="13.20"> <interprete nom="feeder"/> <titulo>Comfort In Sound</titulo> <anio>2010</anio> <stock>27</stock> </disco> <disco precio="4.90"> <interprete nom="nvnud"/> <titulo>Esto suena realmente mal</titulo> <anio>2011</anio> <stock>200</stock> </disco> </discos>
- El elemento nacionalidad es opcional.
- El elemento discográfica solo puede tener los valores Sony, CBS , SIRE, OTRAS, en caso de no aparecer es CBS su valor predeterminado.
- El elemento anio, obligatoriamente tiene 4 dígitos. Opcionalmente puede tener un atributo mes que puede tener los valores de enero a diciembre. No tiene valor por defecto.
- El elemento grupo opcionalmente puede tener, o bien una dirección web y una dirección de correo electrónico, o bien una dirección postal formada por calle y localidad (pero no ambas a la vez). La dirección de correo y la página deben pertenecer al dominio "ponprecioamimusica.org".
- Los discos tiene un atributo obligatorio precio que debe ser decimal con dos decimales.
- Los campos de texto no pueden superar ninguno los 50 caracteres (elementos que no estén ya restringidos por otra regla).
- El elemento stock debe tener un número entero y mayor o igual a 0. El stock máximo es 200.
Soluciones de algunos de los ejercicios
Otros ejercicios
Ejercicios prácticos de XSD escrito por Rafa Morales está protegido por una licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional