Entidad SGML - SGML entity

En el lenguaje de marcado estándar generalizado (SGML), una entidad es un tipo de datos primitivo , que asocia una cadena con un alias único (como un nombre especificado por el usuario) o una palabra reservada SGML (como ). Las entidades son fundamentales para la estructura organizativa y la definición de documentos SGML. La especificación SGML define numerosos tipos de entidades , que se distinguen por los calificadores de palabras clave y el contexto. Un valor de cadena de entidad puede consistir de diversas formas en texto sin formato , etiquetas SGML y / o referencias a entidades previamente definidas. Ciertos tipos de entidades también pueden invocar documentos externos. Las entidades se llaman por referencia . #DEFAULT

Tipos de entidad

Las entidades se clasifican en generales o paramétricas:

  • Solo se puede hacer referencia a una entidad general dentro del contenido del documento.
  • Solo se puede hacer referencia a una entidad de parámetro dentro de la definición de tipo de documento (DTD).

Las entidades también se clasifican además como analizadas o no analizadas:

  • Una entidad analizada contiene texto, que se incorporará al documento y se analizará si se hace referencia a la entidad. Una entidad de parámetro solo puede ser una entidad analizada.
  • Una entidad no analizada contiene cualquier tipo de datos, y una referencia a ellos dará como resultado que la aplicación simplemente sea notificada de la presencia de la entidad; el contenido de la entidad no se analizará, incluso si es texto. Una entidad no analizada solo puede ser externa.

Entidades internas y externas

Una entidad interna tiene un valor que es una cadena literal o una cadena analizada que comprende el marcado y las entidades definidas en el mismo documento (como una Declaración de tipo de documento o un subdocumento). Por el contrario, una entidad externa tiene una declaración que invoca un documento externo, por lo que necesita la intervención de un administrador de la entidad para resolver la referencia del documento externo.

Entidades del sistema

Una declaración de entidad puede tener un valor literal, o puede tener alguna combinación de un SYSTEM identificador opcional , que permite a los analizadores SGML procesar el referente de cadena de una entidad como un identificador de recurso, y un PUBLICidentificador opcional , que identifica a 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 conoce en el documento de llamada 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 ).

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 "Hello world">
<!ENTITY greeting2 SYSTEM "file:///hello.txt">
<!ENTITY % greeting3 "¡Hola!">
<!ENTITY greeting4 "%greeting3; means Hello!">

Este marcado DTD declara lo siguiente:

  • Existe una entidad general interna nombrada greeting1y consta de la cadena Hello world.
  • Existe una entidad general externa nombrada greeting2y consta del texto que se encuentra en el recurso identificado por el URI file:///hello.txt .
  • Existe una entidad de parámetro interna denominada greeting3y consta de la cadena ¡Hola!.
  • Existe una entidad general interna nombrada greeting4y consta de la cadena ¡Hola! means Hello!.

Los nombres de las entidades deben seguir las reglas para los nombres SGML y existen limitaciones sobre dónde se puede hacer referencia a las entidades.

Se hace referencia a las entidades de parámetro colocando el nombre de la entidad entre %y ;. Se hace referencia a las entidades generales analizadas 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 ENTIDAD.

Las entidades generales del ejemplo anterior pueden estar referenciadas en un documento de la siguiente manera:

<content>
  <info>'&greeting1;' is a common test string.</info>
  <info>The content of hello.txt is: &greeting2;</info>
  <info>In Spanish, &greeting4;</info>
</content>

Cuando se analiza, este documento se informará a la aplicación posterior de la misma manera que si se hubiera escrito de la siguiente manera, asumiendo que el hello.txtarchivo contiene el texto Salutations:

<content>
  <info>'Hello world' is a common test string.</info>
  <info>The content of hello.txt is: Salutations</info>
  <info>In Spanish, ¡Hola! means Hello!</info>
</content>

Una referencia a una entidad no declarada es un error a menos que se haya definido una entidad por defecto. Por ejemplo:

 <!ENTITY DEFAULT "This entity is not defined">

Las construcciones de marcado y las opciones de procesador adicionales pueden afectar si se procesan las entidades y cómo se procesan. Por ejemplo, un procesador puede ignorar opcionalmente entidades externas.

Entidades de carácter

Los conjuntos de entidades estándar para SGML y algunos de sus derivados se han desarrollado como dispositivos mnemotécnicos , para facilitar la creación de documentos cuando existe la necesidad de utilizar caracteres que no se escriben fácilmente o que no son ampliamente compatibles con las codificaciones de caracteres heredadas. Cada una de estas entidades consta de un solo personaje del Conjunto de caracteres universal . Aunque se puede hacer referencia a cualquier carácter mediante una referencia de carácter numérico , una referencia de entidad de carácter permite que se haga referencia a los caracteres por nombre en lugar de por punto de código .

Por ejemplo, HTML 4 tiene 252 entidades de caracteres integradas que no necesitan declararse explícitamente, mientras que XML tiene cinco. XHTML tiene los mismos cinco que XML, pero si sus DTD se utilizan explícitamente, entonces tiene 253 (siendo & apos; la entidad adicional más allá de las de HTML 4).

Ver también

Notas

Referencias

  • Goldfarb, Charles F. (Ed.). Revisión de ISO 8879: WG8 N1855 . WG8 y enlaces, 1996.
  • Goldfarb, Charles F. y Yuri Rubinsky (Ed.). El manual de SGML . Prensa de la Universidad de Oxford, 1991.

enlaces externos