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:
En general, las entidades se pueden declarar de forma interna o de forma externa. Veamos cada una de sus formas y su sintaxis correspondiente:
Si una entidad se declara en un DTD se llamará entidad interna.
SintaxisA continuación les mostramos la sintaxis para la declaración de entidades internas:
<!ENTITY entity_name "entity_value">
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.
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.
SintaxisA continuación una muestra de la sintaxis para la declaración de entidad externa:
<!ENTITY name SYSTEM "URI/URL">
<!DOCTYPE name SYSTEM "address.dtd" [...]>Como puede ver contiene la palabra clave SYSTEM y una referencia URI señalando la localización'del documento.
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">Como puede observar, empieza con al palabra clave PUBLIC, seguido de un identificador especializado. Los identificadores públicos se usan para identificar una entrada en un catálogo. Los identificadores públicos pueden tener cualquier tipo de formato; sin embargo, un formato usado frecuentemente se llama Indentificadores públicos formales, o FPIs.
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)>
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.
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 " " " amp & & & apos ' ' ' lt < < < gt > > >
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 & carácter es reemplazado por & cuando el procesador halla esto.
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.
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 "©"> ]> <author>&writer;©right;</author>
Podemos darnos cuenta que se ha usado © 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 ©.
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.
Para declarar entidades generales, use una declaración de este formulario general en su DTD:
<!ENTITY ename "text">
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.
El objetivo de la entidad de parámetro es permitir que usted pueda crear secciones de texto de recambio reutilizables.
A continuación la sintaxis para la declaración de entidad de parámetro:
<!ENTITY % ename "entity_value">
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.