Ejer Cici Os
Ejer Cici Os
Ejer Cici Os
Ejercicios: Unidad 7
XML, Extensible Markup Language (lenguaje de marcas extensible).
W3C DTD/XML Schema.
1. Determina y corrige el/los error/errores que provoca que el fichero XML no est bien
formado.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE etiqueta[
<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>
<nombre>Pepe Garca</nombre>
<calle>C/Ronda, 3</calle>
<pais>Espaa<pais>
<codigo>18465</codigo>
</etiqueta>
2. Tras corregir los errores del ejercicio 1.- elabora su XML Schema (xsd).
3. Explica esta lnea y realiza su equivalente en XML Schema (xsd)
<!ELEMENT receta (titulo, ingrediente+, procedimiento+, tiempo?)>
4. Determina y corrige el/los error/errores que provoca que el fichero XML no sea vlido
respecto al ejemplo-agenda.dtd:
Fichero: ejemplo-agenda.dtd
<!ELEMENT agenda (persona)+>
<!ELEMENT persona (nombre, tlf)>
<!ATTLIST persona id #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT tlf (#PCDATA)>
Fichero: prueba.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE agenda SYSTEM "ejemplo-agenda.dtd">
<agenda>
<persona>
<nombre>Ricardo Borriquero</nombre>
<tlf>951345678</tlf>
</persona>
<persona>
<nombre>Eva Risto</nombre>
<tlf>955837659</tlf>
</persona>
</agenda>
5. Tras corregir los errores del ejercicio 4.- elabora su XML Schema (xsd).
6. Qu lneas tengo que aadir en la parte de definicin del documento (DTD interno)
para que el XML sea vlido?
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE lista_de_personas [
14. Construye el XML Schema (sxd) que se ajuste a la siguiente jerarqua de datos (XML
en forma de rbol) (Cancin) del ejercicios 13.15. Ampla el DTD del ejercicio 13.- para representar la estructura de un CD completo.
Para ello debes crear un nuevo elemento cd que contenga:
Un atributo titulo que tome como valor el ttulo genrico del CD
Dos elementos:
o Un elemento songs que a su vez puede contener uno o varios elementos
song con la estructura que definiste en el apartado anterior.
o Un elemento fecha que sea de carcter EMPTY pero que tenga tres
atributos: dia, mes y anio para indicar la fecha de salida al mercado del
CD
16. Ampla el XSD del ejercicio 14.- para representar la estructura de un CD completo.
Para ello debes crear un nuevo elemento cd que contenga:
Un atributo titulo que tome como valor el ttulo genrico del CD
Dos elementos:
o Un elemento songs que a su vez puede contener uno o varios elementos
song con la estructura que definiste en el apartado anterior.
o Un elemento fecha que sea de carcter EMPTY pero que tenga tres
atributos: dia, mes y anio para indicar la fecha de salida al mercado del
CD
17. Escribe el fichero xhtml.dtd:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html SYSTEM "xhtml.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
20. Elabora el correspondiente XML Schema (xsd) correspondiente al ejercicios 19.21. Determina y corrige el/los error/errores que provoca que el fichero XML no sea vlida
respecto al DTD interno:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE libro [
<!ELEMENT libro ( titulo | disponible | autor | formato | publicacion | precio |
descuento | enlacelibro )* >
<!ELEMENT autor ( #PCDATA ) >
<!ELEMENT descuento EMPTY >
<!ATTLIST descuento cantidad CDATA #REQUIRED >
<!ELEMENT disponible EMPTY >
<!ATTLIST disponible tiempo CDATA #REQUIRED >
<!ATTLIST disponible unidad CDATA #REQUIRED >
<!ELEMENT enlacelibro EMPTY >
<!ATTLIST enlacelibro href CDATA #REQUIRED >
<!ELEMENT formato ( #PCDATA ) >
<!ELEMENT precio EMPTY >
<!ATTLIST precio cantidad CDATA #REQUIRED >
<!ATTLIST precio moneda CDATA #REQUIRED >
<!ELEMENT publicacion ( #PCDATA ) >
<!ELEMENT titulo ( #PCDATA ) >
]>
<libro>
<titulo> Cien aos de soledad </titulo>
<disponible tiempo="24"></disponible>
<autor> Gabriel Garca Mrquez </autor>
<formato> Rstica </formato>
<publicacion>1967 </publicacion>
<precio cantidad="39.99"></precio>
<descuento cantidad="5"></descuento>
<enlacelibro enlace="/exec/ISBN/84-473-0619-4"></enlacelibro>
</libro>
22. Tras corregir los errores del ejercicio 21.- elabora su XML Schema (xsd).
23. Elabora un XML vlido para este DTD:
<!ELEMENT Libro (Titulo, Contenido, Copyright)>
<!ATTLIST Libro id CDATA #REQUIRED>
<!ELEMENT Titulo (#PCDATA)>
<!ELEMENT Contenido (Capitulo, Separacion?)+>
<!ELEMENT Capitulo (Tema, Seccion+)>
<!ATTLIST Capitulo materia CDATA #IMPLIED>
<!ELEMENT Tema (#PCDATA)>
<!ELEMENT Seccion (#PCDATA)>
<!ATTLIST Seccion apartados CDATA #REQUIRED dificil CDATA #IMPLIED>
<!ELEMENT Separacion EMPTY>
<!ELEMENT Copyright (#PCDATA)>
24. Elabora el XML Schema (xsd) equivalente al DTD del ejercicio 23.25. Qu lneas tengo que aadir en la parte de definicin del documento (DTD interno)
para que el XML sea vlido?
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE lista_de_personas [
]
<!ELEMENT nombre (#PCDATA) >
<!ELEMENT fechanacimiento (#PCDATA) >
Letras (dtd_02.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE letras [
<!ELEMENT letras (letra)>
<!ELEMENT letra (#PCDATA)>
]>
<letras>
<letra>m</letra>
<letra>uve doble</letra>
</letras>
Colores (dtd_03.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE colores [
<!ELEMENT colores (color*)>
<!ELEMENT color (#PCDATA)>
]>
<colores>
<color>azul marino</color>
negro
<color>amarillo</color>
</colores>
Flores (dtd_04.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE flores [
<!ELEMENT flores (flor+)>
<!ELEMENT flor (#PCDATA)>
]>
<flores>
</flores>
Animales (dtd_05.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE animales [
<!ELEMENT animales (animal*)>
<!ELEMENT animal (#PCDATA)>
]>
<animales>
<perro>Caniche</perro>
<gato>Siams</gato>
</animales>
Escritores (dtd_06.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE escritores [
<!ELEMENT escritores (escritor*)>
<!ELEMENT escritor (nombre, nacimiento)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT nacimiento (#PCDATA)>
]>
<escritores>
<escritor>
<nombre>Mario Vargas LLosa</nombre>
<nacimiento>28 de marzo de 1936</nacimiento>
</escritor>
<escritor>
<nacimiento>1 de abril de 1929</nacimiento>
<nombre>Milan Kundera</nombre>
</escritor>
</escritores>
Msicos (dtd_07.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE musicos [
<!ELEMENT musicos (musico*)>
<!ELEMENT musico ((nombre | apodo), fechaNacimiento)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apodo (#PCDATA)>
<!ELEMENT fechaNacimiento (#PCDATA)>
]>
<musicos>
<musico>
<nombre>Antonio Vivaldi</nombre>
<apodo>El cura pelirrojillo</apodo>
<fechaNacimiento>4 de marzo de 1678</fechaNacimiento>
</musico>
<musico>
<nombre>Johann Sebastian Bach</nombre>
<apodo>El viejo peluca</apodo>
<fechaNacimiento>21 de marzo de 1685</fechaNacimiento>
</musico>
</musicos>
30. Elabora tras realizar las correcciones de los XML del ejercicio 29.- los pertinentes
XML Schema (sxd) equivalentes a sus DTD.
31. DTD - Elementos sin atributos - Corregir errores en la DTD
Los siguientes documentos no son vlidos porque contienen errores (los errores estn en
la DTD interna). Corrija los errores y compruebe con XML Editor que ya son documentos
vlidos. Casi siempre habr varias maneras de corregir la DTD, intente elegir la ms
sencilla.
Marcadores (dtd_11.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE favoritos [
<!ELEMENT favoritos (marcador)>
<!ELEMENT marcador (nombre, uri)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT uri (#PCDATA)>
]>
<marcadores>
<marcador>
<nombre>W3C</nombre>
<uri>http://www.w3.org/</uri>
</marcador>
<marcador>
<nombre>Web Hypertext Application Technology Working Group
(WHATWG)</nombre>
<uri>http://www.whatwg.org/</uri>
</marcador>
</marcadores>
Efemrides (dtd_12.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE efemerides [
<!ELEMENT efemerides (efemeride)>
<!ELEMENT efemeride (fecha, hecho)>
]>
<efemerides>
<efemeride>
<fecha>20 de julio de 1969</fecha>
<hecho>Llegada del hombre a la Luna</hecho>
</efemeride>
<efemeride>
<fecha>12 de octubre de 1492</fecha>
<hecho>Llegada de Coln a Amrica</hecho>
</efemeride>
<efemeride>
<fecha>6 de abril de 1909</fecha>
<hecho>llegada de Robert Peary al Polo Norte</hecho>
</efemeride>
</efemerides>
Aeropuertos (dtd_13.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aeropuertos [
<!ELEMENT aeropuertos (aeropuerto*)>
<!ELEMENT aeropuerto (nombre, cerrado)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT cerrado (#PCDATA)>
]>
<aeropuertos>
<aeropuerto>
<nombre>Berln Schnefeld (SFX)</nombre>
</aeropuerto>
<aeropuerto>
<nombre>Berln Tempelhof (THF)</nombre>
<cerrado />
</aeropuerto>
</aeropuertos>
Vuelos (dtd_14.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vuelos [
<!ELEMENT vuelos (vuelo*)>
<!ELEMENT vuelo (origen, destino)>
<!ELEMENT origen (#PCDATA)>
<!ELEMENT destino (#PCDATA)>
]>
<vuelos>
<vuelo>
<origen>Valencia (VLC)</origen>
<destino>Londres Heathrow (LHR)</destino>
</vuelo>
<vuelo>
<destino>Berln Schnefeld (SFX)</destino>
<origen>Paris Charles de Gaulle (CDG)</origen>
</vuelo>
</vuelos>
Pases (dtd_16.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paises [
<!ELEMENT pais (nombre, unionEuropea, otan)>
<!ELEMENT nombre EMPTY>
<!ELEMENT unionEuropea EMPTY>
]>
<paises>
<pais>
<nombre>Espaa</nombre>
<unionEuropea />
<otan />
</pais>
<pais>
<nombre>Noruega</nombre>
<otan />
</pais>
<pais>
<nombre>Austria</nombre>
<unionEuropea />
</pais>
</paises>
Contabilidad (dtd_18.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contabilidad [
<!ELEMENT contabilidad ((ingreso | gasto)*)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT cantidad (#PCDATA)>
<!ELEMENT concepto (#PCDATA)>
]>
<contabilidad>
<apunte>
<ingreso />
<fecha>24 de febrero de 2011</fecha>
<cantidad>1800,00 </cantidad>
<concepto>Salario</concepto>
</apunte>
<apunte>
<gasto />
<fecha>28 de febrero de 2011</fecha>
<cantidad>74,25 </cantidad>
<concepto>Recibo luz</concepto>
</apunte>
</contabilidad>
Mensajes (dtd_19.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mensajes [
<!ELEMENT mensajes (mensaje)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT para (#PCDATA)>
<!ELEMENT hora (#PCDATA)>
<!ELEMENT texto (#PCDATA)>
<!ELEMENT strong (#PCDATA)>
]>
<mensajes>
<mensaje>
<de>Pepe ([email protected])</de>
<para>Juan ([email protected])</para>
<hora>28/02/2011 17:48:23,61</hora>
<texto>Hola, Juan, qu haces?</texto>
</mensaje>
<mensaje>
<de>Juan ([email protected])</de>
<para>Pepe ([email protected])</para>
<hora>28/02/2011 17:54:20,87</hora>
<texto>Aqu, aprendiendo <strong>XML</strong></texto>
</mensaje>
</mensajes>
32. Elabora tras realizar las correcciones de los XML del ejercicio 31.- los pertinentes
XML Schema (sxd) equivalentes a sus DTD.
33. DTD - Elementos con atributos - Corregir errores en los elementos
Los siguientes documentos no son vlidos porque contienen uno o dos errores (los errores
no estn en la DTD interna). Corrija los errores y compruebe con XML Editor que ya son
documentos vlidos.
Datos personales (dtd_31.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persona [
<!ELEMENT persona EMPTY>
<!ATTLIST persona nombre CDATA #IMPLIED>
]>
<persona dni="03141592E" />
Pelcula (dtd_32.xml)
Cuadros (dtd_33.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cuadros [
<!ELEMENT cuadros (cuadro*)>
<!ELEMENT cuadro EMPTY>
<!ATTLIST cuadro titulo ID #REQUIRED>
<!ATTLIST cuadro autor CDATA #REQUIRED>
]>
<cuadros>
<cuadro titulo="Adn y Eva" autor="Alberto Durero" />
<cuadro autor="Lucas Cranach, el viejo" titulo="Adn y Eva" />
</cuadros>
<!DOCTYPE futbol [
<!ELEMENT futbol ((jugador|equipo)*)>
<!ELEMENT jugador EMPTY>
<!ATTLIST jugador nombre NMTOKENS #REQUIRED>
<!ATTLIST jugador codigo ID #REQUIRED>
<!ELEMENT equipo EMPTY>
<!ATTLIST equipo nombre CDATA #REQUIRED>
<!ATTLIST equipo jugadores IDREFS #IMPLIED>
]>
<futbol>
<jugador nombre="Alfredo Di Stfano" codigo="ads"/>
<jugador nombre="Edison Arantes do Nascimento" codigo="ean" />
<jugador nombre="Diego Armando Maradona" codigo="dam" />
<jugador nombre="Johan Cruyff" codigo="jc" />
<equipo nombre="Societ Sportiva Calcio Napoli"
jugadores="Maradona" />
<equipo nombre="Futbol Club Barcelona" jugadores="Cruyff, Maradona"
/>
</futbol>
34. Elabora tras realizar las correcciones de los XML del ejercicio 33.- los pertinentes
XML Schema (sxd) equivalentes a sus DTD.
35. DTD - Ejercicio 4 - Elementos con atributos - Corregir errores en la DTD
Los siguientes documentos no son vlidos porque contienen errores (los errores estn en
la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son
documentos vlidos. Casi siempre habr varias maneras de corregir la DTD, intente elegir
la ms sencilla.
Libro (dtd_41.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE libro [
<!ELEMENT libro EMPTY>
<!ATTLIST libro autor NMTOKEN #REQUIRED>
]>
<libro autor="Mario Vargas LLosa" />
Inventores (dtd_42.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inventores [
<!ELEMENT inventores>
<!ELEMENT inventor EMPTY>
<!ATTLIST inventor invento CDATA #REQUIRED>
<!ATTLIST inventor nombre ID #REQUIRED>
]>
<inventores>
<inventor nombre="Robert Adler" invento="Mando a distancia" />
<inventor nombre="Laszlo Josef Biro" invento="Bolgrafo" />
<inventor nombre="Josephine Garis Cochran" invento="Lavaplatos" />
36. Elabora tras realizar las correcciones de los XML del ejercicio 35.- los pertinentes
XML Schema (sxd) equivalentes a sus DTD.
37. Elabora en formato XML el fichero de texto que contiene datos pertenecientes a un
determinado dominio/problema.
banco_lorca.xml:
El banco tiene sucursales, cada una identificada por un cdigo.
Cada sucursal tiene asignadas una serie de cuentas corrientes
que tambin se identifican por un cdigo (distinto para cada
cuenta)
La cuenta tiene asignados uno o varios clientes. Es posible que
las operaciones que puede realizar cada uno de estos clientes
con la cuenta no sean las mismas.
Cada cliente, identificado con el NIF, puede tener varias
cuentas y, por supuesto, distintos privilegios en cada una de
ellas.
Una cuenta puede tener domiciliaciones asignadas.
A un cliente se le puede haber concedido uno o varios
prstamos. Los prstamos no estn asociados a las cuentas, sino
a un solo cliente.
<listin
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = listin.xsd" >
<!DOCTYPE listin SYSTEM
listin.dtd">
<?xml version="1.0"?>
0.0899
Helio estado=gas, smbolo He, nmero atmico 2, peso atmico
4.0026, punto ebullicin unidades=kelvin 4.216, densidad
unidades=gramos/centmetros cbicos 0.1785
51. Disear un SXD esquema XML para crear documentos para el prstamo.
En cada documento se indicarn:
El nombre y apellidos del bibliotecario
Fecha del prstamo y de devolucin
Datos del lector (id, nombre, apellidos, telfono y direccin)
La direccin se dividir en tipo de calle (que puede ser calle,
avenida o plaza), nombre calle, nmero, piso y letra, c.p.,
localidad y provincia
Un mximo de tres ejemplares en prstamo. Para cada uno de
ellos: el nmero de registro, ttulo, autor(es)
El prstamo tendr un atributo numrico que servir como
identificador
52. Modificar el ejercicios 51.- , de forma que no todos los elementos estn anidados,
utilizando las referencias. Primero declaramos los elementos simples. Luego
declararemos los elementos complejos indicando su modelo de contenido mediante
atributos ref.
53. Crear un DTD/XSD xml para codificar datos de un pedido a un proveedor. Se
indicarn los datos del proveedor (nif, nombre, direccin, localidad, tlfono), datos
de la biblioteca, y el listado de items que se han pedido. Para cada item se indicar el
nmero de unidades, precio, y tambin el precio total del pedido y el nmero de items.