Solución: Actividad 401
Se debe añadir el siguiente DOCTYPE al documento XML:
<!DOCTYPE torneo SYSTEM "401.dtd">
El documento DTD externo es el siguiente:
401.dtd
<!ELEMENT torneo (participante+)>
<!ATTLIST torneo edicion CDATA #REQUIRED>
<!ATTLIST torneo anteriorGanador CDATA #REQUIRED>
<!ELEMENT participante (nombre, edad, pais, cabezaDeSerie?)>
<!ATTLIST participante idP ID #REQUIRED>
<!ATTLIST participante pareja IDREF #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT cabezaDeSerie EMPTY>
Algunas consideraciones:
- El atributo
anteriorGanador
debe ser de tipoCDATA
en vez deIDREF
porque el identificador del anterior ganador está en otro docuemnto. El tipo de datoIDREF
solo permite referenciar elementos dentro del propio documento XML. - Como todos los atributos son obligatorios, todo deben llevar
#REQUIRED
. - Los identificadores deben ser del tipo
ID
, como es el caso del atributoparticipante
. - Las referencias a identificadores son del tipo
IDREF
, como es el caso del atributopareja
. - El elemento
cabezaDeSerie
debe ser de tipoEMPTY
porque no puede tener contenido. - Existe la posibilidad de utilizar
NMTOKEN
en lugar deCDATA
si queremos restringir los caracteres que pueda contener el valor del atributo.