Ejercicios DTD
Ejercicios DTD
Ejercicios DTD
ejercicios_dtd.rar
1. FUENTE: Propio.
<empresa>
<jefazo>
<hombre>
<nombre>Juanjo</nombre>
<apellido>Perez</apellido>
</hombre>
</jefazo>
<jefazo>
<mujer>
<nombre>Maira</nombre>
<apellido>Palomares</apellido>
</mujer>
</jefazo>
<jefazo>
<hombre>
<nombre>Pablo</nombre>
<apellido>Ayuso</apellido>
</hombre>
</jefazo>
</empresa>
2. FUENTE: Propio.
Corrige el DTD para que se corresponda con el XML:
<centro_Comercial>
<tienda>
<tipo>Comida</tipo>
<trabajadores>4</trabajadores>
<estado>
<abierta></abierta>
</estado>
</tienda>
<tienda>
<tipo>Ropa</tipo>
<trabajadores>4</trabajadores>
<estado>
<cerrada></cerrada>
</estado>
</tienda>
</centro_Comercial>
<agenda>
<contacto>
<nombre>Juan</nombre>
<apellido>Rodriguez </apellido>
<apellido>Ramirez</apellido>
<telefono pais="España">624125454</telefono>
<email>juanito@enorden.com</email>
<direccion>
<calle>nuevo baztan</calle>
<numero>2</numero>
<cp>3035</cp>
</direccion>
</contacto>
</agenda>
4. FUENTE: Propio.
El siguiente documento XML ("tartas.xml") no es válido. Para que lo sea, realizar los
cambios necesarios en la DTD interna de dicho documento.
<!DOCTYPE tartas [
]>
<tartas>
<tarta>
<nombre>Golosa</nombre>
<precio>50</precio>
<cobertura>frambuesas</cobertura>
</tarta>
<tarta>
<nombre>selva negra</nombre>
<precio>70</precio>
<cobertura>chocolate belga</cobertura>
</tarta>
</tartas>
Elementos (Corregir errores en el XML sin modificar el DTD).
1. FUENTE: PROPIO.
<hotel>
<habitacion>
<numero>211</numero>
<cama></cama>
<cama></cama>
</habitacion>
<habitacion>
<numero>213</numero>
<cama></cama>
<banio></banio>
</habitacion>
<empleado>
<nombre>Manuel</nombre>
<apellido>Gomez</apellido>
<dni>1234</dni
</empleado>
</hotel>
En este documento XML debemos encontrarnos los errores sin tocar el DTD interno:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE listaventas[
<!ELEMENT listaventas (venta+)>
<!ELEMENT venta (importe+, comprador+,
vendedor, fecha?, codigofactura)>
<!ELEMENT importe ( #PCDATA)>
<!ELEMENT comprador (#PCDATA)>
<!ELEMENT vendedor (#PCDATA)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT codigofactura (#PCDATA)>
]>
<listaventas>
<venta>
<comprador>Wile E.Coyote</comprador>
<vendedor>ACME</vendedor>
<codigofactura>E17</codigofactura>
</venta>
<venta>
<importe>750</importe>
<vendedor>ACME</vendedor>
<fecha>27-2-2015</fecha>
<codigofactura>E18</codigofactura>
</venta>
</listaventas>
A.
<listaclientes>
<cliente>
<cif>5676443</cif>
<nombre>Mercasa</nombre>
</cliente>
</listaclientes>
B.
<listaclientes>
</listaclientes>
C.
<cliente>
<nombre>Mercasa</nombre>
<cif>5676443</cif>
</cliente>
<cliente>
<cif>5121554</cif>
<nombre>Acer SL</nombre>
</cliente>
</listaclientes>
D.
<cliente>
<cif>5676443</cif>
<nombre>Mercasa</nombre>
<diasentrega>30</diasentrega>
</cliente>
<cliente>
<cif>5121554</cif>
<nombre>Acer SL</nombre>
</cliente>
</listaclientes>
4. FUENTE: Propio.
<!DOCTYPE parcelas [
]>
</parcelas>
<parcela>
<ciudad>Madrid</ciudad>
<codigo>3841</codigo>
</parcela>
</parcelas>
5. FUENTE: Propio.
<!DOCTYPE party [
]>
<party>
<jugador>
<nombre>DF</nombre>
<clase>mago</clase>
<vida>3200</vida>
<mana>5900</mana>
</jugador>
<jugador>
<nombre>DM</nombre>
<clase>guerrero</clase>
<vida>6000</vida>
<rabia>100</rabia>
</jugador>
<jugador>
<nombre>Ojetoso Pasalomoco</nombre>
<clase>warlock</clase>
<vida>5000</vida>
<mana>5200</mana>
</jugador>
<jugador>
<nombre>Zapp</nombre>
<clase>paladin</clase>
<vida>4500</vida>
<mana>5000</mana>
<rabia>100</rabia>
</jugador>
</party>
6. FUENTE: Propio.
<!DOCTYPE animales [
<!ELEMENT animales (canidos, felinos)>
<!ELEMENT canidos (perros, lobos)>
<!ELEMENT felinos (gatos, tigres)>
<!ELEMENT gatos (#PCDATA)>
<!ELEMENT perros (#PCDATA)>
<!ELEMENT tigres (#PCDATA)>
<!ELEMENT lobos (#PCDATA)>
]>
<animales>
<canidos>
labrador
<perros></perros>
<lobos> </lobos>
</canidos>
<felinos>
bengala
<tigres> </tigres>
<gatos> </gatos>
</felinos>
</animales>
Tipos de atributos (Corregir errores en el XML sin modificar DTD).
1. FUENTE: Propio.
Corrige el XML para que se cumplan los requisitos del DTD:
<libreria>
<libro titulo="Sombras de Grey" autor="Manolo" />
<libro autor="Pedro" titulo="Sombras de Grey" />
</libreria>
-Toda factura tiene un emisor, que es un elemento obligatorio y que debe tener un
atributo cif que es obligatorio. Dentro de emisor debe haber un elemento nombre, que
es obligatorio y puede o no haber un elemento volumenventas.
-Toda factura debe tener un elemento pagador, el cual tiene exactamente la misma
estructura que emisor.
Corregir el siguiente XML “ListaFacturas.XML” sin modifica la estructura externa del DTD.
<!DOCTYPE listafacturas SYSTEM <!ELEMENT listafacturas (factura+)>
"ListaFacturas.dtd">
<!ELEMENT factura (emisor, pagador,
<listafacturas> importe)>
</factura>
</listafacturas>
3. FUENTE: Propia.
<agenda>
<persona>
<nombre>Raul</nombre>
<telefono tipo= "fijo"
prefijo="91">3897845</telefono>
</persona>
<persona>
<nombre>Sergio</nombre>
<telefono tipo= "fijo"
prefijo="91">3689232</telefono>
<telefono tipo=
"movil">645232161</telefono>
</persona>
</agenda>
1. FUENTE: Propia.
Corrige el DTD para que se corresponda con el XML:
<?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>
<deceit>
<jugador>
<nombre infectado= "si"
sangre="100">DF</nombre>
</jugador>
<jugador>
<nombre infectado=
"no">Markus</nombre>
</jugador>
<jugador>
<nombre infectado= "no"
>Zapp</nombre>
</jugador>
<jugador>
<nombre infectado= "si"
sangre="50">DM</nombre>
</jugador>
<jugador>
<nombre infectado= "no">Ojetoso
Pasalomoco</nombre>
</jugador>
<jugador>
<nombre infectado= "no">Mr
Boolean</nombre>
</jugador>
</deceit>
Corregir errores DTD y XML (MIXTO).
1) 2)
1. Cree el documento XML más pequeño posible a partir del siguiente archivo DTD.
<!DOCTYPE carnet[
<!ELEMENT carnet (personas+) >
<!ELEMENT persona EMPTY >
<!ATTLIST persona
apellido CDATA #REQUIRED
nombre CDATA #IMPLIED
telefono CDATA #REQUIRED
]>
3.
Queremos crear un archivo DTD que permita describir un formato para almacenar una
lista de estudiantes y los módulos que siguen. Para cada alumno queremos:
el nombre del curso(s) que está siguiendo,
El nombre de cada módulo (con precisión si es un módulo libre o no),
su calificación si ya tiene una (solo una calificación por módulo),
su contacto (opcional).
a. Dar un DTD respondiendo el problema.
b. Cree un archivo XML con 2 estudiantes y valide todo.
1. ¿Cuáles de las siguientes etiquetas XML son válidas y cuáles no? Justifica tus
respuestas: (Picazo, n.d.)
- <leccion>
- <alumno y profesor>
- <alumnoyprofesor>
- <alumnøyprøfesør>
- <TebeoDeGarfield>
- <XMLmeEncanta>
- <33df>
- <alumno.y.profesor>
- <>
2. Entendiendo como árbol binario un árbol del cual cada nodo puede o bien crear dos
nuevas ramas o bien presentar una hoja (en nuestro ejemplo, un valor): (Picazo, n.d.)
Diseñar un DTD para representar árboles binarios y nada más que eso. Cuando se
creen 2 ramas, estas no deben llevar ninguna información, mientras que cada hoja
debería llevar un valor que puede ser cualquier string (#PCDATA).
3. Teniendo en cuenta el archivo DTD que acabas de crear, diseña un archivo XML que
represente el árbol binario en la figura incluida en el ejercicio 4, por supuesto que sea
conforme con tu archivo DTD. (Picazo, n.d.)
- Para cada partido, queremos que represente dos equipos (uno local y uno
visitante), qué jugadores han anotado (pudiendo haberlo hecho de penalty) y el
minuto en el que lo han hecho. Finalmente, también queremos registrar aquellos
jugadores a los que se les ha amonestado (con amarilla o roja). Se pueden usar
atributos.
5. Estás creando una aplicación para móviles para predicciones del tiempo. Para ello, vas
a comunicarte con tu servidor a través de documentos XML (en ambas direcciones;
móvil-servidor, servidor-móvil). (Picazo, n.d.)
EJERCICIO 1:
<empresa>
<jefazo>
<hombre>
<nombre>Juanjo</nombre>
<apellido>Perez</apellido>
</hombre>
</jefazo>
<jefazo>
<mujer>
<nombre>Maira</nombre>
<apellido>Palomares</apellido>
</mujer>
</jefazo>
<jefazo>
<hombre>
<nombre>Pablo</nombre>
<apellido>Ayuso</apellido>
</hombre>
</jefazo>
</empresa>
EJERCICIO 2:
<centro_Comercial>
<tienda>
<tipo>Comida</tipo>
<trabajadores>4</trabajadores>
<estado>
<abierta></abierta>
</estado>
</tienda>
<tienda>
<tipo>Ropa</tipo>
<trabajadores>4</trabajadores>
<estado>
<cerrada></cerrada>
</estado>
</tienda>
</centro_Comercial>
EJERCICIO 3:
<!ELEMENT direccion>
- Para que pueda tener mínimo 1 apellido y máximo los que quiera tener se añadirá un
“+” en el respectivo hijo:
-
<!ELEMENT contacto (nombre,apellido,telefono, email? , direccion) >
- Los elementos calle, numero, cp, deben estar declarados como hijos del elemento
dirección.
<!ELEMENT direccion (calle,numero,cp)>
EJERCICIO 4:
En este caso sólo podría aparecer una tarta, nos valdría con el indicador + de 1 o más o el * de
cero o más ocurrencias, en esta solución utilizaremos ese. El DTD interno quedaría así:
<!DOCTYPE tartas [
EJERCICIO 1:
<hotel>
<?xml version="1.0" encoding="UTF- <habitacion>
8"?> <numero>211</numero>
<!DOCTYPE hotel [ <cama></cama>
<!ELEMENT hotel (habitacion+, <cama></cama>
empleado+)> <banio></banio>
<!ELEMENT habitacion (numero, </habitacion>
cama+, banio+)> <habitacion>
<!ELEMENT empleado (nombre, dni)> <numero>213</numero>
<cama></cama>
<!ELEMENT numero (#PCDATA)> <banio></banio>
<!ELEMENT cama (#PCDATA)> </habitacion>
<!ELEMENT banio (#PCDATA)> <empleado>
<!ELEMENT nombre (#PCDATA)> <nombre>Manuel</nombre>
<!ELEMENT dni (#PCDATA)> <dni>1234</dni>
]> </empleado>
</hotel>
EJERCICIO 2:
<importe>750</importe>
<comprador>Manolo
Lamas</comprador>
<vendedor>ACME</vendedor>
<fecha>27-2-2015</fecha>
<codigofactura>E18</codigofactura>
<importe>18</importe>
<comprador>Wile
E.Coyote</comprador>
<vendedor>ACME</vendedor>
<codigofactura>E17</codigofactura>
EJERCICIO 3:
<!DOCTYPE listaclientes[
]>
EJECICIO 4:
El elemento parcelas debe de contener los 3 elementos que se indican, falta tipo.
<parcelas>
<parcela>
<ciudad>Madrid</ciudad>
<tipo>Urbanizable</tipo>
<codigo>3841</codigo>
</parcela>
</parcelas>
EJERCICIO 5:
EL jugador Zapp tiene mana y rabia cuando el DTD especifica que sólo puede tener mana o
rabia, solo uno de los dos. En este caso sólo corregiremos ese jugador por ver la corrección
más clara. Le quitamos rabia ya que es un paladin y se soluciona.
<jugador>
<nombre>Zapp</nombre>
<clase>paladin</clase>
<vida>4500</vida>
<mana>5000</mana>
</jugador>
EJERCICIO 6:
Canidos y felinos no puede contener un nombre de una raza, deben de ponerse dentro de
perros, tigres.
<!DOCTYPE animales [
<!ELEMENT animales (canidos,
felinos)>
<!ELEMENT canidos (perros, lobos)>
<!ELEMENT felinos (gatos, tigres)>
<!ELEMENT gatos (#PCDATA)>
<!ELEMENT perros (#PCDATA)>
<!ELEMENT tigres (#PCDATA)>
<!ELEMENT lobos (#PCDATA)>
]>
<animales>
<canidos>
<perros> Labrador </perros>
<lobos> Utonagan </lobos>
</canidos>
<felinos>
<tigres> Bengala </tigres>
<gatos> Persa </gatos>
</felinos>
</animales>
EJERCICIO 1:
<libreria>
<libro titulo="Sombras_de_Grey" autor="Manolo" />
<libro autor="Pedro" titulo="Cortilandia" />
</libreria>
EJERCICIO 2:
- Debemos de poner el valor del atributo cif que pertenece al emisor emisor porque es
obligatorio.
<emisor cif="123">
- El atributo padre “PAGADOR” junto con el valor del atributo “CIF” porque son
obligatorios, se debe de poner antes de declarar a sus hijos.
-
<pagador cif="234">
<nombre>ACME Inc</nombre>
<volumenventas>2000</volumenventas>
</pagador>
<factura fecha="11-2-2015">
EJERCICIO 3:
El atributo prefijo es necesario en todos los teléfonos sean móviles fijos o lo que sea. En este
caso en el segundo teléfono de Sergio falta.
<agenda>
<persona>
<nombre>Raul</nombre>
<telefono tipo= "fijo"
prefijo="91">3897845</telefono>
</persona>
<persona>
<nombre>Sergio</nombre>
<telefono tipo= "fijo"
prefijo="91">3689232</telefono>
<telefono tipo="movil"
prefijo="34">645232161</telefono>
</persona>
</agenda>
Tipos de atributos (errores corregidos en el DTD sin modificar el XML).
EJERCICIO 1:
<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>
EJERCICIO 2:
Obligamos a que estos aparezcan en orden, aunque si se puedan repetir, la solución sería
añadir el símbolo “|” por la “,” para que se pueda poner en cualquier orden y añadir el símbolo
“+” después del paréntesis cerrando, porque queremos que se puedan repetir varias veces.
<!ELEMENT pedido (libro|cuaderno|lapiz)+>
Después de haber declarado el elemento cuaderno, habría que crear su atributo que sería
“num_hojas”, de cadena de carácter, con su valor de tipo opcional “#IMPLIED”.
<!ATTLIST cuaderno num_hojas CDATA #IMPLIED>
EJERCICIO 3:
En este caso como pone que sangre es un atributo obligatorio habría 2 opciones, o bien ponerlo
en todos los jugadores, o no ponerlo obligatorio, ponerlo IMPLIED, en nuestro caso como el
enunciado nos pide modificar el DTD interno sería lo segundo, además en este caso no tiene
sentido poner el nivel de sangre si no estás infectado. El DTD interno quedaría así:
<lanparty>
<!DOCTYPE lanparty [
<ordenadores>
<raton>Marca genérica1</raton>
<!ELEMENT lanparty (ordenadores+,
<teclado>Marca genérica2</teclado>
jugadores+)>
<juegos>Deceit</juegos>
<juegos>Spellsworn</juegos>
<!ELEMENT ordenadores (raton,teclado,
</ordenadores>
juegos+)>
<ordenadores>
<raton>Marca genérica41</raton>
<!ELEMENT jugadores (nombre, ganas)>
<teclado>Marca genérica45</teclado>
<juegos>Deceit</juegos>
<!ELEMENT raton (#PCDATA)>
<juegos>Spellsworn</juegos>
<!ELEMENT teclado (#PCDATA)>
</ordenadores>
<!ELEMENT juegos (#PCDATA)>
<jugadores>
<!ELEMENT nombre (#PCDATA)>
<nombre>Jorge Vallejo</nombre>
<!ELEMENT ganas (#PCDATA)>
<ganas>Muchas</ganas>
]>
</jugadores>
<jugadores>
<nombre>David Lorenzo</nombre>
<ganas>Intermedias</ganas>
</jugadores>
</lanparty>
Creación de documentos.
EJERCICIO 1:
<aa>
<aa1> Mensaje1 de tipo texto
</aa1>
<aa2> Mensaje2 de tipo texto
</aa2>
</aa>
EJERCICIO 2:
<carnet>
<persona apellido="Lorenzo"
telefono="65654312">
<persona apellido="Ballejo" nombre="Jonas"
telefono="65345634">
<Personas apellido="Morales" nombre="Sifredi"
telefono="6546456">
</carnet>
EJERCICIO 3:
<apellido></apellido>
<telefono></telefono>
<direccion></direccion>
<contacto>
</estudiante>
</lista_estudiante>
EJERCICIO 4:
<!DOCTYPE bibliografia [
<!-- Elemento Bibliografia -->
<!ELEMENT bibliografia (libro,articulo+) >
<!-- Elemento libro -->
<!ELEMENT libro (titulo,
autor+,volumenes+,edicion,opinion?) >
<!ELEMENT titulo (#PCDATA) >
<!ELEMENT autor (#PCDATA) >
<!ELEMENT volumen (paginas) >
<!ELEMENT paginas (#PCDATA) >
<!ELEMENT edicion
(editor,lugarEdicion,lugarImpresion,ISBN) >
<!ELEMENT editor (#PCDATA) >
<!ELEMENT lugarEdicion (#PCDATA) >
<!ELEMENT lugarImpresion (#PCDATA) >
<!ELEMENT ISBN (#PCDATA) >
<!-- ELEMENTO ARTICULO -->
<!ELEMENT articulo (titulo,autor+,publicacion)
>
<!ELEMENT autor (#PCDATA) >
<!ELEMENT publicacion
(nombreRevista,numeroPaginas,Anio,NumeroRevista) >
<!ELEMENT NombreRevista (#PCDATA) >
<!ELEMENT NumeroPaginas (#PCDATA) >
<!ELEMENT Anio (#PCDATA) >
<!ELEMENT NumeroRevista (#PCDATA) >
]>
Misceláneas.
EJERCICIO 1:
<lección> <alumno y profesor> <alumno&profesor>
EJERCICIO 2:
<!DOCTYPE AB [
<!ELEMENT AB ((AB,AB) | Hojas)>
<!ELEMENT Hoja (#PCDATA)>]>
EJERCICIO 3:
<AB>
<AB><Hoja>1</Hoja></AB>
<AB>
<AB>
<AB><Hoja>2</Hoja></AB>
<AB><Hoja>3</Hoja></AB>
</AB>
<AB><Hoja>4</Hoja></AB>
</AB>
</AB>
EJERCICIO 4:
<?xml version="1.0"?>
<!DOCTYPE partidos[
<!ELEMENT partido(partido)*>
<!ELEMENT partido(equipo-local, equipo-visitante, goles, amarillas,
rojas)>
<!ELEMENT equipo-local(#PCDATA)>
<!ELEMENT equipo-visitante(#PCDATA)>
<!ELEMENT goles(gol)*>
<!ELEMENT amarillas(jugador)*>
<!ELEMENT rojas(jugador)*>
<!ELEMENT gol(jugador)*>
<!ELEMENT jugador(#PCDATA)>
<!ATTLIST partido gol CDATA #REQUIRED>
<!ATTLIST gol minuto CDATA #REQUIRED>
<!ATTLIST gol tipo(normal|penalty)#IMPLIED>
]>
EJERCICIO 5:
<?xml version="1.0"?>
<peticion-prevision-tiempo>
<ciudad>Madrid</ciudad >
<fecha>23.03.2020</fecha>
<idioma>Español</idioma>
<sistema>Celsius</sistema>
</peticion-prevision-tiempo>
<?xml version="1.0"?>
<respuesta-prevision-tiempo idioma="Español">
<ciudad>Madrid</ciudad>
<fecha>23.03.2020</fecha>
<descripcion-corta>
Granizo y cuarentena.
</short-description>
<descripción-larga>
Debido a un nuevo virus, no se puede salir de casa, así que no importa
mucho el tiempo que haga. En cualquier caso…
</descripcion-larga>
<temperaturas sistema="Celsius">
<temperatura when="día">
15.0
</temperatura>
<temperatura when="noche">
5.0
</temperatura>
</temperaturas>
</weather-forecast-reply>
Bibliografía
Gomez, O. (n.d.). Retrieved from
https://oscarmaestre.github.io/lenguajes_marcas/tema5.html