ENTITY (XML)

La instrucción ENTITY se emplea para definir entidades en la DTD para utilizarlas tanto en el documento XML asociado a la DTD como en la propia DTD. Una ENTIDAD ofrece una entrada abreviada que se puede situar en el documento XML. El nombre abreviado es lo que usted incluye en el parámetro de nombre. Las ENTIDADES resultan muy útiles para repetir información o bloques grandes de texto que pueden estar guardados en archivos separados. El nombre abreviado va seguido de ; en el documento de XML ( (&abbName;)

A continuación se muestra un ejemplo de ENTIDADES que se emplean en una DTD y un archivo XML.

longtext.txt

Lo siguiente es el contenido de longtext.txt:

<definition>ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

</definition>

dtd_chunk.dtd

<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>

sample.dtd

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>

<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">
<!ENTITY % lists "(ol | ul)">
<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
%dtd_chunk;
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type &lists;>
]>

Cuando se analiza el documento DTD, se obtienen los resultados siguientes. Observe que la sustitución solo se produce en la memoria. El analizador no cambia el archivo realmente.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>
<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">

<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type (ol | ul)>
]>

sample.xml

<?xml version="1.0" standalone="no" ?>
<heading>Definition list for &xml; attributes used in DTD files.</heading>
    <file_info name="topfile">
        <icon source="file_pic"/>
        <list list_type="ul"/>
        %attlist_def
    </file_info>
<footer>Conclusion of definition list for &xml; attributes.</footer>

Resultado del documento XML analizado.

Cuando se analiza el documento XML, se obtienen los resultados siguientes:

Definition list for eXtensible Markup Language attributes used in DTD files.

top file

ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

Conclusion of definition list for eXtensible Markup Language attributes.

Sintaxis

<!ENTITY [%] name [SYSTEM|PUBLIC publicID] resource [NDATA notation] >

Parámetros

  • name
    Nombre de la entidad. Requerido para todas las definiciones de entidad.

  • publicID
    Identificador público de la entidad. Solo es necesario si la declaración utiliza la palabra clave PUBLIC.

  • recurso
    El valor de la entidad. Requerido para todas las definiciones de entidad. En el caso de entidades internas, se trata de una cadena de texto que se analiza y expande. En el caso de entidades externas, se trata de un identificador de recursos uniforme (URI) que identifica una entidad externa como un nombre de archivo o tipo de archivo.

  • notación
    El nombre de una notación declarada en otro lugar de la DTD mediante la instrucción NOTATION. Solo es necesaria cuando se declara una entidad sin analizar mediante el uso de la palabra clave NDATA (dato que no es XML).

Ejemplos

ms256483.collapse_all(es-es,VS.120).gifEntidad general (interna analizada)

El ejemplo siguiente declara entidades generales internas a las que se puede hacer referencia como &oumlaut; y &xml; en documentos XML que utilizan la DTD.

<!ENTITY oumlaut "&#38;#246;">

o un ejemplo simple de sustitución de texto es

<!ENTITY xml "eXtensible Markup Language">

El analizador XML expande el valor sin formato de la entidad (&#38;#246;) para incluirlo en el documento XML interno. En el resultado final del documento analizado, se utiliza el valor "&#38;" para crear el carácter "" y el valor aparece en el documento XML como "&#246;".

ms256483.collapse_all(es-es,VS.120).gifEntidad de parámetro (interna analizada)

El ejemplo siguiente declara una entidad de parámetro interna a la que puede hacerse referencia como %lists; en otros lugares de la DTD. Esto permite que aparezcan varias referencias a los elementos de la lista XHTML, <ul> y <ol>.

<!ENTITY % lists "ul | ol">

ms256483.collapse_all(es-es,VS.120).gifEntidad externa sin analizar

El siguiente ejemplo muestra una entidad externa sin analizar que le permite codificar vínculos con datos que no son XML (en este caso, un archivo de imagen con formato GIF) para incluirlos en el documento XML.

<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>

En ese caso, el uso de la palabra clave NDATA obliga a utilizar una declaración NOTATION para una notación llamada "jpg" junto con esta declaración. Para obtener más información, vea NOTATION.

ms256483.collapse_all(es-es,VS.120).gifComentarios

Las ENTIDADES pueden utilizarse de distintos modos. Si no está seguro de cómo definir una entidad para utilizarla, tal vez las siguientes preguntas le ayuden a comprender mejor las distintas condiciones en las que se utilizan las entidades que declara en la DTD:

  • El valor de la entidad, ¿se debe utilizar simplemente para abreviar una cadena de texto más grande que puede sufrir cambios mientras exista el documento? Utilice una entidad general.

  • ¿Se usará como un puntero para algo externo a la DTD o al documento XML (es decir, entidades externas), como un nombre de archivo o un tipo MIME? Utilice una entidad externa sin analizar.

  • ¿El valor URI de la entidad se analizará (es decir, se expande como parte de la DTD o de un documento XML que la usa), o permanecerá sin analizar (es decir, el analizador XML omitirá sus contenidos del documento analizado final)?

  • Si se analizó, ¿el contenido de la entidad expandida será parte del documento XML que usa la DTD (es decir, las entidades generales) o parte de la propia DTD (es decir, las entidades de parámetro)?

Vea también

Conceptos

ATTLIST (Lista de atributos)

ELEMENT

NOTATION