Ejercicio de DTD - Corregir errores de "elementos.xml"
El siguiente documento XML ("elementos.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 elementos [
<!ELEMENT elementos (pcdata*, any+, vacio)>
<!ELEMENT pcdata (#PCDATA)>
<!ELEMENT any (ANY)>
<!ELEMENT vacío (EMPTY)>
]>
<elementos>
<any/>
<vacio/>
</elementos>
Solución 1:
En este documento se almacena información sobre elementos.
<!DOCTYPE elementos [
<!ELEMENT elementos (pcdata*, any+, vacio)>
<!ELEMENT pcdata (#PCDATA)>
<!ELEMENT any ANY>
<!ELEMENT vacio EMPTY>
]>
Errores detectados y corregidos en la DTD
- ANY y EMPTY deben escribirse sin paréntesis.
Solución 2: considerando "ANY" y "EMPTY" como elementos en vez de tipos
<!DOCTYPE elementos [
<!ELEMENT elementos (pcdata*, any+, vacio)>
<!ELEMENT pcdata (#PCDATA)>
<!ELEMENT any (ANY*)>
<!ELEMENT ANY (#PCDATA)>
<!ELEMENT vacio (EMPTY*)>
<!ELEMENT EMPTY (#PCDATA)>
]>
- Se ha definido el contenido de los elementos "ANY" y "EMPTY" como #PCDATA.
- Con * o ? se tiene que indicar que los elementos "ANY" y "EMPTY" pueden no aparecer.
Así, se podría escribir, por ejemplo:
<elementos>
<any>
<ANY>Elemento ANY</ANY>
</any>
<vacio>
<EMPTY>Elemento EMPTY</EMPTY>
</vacio>
</elementos>