- 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
