En los documentos SGML , HTML y XML , las construcciones lógicas conocidas como datos de caracteres y valores de atributos consisten en secuencias de caracteres, en las que cada carácter puede manifestarse directamente (representarse a sí mismo), o puede representarse mediante una serie de caracteres llamada referencia de carácter , de las que existen dos tipos: una referencia de carácter numérica y una referencia de entidad de carácter . En este artículo se enumeran las referencias de entidad de carácter que son válidas en los documentos HTML y XML.
Una referencia a una entidad de carácter hace referencia al contenido de una entidad con nombre. Una declaración de entidad se crea en documentos XML, SGML y HTML (antes de HTML5) utilizando la <!ENTITY name "value">
sintaxis de una definición de tipo de documento (DTD).
En HTML y XML, una referencia de carácter numérico hace referencia a un carácter por su conjunto de caracteres universales / punto de código Unicode y utiliza el formato:
&#xhhhh;
o
&#nnnn;
donde x
debe estar en minúsculas en los documentos XML, hhhh es el punto de código en formato hexadecimal y nnnn es el punto de código en formato decimal . El hhhh (o nnnn ) puede ser cualquier número de dígitos hexadecimales (o decimales) y puede incluir ceros a la izquierda. El hhhh para dígitos hexadecimales puede mezclar letras mayúsculas y minúsculas, aunque las mayúsculas son el estilo habitual. Sin embargo, los estándares XML y HTML restringen los puntos de código utilizables a un conjunto de valores válidos, que es un subconjunto de valores de puntos de código UCS/Unicode, que excluye todos los puntos de código asignados a no caracteres o a sustitutos, y la mayoría de los puntos de código asignados a controles C0 y C1 (con la excepción de los separadores de línea y las tabulaciones tratadas como espacios en blanco).
Por el contrario, una referencia de entidad de carácter hace referencia a una secuencia de uno o más caracteres por el nombre de una entidad que tiene los caracteres deseados como texto de reemplazo . La entidad debe estar predefinida (integrada en el lenguaje de marcado) o declarada explícitamente en una definición de tipo de documento (DTD) (consulte [a] ). El formato es el mismo que para cualquier referencia de entidad:
&name;
donde nombre es el nombre de la entidad, que distingue entre mayúsculas y minúsculas. El punto y coma suele ser obligatorio en la referencia de entidad de caracteres, a menos que se indique lo contrario en la tabla siguiente (consulte [b] ).
&
, <
, >
, '
y "
. El punto y coma final es obligatorio en XML (y XHTML) para estas cinco entidades (aunque HTML o SGML permiten omitirlo para algunas de ellas, según su DTD).Se han desarrollado muchos otros conjuntos de entidades para requisitos especiales y para alfabetos mayoritarios y minoritarios. Sin embargo, la llegada de Unicode los ha reemplazado en gran medida.
El identificador público formal completo y el identificador del sistema para el subconjunto de entidades DTD (donde se define el nombre de la entidad de carácter) en realidad se asignan a partir de una de las siguientes tres entidades con nombre definidas:
PUBLIC "-//W3C//ENTITIES HTML MathML Set//EN//XML" "http://www.w3.org/2003/entities/2007/htmlmathml-f.ent"
Los subconjuntos de entidades ISO son subconjuntos de caracteres antiguos (documentados), a los que se les asignan nombres de entidad de caracteres SGML en ISO 8879 e ISO 9573, y que se utilizaban en codificaciones heredadas antes de la unificación dentro de ISO 10646. Sus identificadores públicos formales completos son los siguientes:
ISO 8879-1986//
en lugar de ISO 8879:1986//
se considera obsoleta. [3]//HTML
"-//W3C//ENTITIES Latin 1//EN//HTML"
HTML5 define muchas entidades con nombre, cuyas referencias actúan como alias mnemotécnicos para ciertos caracteres Unicode. [5] La especificación HTML5 no permite a los usuarios definir entidades adicionales, ya que ya no acepta ninguna DTD a la que se haga referencia o se extienda dentro de los documentos HTML (esto todavía es necesario en XHTML, que se basa en reglas de análisis XML más estrictas pero permite hacer referencia o definir una DTD en el encabezado del documento, porque XML no predefine la mayoría de las entidades HTML).
En la tabla siguiente, la columna "Estándar" indica la primera versión de la DTD HTML que define la referencia de entidad de carácter e indica caracteres que están predefinidos en XML sin necesidad de ninguna DTD. Para utilizar una de estas referencias de entidad de carácter en un documento HTML o XML, introduzca un ampersand (&) seguido del nombre de la entidad y un punto y coma (obligatorio en XML y muy recomendado en HTML para todas las entidades, incluso si HTML permite omitir el punto y coma solo en algunas entidades indicadas a continuación por [b] ), por ejemplo, introduzca ©©
para el símbolo de copyright .
No existen entidades de caracteres predefinidas en HTML para caracteres o secuencias de la mayoría de los alfabetos codificados en el UCS (excepto un subconjunto común de espacios en blanco, puntuación, símbolos matemáticos o técnicos, símbolos monetarios, algunos símbolos hebreos utilizados en notaciones matemáticas y las letras más comunes en latín, griego o cirílico). Tenga en cuenta también que no todos los controles bidireccionales definidos en UCS/Unicode se representan como entidades de caracteres estándar en HTML (ni siquiera en HTML5, que define elementos y atributos direccionales más generales para ese propósito). En particular, no existen entidades de caracteres HTML predefinidas para los controles que se agregaron en UCS/Unicode y se definieron formalmente en la versión 2 del algoritmo Unicode Bidi.
La mayoría de las entidades están predefinidas en XML y HTML para hacer referencia a un solo carácter en el UCS, pero no hay entidades predefinidas para caracteres de combinación aislados, selectores de variación o caracteres para asignaciones de uso privado; sin embargo, la lista incluye algunas entidades predefinidas para secuencias de caracteres de dos caracteres que contienen algunos de ellos. Desde HTML 5.0 (y MathML 3.0 que comparte el mismo conjunto de entidades en), todas las entidades están codificadas en las formas de normalización Unicode C y KC (este no era el caso con versiones anteriores de HTML y MathML, por lo que las entidades más antiguas que se definieron inicialmente con caracteres para asignaciones de uso privado, formas de compatibilidad CJK o en formas no NFC se modificaron [6] ).
Sin embargo, todos los caracteres y secuencias válidos en el UCS, incluidos todos los controles bidireccionales o asignaciones de uso privado (pero con la excepción de los controles C0 y C1 que no sean espacios en blanco, los no caracteres y los sustitutos) también se pueden usar y son válidos en HTML, XML, XHTML y MathML, ya sea en valores de texto simple de atributos o en elementos de texto (codificándolos directamente como texto simple o usando referencias de caracteres numéricos cuando sea necesario).
"
was omitted from the HTML 3.2 specification,[1] but was restored as of HTML 4.0.[2] In practice, most web browsers displaying HTML 3.2 pages render it as if it had been included in the spec.©
: U+00A9 'copyright symbol' is not the same as U+24B8 'circled Latin capital letter C', although the same glyph could be used do depict both characters. See also U+24D2 'Latin small letter c'.®
: U+00AE 'registered sign' is not the same as U+24C7 'circled Latin capital letter R', although the same glyph could be used do depict both characters.Å
: The use of U+212B 'Angstrom sign', which was encoded due to round-trip mapping compatibility with an East-Asian character encoding, is discouraged, and the preferred representation is U+00C5 'capital letter A with ring above', which has the same glyph.IJ
and ij
: The use of U+0132 'IJ ligature' or U+0133 'ij ligature', which were encoded for usage in Dutch and for compatibility for ISO/IEC 6937 and Code page 1102 (which only includes the lowercase ij, also part of the Dutch version of ISO 646 National Replacement Character Set), is discouraged, and the preferred representation is simply 'IJ' or 'ij' (as two separate letters).ŀ
: The use of U+013F 'Latin small letter l with middle dot' or U+0140 'Latin capital letter L with middle dot', which were encoded for usage in Catalan and for compatibility for ISO/IEC 6937, is discouraged, and the preferred representation is 'L' or 'l', followed by U+00B7.ʼn
: The use of U+0149 'n preceded by apostrophe', which was encoded for usage in Afrikaans and for compatibility for ISO/IEC 6937, has been deprecated by Unicode (since Unicode 5.2), and the preferred representation is ʼn (U+02BC followed by n). (Unicode.org – Proposal for Additional Deprecated Characters).Ω
: The use of U+2126 'ohm sign', is discouraged, and the preferred representation is U+03A9 'Greek capital letter Omega', which has the same glyph.​
, ​
, ​
, ​
: these are names used in the Wolfram Language for Private Use Area characters with negative advance widths;[9][10][11][12] HTML5 approximates them with the zero-width space.ℑ
, ↦
: these two entity names were defined differently, as file-type icons, in the abandoned specification for HTML version 3.0.[13][14]℗
: U+2117 'sound recording copyright' is not the same as U+24C5 'circled Latin capital letter P', although the same glyph could be used do depict both characters.ℵ
: U+2135 'alef symbol' is not the same as U+05D0 'Hebrew letter alef' (which, unlike the mathematical symbol, has strong right-to-left bidirectional text behaviour), although the same glyph could be used to depict both characters.ℶ
: U+2136 'bet symbol' is not the same as U+05D1 'Hebrew letter bet' (which, unlike the mathematical symbol, has strong right-to-left bidirectional text behaviour), although the same glyph could be used to depict both characters.ℷ
: U+2137 'gimel symbol' is not the same as U+05D2 'Hebrew letter gimel' (which, unlike the mathematical symbol, has strong right-to-left bidirectional text behaviour), although the same glyph could be used to depict both characters.ℸ
: U+2138 'dalet symbol' is not the same as U+05D3 'Hebrew letter dalet' (which, unlike the mathematical symbol, has strong right-to-left bidirectional text behaviour), although the same glyph could be used to depict both characters.⇐
: ISO 10646 does not say that 'leftwards double arrow' is the same as the 'is implied by' arrow, but also does not have any other character for that function, so lArr
can be used for 'is implied by' as ISOtech suggests.⇒
: ISO 10646 does not say that 'rightwards double arrow' is the same as the 'implies' arrow, but also does not have any other character with this function, so rArr
can be used for 'implies' as ISOtech suggests.∏
: U+220F 'n-ary product' is not the same character as U+03A0 'Greek capital letter Pi' though the same glyph might be used for both.∑
: U+2211 'n-ary summation' is not the same character as U+03A3 'Greek capital letter Sigma' though the same glyph might be used for both.∼
: U+223C 'tilde operator' is not the same character as U+007E 'tilde', although the same glyph might be used to represent both.⊅
: U+2285 'not a superset of' is in the 'ISOamsn' subset, but is not covered by the Symbol font encoding, and is not listed in the HTML 4.0 entities list on the documentation, where it was erroneously omitted; it should be included for symmetry and analogy with other entities.⊥
: Unicode only defines U+22A5 as the "up tack", and the Unicode symbol for "perpendicular" is U+27C2: the two symbols look similar, but are separate in Unicode. However, HTML uses U+22A5 as its "perpendicular" symbol: this is a discrepancy between HTML and Unicode. As well, the U+22A4 character (the "down tack" symbol) rendered in a browser such as Firefox 3.6 can match the font of either "up tack" or "perpendicular", but not both, depending on whether a fixed-width or a proportional font is used. When viewed in Firefox 3.6, the symbols rendered in the order U+22A5, U+22A4, U+27C2 in a proportional font: "⊥ ⊤ ⟂" and a fixed width one: ⊥ ⊤ ⟂
, shows that the "down tack" has a similar look to U+22A5 (HTML's "perpendicular") in the first case but matches U+27C2 in the second. This exemplifies the difficulties of the semiotics involved in interpreting glyphs, symbols and characters generally.⋅
: U+22C5 'dot operator' is not the same character as U+00B7 'middle dot'.⋘
: U+22D8 'very much less-than' is missing in the HTML 5.2 list of entities, where it was omitted.⟨
: U+27E8 'mathematical left angle bracket' is not the same character as U+003C 'less than', U+2039 'single left-pointing angle quotation mark', or U+3008 'left angle bracket'. In HTML 5.0, lang
was remapped to this code, as U+2329 'left-pointing angle bracket' has been marked deprecated in Unicode (since version 5.2) (Unicode.org – Proposal for Additional Deprecated Characters).⟩
: U+27E9 'mathematical right angle bracket' is not the same character as U+003E 'greater than', U+203A 'single right-pointing angle quotation mark', or U+3009 'right angle bracket'. In HTML 5.0, rang
had been remapped to this code, as U+232A 'right-pointing angle bracket' has been marked deprecated in Unicode (since version 5.2) (Unicode.org – Proposal for Additional Deprecated Characters).The XHTML DTDs explicitly declare 253 entities (including the 5 predefined entities of XML 1.0) whose expansion is a single character, which can therefore be informally referred to as "character entities". These (with the exception of the '
entity) have the same names and represent the same characters as the 252 character entities in HTML 4.0. Also, by virtue of being XML, XHTML documents may reference the predefined '
entity, which is not one of the 252 character entities in HTML 4.0. Additional entities of any size may be defined on a per-document basis. However, the usability of entity references in XHTML is affected by how the document is being processed:[citation needed]
'
or custom entity references may not be supported and may produce unpredictable results (it is recommended to use the numerical character reference '
instead).Because of the special '
case mentioned above, only "
, &
, <
, and >
will work in all XHTML processing situations.