Tutoriales de informática - Abrirllave.com

Abrirllave.com

Secciones condicionales en DTD

En DTD externas se pueden definir las secciones IGNORE e INCLUDE, para ignorar o incluir declaraciones. Las sintaxis empleadas para ello son:

<![ IGNORE [ declaraciones ]]>
<![ INCLUDE [ declaraciones ]]>

El uso de las secciones condicionales suele estar ligado a entidades paramétricas.

EJEMPLO Si en un archivo llamado "persona.dtd" se ha escrito:

<![ %datos_basicos; [
   <!ELEMENT persona (nombre, edad)>
]]>

<![ %datos_ampliados; [
   <!ELEMENT persona (nombre, apellidos, edad, ciudad)>
]]>

<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>

El siguiente documento XML sería válido:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE persona SYSTEM "persona.dtd" [
   <!ENTITY % datos_basicos "INCLUDE">
   <!ENTITY % datos_ampliados "IGNORE">
]>

<persona>
   <nombre>Elsa</nombre>
   <edad>23</edad>
</persona>

También sería válido el documento:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE persona SYSTEM "persona.dtd" [
   <!ENTITY % datos_basicos "IGNORE">
   <!ENTITY % datos_ampliados "INCLUDE">
]>

<persona>
   <nombre>Ana</nombre>
   <apellidos>Sanz Tin</apellidos>
   <edad>19</edad>
   <ciudad>Pamplona</ciudad>
</persona>