DTD - Entidades (Un resumen)

Descripción general:

Tal como se ha hecho por el W3 Consortium la definición de la entidad es la siguiente:
La entidad de documento sirve como la raíz de la entidad árbol y el punto de partida de un procesador XML.

Esto significa, las entidades son los marcadores de posición de XML. Estos se pueden declarar en prólogo del documento o en un DTD Hay diferentes tipos de entidades y este capítulo se analizan entidades de caracteres.

Ambos, el HTML y el XML, tienen algunos símbolos reservados para su uso, que no pueden ser utilizados como contenido en código XML. Por ejemplo, < y > se utilizan signos de apertura y cierre las etiquetas XML. Para mostrar estos caracteres especiales, las entidades de caracteres se utilizan.

Hay pocos caracteres especiales o símbolos que no están disponibles para ser escrito directamente desde el teclado. Entidades de caracteres se puede utilizar para mostrar los símbolos y caracteres especiales.

Las entidades se usan para definir atajos para caracteres especiales en documentos XML. Las entidades pueden ser de cuatro tipos:

Las entidades pueden ser de cuatro tipos:

Sintaxis para declaración de entidades

En general, las entidades se pueden declarar de forma interna o de forma externa. Veamos cada una de sus formas y su sintaxis correspondiente:

Entidad interna

Si una entidad se declara en un DTD se llamará entidad interna.

Sintaxis

A continuación les mostramos la sintaxis para la declaración de entidades internas:

<!ENTITY entity_name "entity_value">
En la sintaxis mostrada:

Ejemplo

A continuación les exponemos un simple ejemplo para declaración de entidad interna:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
<address>
   &name;
   &company;
   &phone_no;
</address>
     

En el ejemplo de arriba, los nombres de entidad respectivosname, company y phone_no se reemplazan por sus valores en el documento XML. Los valores de entidad se dereferencian añadiendo el prefijo & al nombre de la entidad.

Entidad externa

Si una entidad se declara fuera del DTD se denomina entidad externa. Usted puede referir una entidad externa usando identificadores de sistema o bien identificadores públicos.

Sintaxis

A continuación una muestra de la sintaxis para la declaración de entidad externa:

<!ENTITY name SYSTEM "URI/URL">
En la sintaxis mostrada:

Referenciar un DTD externo

Usted puede referir un DTD externo usando:
Ejemplo

Entenderemos mejor la entidad externa con el siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Debajo se encuentra el contenido de el archivo de DTD address.dtd:

<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Entidades integradas

Todos los analizadores XML deben ser compatibles con entidades integradas. En general, se pueden usar estas referencias de entidad en cualquier lugar. También se puede usar texto normal en documentos XML document, como en el caso de los contenidos de elemento y valores de atributo.

Hay 5 entidades integradas que juegan su papel en XML bien formados, estas son:

La siguiente tabla enumera algunas entidades de caracteres predefinidos con sus valores numéricos:

       Nombre de                 Referencia   Referencia
       la Entidad   Carácter     Decimal      Hexadecimal
         quot           "          &#34;         &#x22;
         amp            &          &#38;         &#x26;
         apos           '          &#39;         &#x27;
         lt             <          &#60;         &#x3C;
         gt             >          &#62;         &#x3E;
     

Ejemplo

El siguiente ejemplo muestra la declaración de la entidad integrada:

<?xml version="1.0"?>
<note>
   <description>I'm a technical writer & programmer</description>
<note>

Como puede ver el &amp; carácter es reemplazado por & cuando el procesador halla esto.

Entidades de carácter

Las entidades de carácter se usan para nombrar alguna de las entidades que son representaciones simbólicas de información, esto es, caracteres que son dificilmente o imposibles de escribir, se pueden substituir por entidades de carácter.

Ejemplo

El siguiente ejemplo muestra la declaración de entidades de carácter:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE author[
<!ELEMENT author (#PCDATA)>
<!ENTITY writer "Tanmay patil">
<!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

Podemos darnos cuenta que se ha usado &#169; como valor para el carácter copyright(con derechos de autor). Guarde este archivo como sample.xml y ábralo en su explorador, verá que copyright es reemplazado por el carcater ©.

Entidades generales

Las entidades generales se deben declarar en el DTD antes de que se puedan usar en el documento XML. En vez de representar un solo carcater, las entidades generales pueden representar caracteres, párrafos, y hasta documentos enteros.

Sintaxis

Para declarar entidades generales, use una declaración de este formulario general en su DTD:

<!ENTITY ename "text">

Ejemplo

El siguiente ejemplo muestra declaraciones de entidad general:

<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY source-text "tutorialspoint">
]>
<note>
&source-text;
</note>

Cuando un analizador XML encuentra una referencia a la entidad source-text aportará un texto de recambio a la aplicación en el lugar de la referencia.

Entidades de parámetro

El objetivo de la entidad de parámetro es permitir que usted pueda crear secciones de texto de recambio reutilizables.

Sintaxis

A continuación la sintaxis para la declaración de entidad de parámetro:

<!ENTITY % ename "entity_value">

Ejemplo

El siguiente ejemplo muestra la declaración de entidad de parámetro. Imagine que tiene declaraciones de elemento como se muestra a continuación:

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

Ahora imagine que quiere añadir un elemento adicional country, entonces lo tendrá que añadir a las cuatro declaraciones. Por lo tanto podemos ir a por una referencia de entidad de parámetro. Ahora usando la referencia de entidad de parámetro con el ejemplo anterior:

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

La entidades de parámetro se dereferencia de la misma forma que la referencia de entidad general, solo que con un signo de porcentaje (%) en vez de con un ampersand(&):

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

Cuando el analizador lee estas declaraciones, substituye el texto de recambio de la entidad por la referencia de entidad.