0% encontró este documento útil (0 votos)
470 vistas19 páginas

Ejercicios DTD

Este documento contiene 21 ejemplos de pequeños documentos XML con sus respectivas DTDs internas. Se pide realizar cambios en los documentos o DTDs para corregir errores y ajustarlos a la DTD, sin modificar esta última.

Cargado por

andresFP2020
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
470 vistas19 páginas

Ejercicios DTD

Este documento contiene 21 ejemplos de pequeños documentos XML con sus respectivas DTDs internas. Se pide realizar cambios en los documentos o DTDs para corregir errores y ajustarlos a la DTD, sin modificar esta última.

Cargado por

andresFP2020
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1.

- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE perifericos [
<!ELEMENT perifericos (#PCDATA)>
]>

<perifericos>
<periferico>impresora</periferico>
<periferico>monitor</periferico>
<periferico>teclado</periferico>
</perifericos>

Solución:

2.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE perro [
<!ELEMENT perro (edad, nombre)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
]>

<perro>
<nombre>Pancho</nombre>
<edad>8</edad>
</perro>

Solución:
3.- Realizar los cambios necesarios en el documento, pero sin modificar la
DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE caballo [
<!ELEMENT caballo (nombre, raza, edad)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT raza (#PCDATA)>
<!ELEMENT edad EMPTY>
]>

<caballo>
<nombre>Silvestre</nombre>
<raza>Morgan</raza>
</caballo>

Solución:

4.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mesa [
<!ELEMENT mesa ANY>
<!ELEMENT material (#PCDATA)>
<!ELEMENT color (#PCDATA)>
]>

<mesa>La mesa de <material>madera es de color


<color>marrón</color></material>.</mesa>

Solución:
5.- Realizar los cambios necesarios en el documento, pero sin modificar la
DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE partes [
<!ELEMENT partes (secciones)>
<!ELEMENT secciones ANY>
<!ELEMENT letras (#PCDATA)>
]>

<secciones>
<letras>abc</letras>
MNT
<letras>xyz</letras>
</secciones>

Solución:

6.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE viajes [
<!ELEMENT viajes (austria, italia, francia)>
<!ELEMENT austria (ciudad+)>
<!ELEMENT italia (ciudad+)>
<!ELEMENT francia (ciudad+)>
<!ELEMENT ciudad (#PCDATA)>
]>

<viajes>
<austria>
<viena/>
</austria>
<italia>
<florencia/>
<roma/>
<venecia/>
</italia>
<francia/>
</viajes>

Solución:

7.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE ropa [
<!ELEMENT ropa (nombre, color*)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT color (#PCDATA)>
]>

<ropa>
<nombre>guante</nombre>
<color>rojo</color>
<color>blanco</color>
<nombre>bufanda</nombre>
<color>verde</color>
<color>azul</color>
</ropa>

Solución:
8.- Realizar los cambios necesarios en el documento, pero sin modificar la
DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE paises [
<!ELEMENT paises (pais, ciudad?)*>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
]>

<paises>
<pais>italia</pais>
<ciudad>florencia</ciudad>
<pais>portugal</pais>
<ciudad>lisboa</ciudad>
<ciudad>oporto</ciudad>
<pais>francia</pais>
</paises>

Solución:

9.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE bebidas [
<!ELEMENT bebidas (bebida)*>
<!ELEMENT bebida ((codigo | nombre), precio)>
<!ELEMENT codigo (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT precio (#PCDATA)>
]>

<bebidas>
<bebida>
<codigo>L45</codigo>
<nombre>leche</nombre>
<precio>8</precio>
</bebida>
<bebida>
<precio>6</precio>
</bebida>
</bebidas>

Solución:

10.- Realizar los cambios necesarios en dicho documento, pero sin


modificar la DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE productos [
<!ELEMENT productos (producto)*>
<!ELEMENT producto (identificacion, nombre)>
<!ELEMENT identificacion (#PCDATA | codigo | id)*>
<!ELEMENT codigo (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
]>

<productos>
<nombre>martillo</nombre>
<identificacion>
Quedan 14 unidades.
<codigo>MAR264</codigo>
</identificacion>
<identificacion>
<codigo>DES387</codigo>
<id>678984</id>
No hay stock.
<nombre>destornillador</nombre>
</identificacion>
</productos>
Solución:

11.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE forma_geometrica [
<!ELEMENT forma_geometrica (nombre | caracteristicas | numero_de_lados)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT tipo (#PCDATA)>
<!ELEMENT numero_de_lados (#PCDATA)>
]>

<forma_geometrica>
<nombre>rombo</nombre>
<caracteristicas>
<color>naranja</color>
<tipo>plana</tipo>
</caracteristicas>
<numero_de_lados>4</numero_de_lados>
</forma_geometrica>

Solución:

12.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE lugares [
<!ELEMENT lugares ANY*>
]>

<lugares>En el <lugar>polo norte</lugar> hace mucho frío. Pero, en el


<lugar>desierto del Sahara</lugar> hace mucho calor.</lugares>
Solución 1: declarando "lugares" de tipo ANY

Solución 2: sin declarar "lugares" de tipo ANY

13.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE ciudades [
<!ELEMENT ciudades (ciudad)>
<!ELEMENT ciudad (nombre, capital)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT capital EMPTY>
]>

<ciudades>
<ciudad>
<nombre>Buenos Aires</nombre>
<capital/>
</ciudad>
<ciudad>
<nombre>Liverpool</nombre>
</ciudad>
<ciudad>
<nombre>Osaka</nombre>
</ciudad>
<ciudad>
<nombre>Oslo</nombre>
<capital/>
</ciudad>
</ciudades>

Solución:
14.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE socios [
<!ELEMENT socios (socio)*>
<!ELEMENT socio ((numero, clave)+, nombre, edad)>
<!ELEMENT clave (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT numero (#PCDATA)>
]>

<socios>
<socio>
<nombre>Ana</nombre>
<edad>21</edad>
</socio>
<socio>
<numero>598</numero>
<nombre>Iker</nombre>
<edad>19</edad>
</socio>
<socio>
<clave>hY75Du</clave>
<nombre>Iker</nombre>
</socio>
</socios>

Solución:
15.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE elementos [
<!ELEMENT elementos (pcdata*, any+, vacio)>
<!ELEMENT pcdata (#PCDATA)>
<!ELEMENT any (ANY)>
<!ELEMENT vacío (EMPTY)>
]>

<elementos>
<any/>
<vacio/>
</elementos>

Solución 1:

Solución 2: considerando "ANY" y "EMPTY"


como elementos en vez de tipos

16.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE formas [
<!ELEMENT formas (cuadrado, triangulo, circulo, otra)>
<!ELEMENT cuadrado (#PCDATA)>
<!ATTLIST cuadrado lados CDATA #REQUIRED>
<!ELEMENT triangulo (#PCDATA)>
<!ATTLIST triangulo lados CDATA #REQUIRED>
<!ELEMENT circulo (#PCDATA)>
<!ELEMENT otra EMPTY>
<!ATTLIST otra lados CDATA #REQUIRED>
]>
<formas>
<cuadrado lados="4">tablero</cuadrado>
<circulo>anilla</circulo>
<triangulo>señal</triangulo>
<otra lados="7"/>
</formas>

Solución:

17.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE empresas [
<!ELEMENT empresas (empresa)*>
<!ELEMENT empresa EMPTY>
<!ATTLIST empresa nombre CDATA #REQUIRED>
<!ATTLIST empresa fecha_de_fundacion CDATA #IMPLIED>
]>

<empresas>
<empresa fecha_de_fundacion="1976">Apple</empresa>
<empresa>Google</empresa>
<empresa fecha_de_fundacion="1975">Microsoft</empresa>
</empresas>

Solución:
18.- Realizar los cambios necesarios en el documento, pero sin modificar la
DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE articulos [
<!ELEMENT articulos (articulo)+>
<!ELEMENT articulo (#PCDATA)>
<!ATTLIST articulo color CDATA #FIXED "rojo">
]>

<articulos>
<articulo nombre="bolígrafo" color="rojo"/>
<articulo nombre="cuaderno"/>
<articulo nombre="rotulador" color="amarillo"/>
</articulos>

Solución:

19.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE geografia [
<!ELEMENT geografia (paises, ciudades)>
<!ELEMENT paises (pais)*>
<!ELEMENT pais (#PCDATA)>
<!ATTLIST pais codpais ID #REQUIRED>
<!ELEMENT ciudades (ciudad)*>
<!ELEMENT ciudad (#PCDATA)>
<!ATTLIST ciudad pais IDREF #IMPLIED>
]>

<geografia>
<paises>
<pais codpais="1">Argentina</pais>
<pais codpais="2">Austria</pais>
<pais codpais="3">Japón</pais>
<pais codpais="4">Noruega</pais>
</paises>
<ciudades>
<ciudad pais="3">Osaka</ciudad>
<ciudad>Oslo</ciudad>
<ciudad pais="">Sevilla</ciudad>
<ciudad pais="3">Tokio</ciudad>
<ciudad pais="2">Viena</ciudad>
</ciudades>
</geografia>

Solución:

20.- Realizar los cambios necesarios en el documento, pero sin modificar la


DTD interna.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE pizzas [
<!ELEMENT pizzas (ingredientes, tipos)>
<!ELEMENT ingredientes (ingrediente)*>
<!ELEMENT ingrediente (#PCDATA)>
<!ATTLIST ingrediente coding ID #REQUIRED>
<!ELEMENT tipos (tipo)*>
<!ELEMENT tipo EMPTY>
<!ATTLIST tipo nombre CDATA #REQUIRED>
<!ATTLIST tipo ingredientes IDREFS #REQUIRED>
]>

<pizzas>
<ingredientes>
<ingrediente coding="HUE">Huevo</ingrediente>
<ingrediente coding="CHA">Champiñón</ingrediente>
<ingrediente coding="CHO">Chorizo</ingrediente>
<ingrediente coding="CAL">Calabacín</ingrediente>
<ingrediente coding="JAM">Jamón de York</ingrediente>
</ingredientes>
<tipos>
<tipo nombre="Fantástica" ingredientes="CAL, CHA, ZAN"/>
<tipo nombre="Sabrosa" ingredientes="CHA, CHO, JAM, HUE"/>
</tipos>
</pizzas>

Solución:

21.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE declaraciones [
<!ELEMENT declaraciones (consonante | tipo_de_dato | variable)>
<!ELEMENT consonante (#PCDATA)>
<!ATTLIST consonante valor CDATA #REQUIRED>
<!ELEMENT tipo_de_dato (#PCDATA)>
<!ELEMENT variable (#PCDATA)>
<!ATTLIST variable tipo CDATA #REQUIRED>
]>

<declaraciones>
<consonante valor="3.141592">PI</consonante>
<variable tipo="real">radio</variable>
<variable>area</variable>
<variable>longitud</variable>
</declaraciones>

Solución:

22.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE saludos [
<!ELEMENT saludos (saludo*)>
<!ELEMENT saludo (#PCDATA)>
<!ATTLIST saludo idioma (ALE | FRA | ITA) "ESP">
]>
<saludos>
<saludo idioma="ALE">Hallo</saludo>
<saludo>Hola</saludo>
<saludo idioma="ITA">Ciao</saludo>
<saludo idioma="FRA">Salut</saludo>
<saludo idioma="POR">Olá</saludo>
</saludos>

Solución:

23.- realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE cine [
<!ELEMENT peliculas (pelicula)*>
<!ELEMENT pelicula (#PCDATA)>
<!ATTLIST pelicula codpel ID (P1 | P2 | P3 | P4) "P0">
<!ELEMENT actores (actor)*>
<!ELEMENT actor (#PCDATA)>
<!ATTLIST actor filmografia IDREF #REQUIRED>
]>

<cine>
<peliculas>
<pelicula>Avatar</pelicula>
<pelicula codpel="P1">Gran Torino</pelicula>
<pelicula codpel="P2">Invictus</pelicula>
<pelicula codpel="P3">Million dollar baby</pelicula>
<pelicula codpel="P4">Oblivion</pelicula>
<pelicula codpel="P5">Unforgiven</pelicula>
</peliculas>
<actores>
<actor filmografia="P1 P3 P5">Clint Eastwood</actor>
<actor filmografia="P2 P3 P4 P5">Morgan Freeman</actor>
<actor filmografia="P4">Tom Cruise</actor>
</actores>
</cine>

Solución:

24.- Realizar los cambios necesarios en la DTD interna del documento.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE lunas [
<!ELEMENT luna EMPTY>
<!ATTLIST luna numero ID #REQUIRED>
<!ATTLIST luna nombre ID #REQUIRED>
<!ATTLIST luna planeta #IMPLIED>
]>

<lunas>
<luna numero="N234" nombre="Galatea"/>
<luna numero="N479" nombre="Mimas" planeta="Saturno"/>
<luna numero="N566" nombre="Diode" planeta="Saturno"/>
<luna numero="N607" nombre="Miranda" planeta="Urano"/>
</lunas>

Solución:

25.- Escribir un documento XML con una DTD interna que represente la
siguiente información ficticia:
PANEL DE VUELOS DE SALIDA DEL AEROPUERTO JFK –
20/12/2013

Código Diario Origen Destino Hora Hora Estado


salida llegada

V22 SI New York Chicago 9:30 11:30 R

V23 NO New York Miami 10:15 11:15 C

Consideraciones respecto a la DTD:

 Hay que guardar el nombre del aeropuerto, los datos de


cada vuelo agrupados y la fecha del panel, en ese orden.

 En la DTD, sólo el código de un vuelo y su estado deben representarse


mediante atributos.

 Se tiene que indicar que el código ha de ser único y obligatorio para


cada vuelo.

 Los posibles estados de un vuelo son C (Cancelado), E (En


hora), R (Retrasado). El valor por defecto debe ser E.

 En la DTD debe indicarse que al menos tiene que aparecer un vuelo y,


para cada uno de ellos, se tiene que guardar la información en el mismo
orden en el que aparece en el panel.

 Para indicar si un vuelo es diario, se debe utilizar un elemento vacío


que, respecto a cada vuelo, podrá aparecer (en el caso de sí ser diario) o
no aparecer (en el caso contrario).

Solución:
"panel-de-vuelos.xml"
26.- Escribir un documento XML con una DTD interna que represente la
información contenida en la siguiente factura ficticia:

FACTURA NÚMERO 27 – FECHA: 18/12/2013

DATOS EMISOR: DATOS CLIENTE:

Librería Pérez Biblioteca Txantrea

CIF: 44555666B CIF: 33111222A

Teléfono: 777888999 Teléfono: 333999444

DETALLE FACTURA:

CÓDIGO-ARTÍCULO TIPO DESCRIPCIÓN CANTIDAD OFERTA PVP

AW7 Libro Analítica Web 2.0 1 SI 25€

CP5 DVD Curso de HTML 2 NO 30€

IMPORTE: 85€

Consideraciones respecto a la DTD:

 Hay que guardar los datos del emisor de la factura agrupados. A


continuación, los datos del cliente, también agrupados. Y finalmente,
los datos de detalle donde se escriben (en líneas) los datos de cada
artículo, así como, el importe total.

 Obsérvese que en cada línea se indica el código de un artículo, el tipo al


que pertenece, su descripción, la cantidad facturada, si está de oferta o
no, y el PVP (Precio de Venta al Público). Ahora bien, de los datos que
aparecen en cada línea, sólo el código del artículo y el tipo deben
representarse mediante atributos en la DTD.

 Se tiene que indicar que el código del artículo ha de ser único y


obligatorio para cada artículo.

 Los posibles tipos de un artículo son Libro, DVD o Varios, no


permitiéndose otro valor. Ahora bien, este atributo debe indicarse que es
opcional.
 El importe también debe representarse por medio de un atributo, que
debe ser obligatorio.

 En la DTD debe indicarse que al menos tiene que aparecer una línea de
detalle y, para cada una de ellas, se tiene que guardar la información en
el mismo orden en el que aparece en la factura.

 Para indicar si un artículo está de oferta, se debe utilizar un elemento


vacío que, respecto a cada artículo, podrá aparecer (en el caso de sí
estar de oferta) o no aparecer (en el caso contrario).

 Respecto al número de la factura y su fecha de emisión, deben


representarse mediante atributos obligatorios donde se estime más
apropiado.

Solución:
"factura.xml"

También podría gustarte