En el Lenguaje de Marcado Generalizado Estándar (SGML), una entidad es un tipo de dato primitivo que asocia una cadena con un alias único (como un nombre especificado por el usuario) o una palabra reservada de SGML (como ). Las entidades son fundamentales para la estructura organizativa y la definición de los documentos SGML. La especificación SGML define numerosos tipos de entidades , que se distinguen por calificadores de palabras clave y contexto. El valor de una cadena de entidad puede consistir en texto plano , etiquetas SGML y/o referencias a entidades definidas previamente. Ciertos tipos de entidades también pueden invocar documentos externos. Las entidades se llaman por referencia .#DEFAULT
Tipos de entidades
Las entidades se clasifican como generales o paramétricas:
- Una entidad general solo puede ser referenciada dentro del contenido del documento.
- Una entidad de parámetro solo puede ser referenciada dentro de la definición del tipo de documento (DTD).
Las entidades también se clasifican como analizadas o no analizadas:
- Una entidad analizada contiene texto, que se incorporará al documento y se analizará si se hace referencia a dicha entidad. Una entidad de parámetro solo puede ser una entidad analizada.
- Una entidad no analizada contiene cualquier tipo de datos, y al hacer referencia a ella, la aplicación simplemente recibirá una notificación de su presencia; el contenido de la entidad no se analizará, incluso si se trata de texto. Una entidad no analizada solo puede ser externa.
Entidades internas y externas
Una entidad interna tiene un valor que puede ser una cadena literal o una cadena analizada que comprende marcado y entidades definidas en el mismo documento (como una Declaración de Tipo de Documento o un subdocumento). En cambio, una entidad externa tiene una declaración que invoca un documento externo, lo que requiere la intervención de un gestor de entidades para resolver la referencia al documento externo.
Entidades del sistema
Una declaración de entidad puede tener un valor literal o una combinación de un SYSTEMidentificador opcional , que permite a los analizadores SGML procesar la cadena de referencia de una entidad como un identificador de recurso, y un PUBLICidentificador opcional, que identifica la entidad independientemente de cualquier representación particular. En XML , un subconjunto de SGML , una declaración de entidad puede no tener un PUBLICidentificador sin un SYSTEMidentificador.
entidad de documento SGML
Cuando una entidad externa hace referencia a un documento SGML completo, se la conoce en el documento que la llama como una entidad de documento SGML . Un documento SGML es un documento de texto con marcado SGML definido en un prólogo SGML (es decir, el DTD y los subdocumentos). Un documento SGML completo comprende no solo la instancia del documento en sí, sino también el prólogo y, opcionalmente, la declaración SGML (que define la sintaxis de marcado del documento y declara la codificación de caracteres ). [ 1 ]
Sintaxis
Una entidad se define mediante una declaración de entidad en la definición de tipo de documento (DTD) de un documento. Por ejemplo:
<!ENTITY greeting1 "Hola mundo" > <!ENTITY greeting2 SYSTEM "file:///hello.txt" > <!ENTITY % greeting3 ¡Hola!" > <!ENTITY greeting4 "%greeting3; significa ¡Hola!" >Este marcado DTD declara lo siguiente:
- Existe una entidad general interna llamada
greeting1y consta de la cadenaHello world. - Existe una entidad general externa denominada
greeting2que consiste en el texto encontrado en el recurso identificado por la URIfile:///hello.txt. - Existe una entidad de parámetro interno llamada
greeting3que consta de la cadena¡Hola!. - Existe una entidad general interna llamada
greeting4y consta de la cadena¡Hola! means Hello!.
Los nombres de las entidades deben seguir las reglas de los nombres SGML , y existen limitaciones sobre dónde se puede hacer referencia a las entidades.
Las entidades de parámetros se referencian colocando el nombre de la entidad entre %y ;. Las entidades generales analizadas se referencian colocando el nombre de la entidad entre " &" y " ;". Las entidades no analizadas se referencian colocando el nombre de la entidad en el valor de un atributo declarado como tipo ENTITY.
Las entidades generales del ejemplo anterior podrían referenciarse en un documento de la siguiente manera:
<content> <info> ' &greeting1; ' es una cadena de prueba común . </info> <info> El contenido de hello.txt es: &greeting2; </info> <info> En español, &greeting4; </info> </content>Al ser analizado, este documento se informaría a la aplicación posterior de la misma manera que si se hubiera escrito de la siguiente forma, suponiendo que el hello.txtarchivo contiene el texto Salutations:
<content> <info> 'Hola mundo' es una cadena de prueba común . </info> <info> El contenido de hello.txt es: Saludos </info> <info> En español, ¡Hola! significa Hello! </info> </content>Hacer referencia a una entidad no declarada es un error a menos que se haya definido una entidad predeterminada. Por ejemplo:
<!ENTIDAD #PREDETERMINADO "Esta entidad no está definida" >Las estructuras de marcado adicionales y las opciones del procesador pueden afectar si las entidades se procesan y cómo se procesan. Por ejemplo, un procesador puede ignorar opcionalmente las entidades externas.
Entidades de carácter
Los conjuntos de entidades estándar para SGML y algunos de sus derivados se han desarrollado como recursos mnemotécnicos para facilitar la creación de documentos cuando es necesario utilizar caracteres difíciles de escribir o que no son ampliamente compatibles con las codificaciones de caracteres antiguas. Cada una de estas entidades consta de un solo carácter del Conjunto Universal de Caracteres (UCC) . Si bien cualquier carácter puede referenciarse mediante una referencia numérica , una referencia de entidad de carácter permite referenciar los caracteres por su nombre en lugar de por su código .
Por ejemplo, HTML 4 tiene 252 entidades de caracteres integradas que no necesitan ser declaradas explícitamente, mientras que XML tiene cinco. XHTML tiene las mismas cinco que XML, pero si se utilizan explícitamente sus DTD, entonces tiene 253 ( 'siendo la entidad adicional más allá de las que existen en HTML 4).
Véase también
Notas
- ↑ "Web SGML y HTML 4.0 explicados - Capítulo 6" . www.is-thought.co.uk . Archivado del original el 5 de febrero de 2009.
Referencias
- Goldfarb, Charles F. (Ed.). Revisión de la norma ISO 8879: WG8 N1855 . WG8 y Enlaces, 1996.
- Goldfarb, Charles F., y Yuri Rubinsky (eds.). Manual de SGML . Oxford University Press , 1991.
Enlaces externos
- Gestión de entidades en SGML
- Lenguajes de marcado
- SGML