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
anteriorGanadordebe ser de tipoCDATAen vez deIDREFporque el identificador del anterior ganador está en otro docuemnto. El tipo de datoIDREFsolo 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
cabezaDeSeriedebe ser de tipoEMPTYporque no puede tener contenido. - Existe la posibilidad de utilizar
NMTOKENen lugar deCDATAsi queremos restringir los caracteres que pueda contener el valor del atributo.