Ejercicio de DTD - Corregir errores de "socios.xml"
El siguiente documento XML ("socios.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 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:
En este documento se almacena información sobre socios.
<!DOCTYPE socios [
<!ELEMENT socios (socio)*>
<!ELEMENT socio ((numero | clave)?, nombre, edad?)>
<!ELEMENT clave (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT numero (#PCDATA)>
]>
Errores detectados y corregidos en la DTD
- Para que el elemento "socio" pueda contener al elemento "numero" o al elemento "clave", estos tienen que separarse con una barra vertical (|). Además, como se puede observar, no es obligatorio escribir ninguno de ellos. Por tanto, en vez del operador + (signo más), hay que utilizar el operador ? (interrogación). El operador * (asterisco) también serviría para validar el documento.
- Por otro lado, por medio del operador ? (interrogación), hay que indicar que el elemento "edad" es opcional. Asimismo, el operador * (asterisco) permitiría validar el documento.