Estos ejercicios corresponden a lo explicado en la lección DTD.
Se pueden consultar las soluciones de estos ejercicios.
Los siguientes documentos no son válidos porque contienen uno o dos errores (los errores no están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE numeros [
<!ELEMENT numeros (#PCDATA)>
]>
<numeros>
<numero>25</numero>
</numeros>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE letras [
<!ELEMENT letras (letra)>
<!ELEMENT letra (#PCDATA)>
]>
<letras>
<letra>m</letra>
<letra>uve doble</letra>
</letras>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE flores [
<!ELEMENT flores (flor+)>
<!ELEMENT flor (#PCDATA)>
]>
<flores>
</flores>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE animales [
<!ELEMENT animales (animal*)>
<!ELEMENT animal (#PCDATA)>
]>
<animales>
<perro>Caniche</perro>
<gato>Siamés</gato>
</animales>
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE agenda [
<!ELEMENT agenda (contacto*)>
<!ELEMENT contacto (nombre, telefonoFijo*, telefonoMovil+)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT telefonoFijo (#PCDATA)>
<!ELEMENT telefonoMovil (#PCDATA)>
]>
<agenda>
<contacto>
<nombre>Ayuntamiento</nombre>
<telefonoFijo>010</telefonoFijo>
</contacto>
<contacto>
<nombre>Emergencias</nombre>
<telefonoFijo>112 (Unión Europea)</telefonoFijo>
<telefonoMovil>Desconocido</telefonoMovil>
<telefonoFijo>911 (Estados Unidos)</telefonoFijo>
</contacto>
</agenda>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sistemaSolar [
<!ELEMENT sistemaSolar (cuerpo*)>
<!ELEMENT cuerpo (planeta|satelite|asteroide)>
<!ELEMENT planeta (#PCDATA)>
<!ELEMENT satelite (#PCDATA)>
<!ELEMENT asteroide (#PCDATA)>
]>
<sistemaSolar>
<cuerpo>
<planeta>Tierra</planeta>
<satelite>Luna</satelite>
</cuerpo>
<asteroide>Ceres</asteroide>
</sistemaSolar>
Los siguientes documentos no son válidos porque contienen errores (los errores están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos. Casi siempre habrá varias maneras de corregir la DTD, intente elegir la más sencilla.
<?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>
<?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 Colón a América</hecho>
</efemeride>
<efemeride>
<fecha>6 de abril de 1909</fecha>
<hecho>llegada de Robert Peary al Polo Norte</hecho>
</efemeride>
</efemerides>
<?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>Berlín Schönefeld (SFX)</nombre>
</aeropuerto>
<aeropuerto>
<nombre>Berlín Tempelhof (THF)</nombre>
<cerrado />
</aeropuerto>
</aeropuertos>
<?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>Berlín Schönefeld (SFX)</destino>
<origen>París Charles de Gaulle (CDG)</origen>
</vuelo>
</vuelos>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE reyesEspañoles [
<!ELEMENT reyesEspañoles (rey*, reina*)>
<!ELEMENT rey (nombre, padre, madre)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT padre (#PCDATA)>
<!ELEMENT madre (#PCDATA)>
]>
<reyesEspañoles>
<rey>
<nombre>Felipe III</nombre>
<padre>Felipe II</padre>
<madre>Ana de Austria</madre>
</rey>
<reina>
<nombre>Juana la Loca</nombre>
<padre>Fernando el Católico</padre>
<madre>Isabel la Católica</madre>
</reina>
<rey>
<nombre>Carlos I</nombre>
<padre>Felipe el Hermoso</padre>
<madre>Juan la Loca</madre>
</rey>
</reyesEspañoles>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paises [
<!ELEMENT pais (nombre, unionEuropea, otan)>
<!ELEMENT nombre EMPTY>
<!ELEMENT unionEuropea EMPTY>
<!ELEMENT otan EMPTY>
]>
<paises>
<pais>
<nombre>España</nombre>
<unionEuropea />
<otan />
</pais>
<pais>
<nombre>Noruega</nombre>
<otan />
</pais>
<pais>
<nombre>Austria</nombre>
<unionEuropea />
</pais>
</paises>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE colores [
<!ELEMENT colores (color*)>
<!ELEMENT nombreSvg (#PCDATA)>
<!ELEMENT rgb (#PCDATA)>
<!ELEMENT cmyk (#PCDATA)>
]>
<colores>
<color>
<nombreSvg>Purple</nombreSvg>
<codigo>
<rgb>#800080</rgb>
</codigo>
</color>
<color>
<nombreSvg>Purple</nombreSvg>
<codigo>
<cmyk>#00FF007F</cmyk>
</codigo>
</color>
</colores>
<?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>
<?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 (pepe@example.com)</de>
<para>Juan (juan@example.com)</para>
<hora>28/02/2011 17:48:23,61</hora>
<texto>¿Hola, Juan, qué haces?</texto>
</mensaje>
<mensaje>
<de>Juan (juan@example.com)</de>
<para>Pepe (pepe@example.com)</para>
<hora>28/02/2011 17:54:20,87</hora>
<texto>Aquí, aprendiendo <strong>XML</strong></texto>
</mensaje>
</mensajes>
Los siguientes documentos no son válidos porque contienen uno o dos errores (los errores no están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persona [
<!ELEMENT persona EMPTY>
<!ATTLIST persona nombre CDATA #IMPLIED>
]>
<persona dni="03141592E" />
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pelicula [
<!ELEMENT pelicula EMPTY>
<!ATTLIST pelicula titulo CDATA #IMPLIED>
]>
<pelicula titulo="La diligencia" genero="oeste" />
<?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="Adán y Eva" autor="Alberto Durero" />
<cuadro autor="Lucas Cranach, el viejo" titulo="Adán y Eva" />
</cuadros>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE listaCompra [
<!ELEMENT listaCompra (item*)>
<!ELEMENT item EMPTY>
<!ATTLIST item nombre CDATA #REQUIRED>
<!ATTLIST item cantidad CDATA #REQUIRED>
]>
<listaCompra>
<leche cantidad="12 litros" ></leche>
<pan cantidad="3 barras de cuarto" />
</listaCompra>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE futbol [
<!ELEMENT futbol (jugador*)>
<!ELEMENT jugador EMPTY>
<!ATTLIST jugador nombre NMTOKENS #REQUIRED>
<!ATTLIST jugador codigo ID #REQUIRED>
]>
<futbol>
<jugador nombre="Alfredo Di Stéfano" codigo="1"/>
<jugador nombre="Edson Arantes do Nascimento, Pelé" codigo="2" />
<jugador nombre="Diego Armando Maradona" codigo="3" />
<jugador nombre="Johan Cruyff" codigo="4" />
</futbol>
<?xml version="1.0" encoding="UTF-8"?>
<!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 Stéfano" 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>
Los siguientes documentos no son válidos porque contienen errores (los errores están en la DTD interna). Corrija los errores y compruebe con XML Copy Editor que ya son documentos válidos. Casi siempre habrá varias maneras de corregir la DTD, intente elegir la más sencilla.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE libro [
<!ELEMENT libro EMPTY>
<!ATTLIST libro autor NMTOKEN #REQUIRED>
]>
<libro autor="Mario Vargas Llosa" />
<?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="Bolígrafo" />
<inventor nombre="Josephine Garis Cochran" invento="Lavaplatos" />
<inventor invento="Fuego" />
</inventores>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cosasPorHacer [
<!ELEMENT cosasPorHacer (cosa)>
<!ELEMENT cosa EMPTY>
<!ATTLIST cosa fecha CDATA #REQUIRED>
<!ATTLIST cosa asunto CDATA #REQUIRED>
<!ATTLIST cosa fechaLimite CDATA #REQUIRED>
]>
<cosasPorHacer>
<cosa fecha="20 de febrero de 2011" fechaLimite="1 de marzo de 2011">
Preparar ejercicios de DTDs</cosa>
<cosa fecha="21 de febrero de 2011" fechaLimite="5 de marzo de 2011">
Preparar tema XSLT</cosa>
</cosasPorHacer>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resoluciones [
<!ELEMENT resoluciones EMPTY>
<!ATTLIST resoluciones nombre NMTOKEN #REQUIRED>
<!ATTLIST resoluciones alto CDATA #REQUIRED>
<!ATTLIST resoluciones ancho CDATA #REQUIRED>
]>
<resoluciones>
<resolucion nombre="VGA" alto="480" ancho="640" />
<resolucion nombre="XGA" alto="1024" ancho="768" />
<resolucion nombre="HD 1080" alto="1920" ancho="1080" />
</resoluciones>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE albumesMortadelo [
<!ELEMENT albumesMortadelo (album*)>
<!ELEMENT album (nombre, fecha)>
<!ATTLIST album nombre CDATA #REQUIRED>
<!ATTLIST album fecha(1969,1970,1971,1972,1973,1974) #REQUIRED>
]>
<albumesMortadelo>
<album nombre="El sulfato atómico" fecha="1969"/>
<album nombre="La caja de diez cerrojos" fecha="1971"/>
<album nombre="El otro yo del profesor Bacterio" fecha="1973"/>
<album nombre="Los cacharros majaretas" fecha="1974"/>
</albumesMortadelo>
Se quiere definir un lenguaje de marcas para representar los resultados de una liga de fútbol. La información que se quiere almacenar de cada partido es:
Escribe tres documentos que incluyan los siguientes resultados:
Cada documento incluirá un DTD diferente para representar ese lenguaje de marcas: