Ejercicio de DTD - Corregir errores de "cine.xml"
El siguiente documento XML ("cine.xml") está bien formado. Sin embargo, no es válido. Para que lo sea, realizar los cambios necesarios en la DTD interna de dicho 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:
En este documento se guarda información sobre cine.
<!DOCTYPE cine [
<!ELEMENT cine (peliculas, actores)>
<!ELEMENT peliculas (pelicula)*>
<!ELEMENT pelicula (#PCDATA)>
<!ATTLIST pelicula codpel ID #IMPLIED>
<!ELEMENT actores (actor)*>
<!ELEMENT actor (#PCDATA)>
<!ATTLIST actor filmografia IDREFS #REQUIRED>
]>
Errores detectados y corregidos en la DTD
- Falta la declaración del elemento "cine".
- El atributo codpel tiene que declararse opcional (#IMPLIED).
- El atributo filmografia es de tipo IDREFS.