Saltar al contenido principal

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 tipo CDATA en vez de IDREF porque el identificador del anterior ganador está en otro docuemnto. El tipo de dato IDREF 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 atributo participante.
  • Las referencias a identificadores son del tipo IDREF, como es el caso del atributo pareja.
  • El elemento cabezaDeSerie debe ser de tipo EMPTY porque no puede tener contenido.
  • Existe la posibilidad de utilizar NMTOKEN en lugar de CDATA si queremos restringir los caracteres que pueda contener el valor del atributo.