<E>elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'.| Símbolos | Significado |
|---|---|
| ( ... ) | Delimita un grupo |
| A | A debe aparecer una sola vez |
| A+ | A debe aparece una o más veces |
| A? | A debe aparecer cero o una veces |
| A* | A puede aparecer cero o más veces |
| +(A) | A puede aparecer |
| -(A) | A no debe aparecer |
| A | B | O bien A o bien B deben aparecer, pero no las dos |
| A , B | Tanto A como B deben aparecer, y en ese orden |
| A & B | Tanto A como B deben aparecer, en cualquier orden |
<!ELEMENT ... >, conteniendo lo siguiente:Name ::= (Letter | '_' | ':') (NameChar)*, donde NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender. Es decir, se trata de una serie de carácteres que debe comenzar necesariamente por una letra, guión bajo o dos puntos seguido de cualquier carácter, guión o punto. Los dos puntos iniciales no deben usarse pues se reservan para ciertos cometidos de XML.contentspec ::= 'EMPTY' | 'ANY' | Mixed | children. Las posibles alternativas de contenido son:Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#PCDATA' S? ')'. Esto expresa que puede contener datos de carácter #PCDATA (cualquier carácter a excepción de los usados para codificar XML), opcionalmente mezclados con elementos hijos nombrados con Name, pudiendo restringuirse los tipos de los hijos pero no su orden o su número de ocurrencias (veces que aparecen).children ::= (choice | seq) ('?' | '*' | '+')?, dondechoice ::= '(' S? cp ( S? '|' S? cp )* S? ')'cp ::= (Name | choice | seq) ('?' | '*' | '+')?seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'A continuación mostramos algunos ejemplos aclaratorios de lo anterior en el DTD XHTML 1.0 Strict:
<!ELEMENT br EMPTY>.<!ELEMENT title (#PCDATA)>.<!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+)).<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*.Tipos XMLEn las especificaciones de los DTD se incluyen tipos de datos complejos para los atributos que a su vez se forman mediante otros más simples hasta llegar a los tipos de datos básicos para los atributos de la especificación XML 1.0. En los DTD encontramos las especificaciones de la lista de atributos de un elemento con una estructura parecida a esta:
<!ATTLIST nombre_elemento
nombre_atributo1 tipo declaración
nombre_atributo2 tipo declaración
nombre_atributo3 tipo declaración
...
%entidad;
...
>
Esto viene formalmente especificado en XML10 con AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' .| Símbolos | Significado |
|---|---|
| ( ... ) | Delimita un grupo |
| A | A debe aparecer una sola vez |
| A+ | A debe aparece una o más veces |
| A? | A debe aparecer cero o una veces |
| A* | A puede aparecer cero o más veces |
| +(A) | A puede aparecer |
| -(A) | A no debe aparecer |
| A | B | O bien A o bien B deben aparecer, pero no las dos |
| A , B | Tanto A como B deben aparecer, y en ese orden |
| A & B | Tanto A como B deben aparecer, en cualquier orden |
<!ATTLIST ... > como una lista de atributos, conteniendo lo siguiente:Name ::= (Letter | '_' | ':') (NameChar)*, donde NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender. Es decir, se trata de una serie de carácteres que debe comenzar necesariamente por una letra, guión bajo o dos puntos seguido de cualquier carácter, guión o punto. Los dos puntos iniciales no deben usarse pues se reservan para ciertos cometidos de XML.AttDef ::= S Name S AttType S DefaultDecl. En esta definición encontramos:AttType ::= StringType | TokenizedType | EnumeratedType. Por lo tanto los tipos de atributo pueden ser:StringType ::= 'CDATA', tipo final CDATA que estudiaremos. TokenizedType ::= 'ID'| 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS', tipos que estudiaremos: EnumeratedType ::= NotationType | Enumeration. Los tipos de notación NotationType se declara como NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')', que no estudiaremos aquí. Los tipos de enumeración Enumeration se declaran con Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')', siendo los que se aplican con mayor frecuencia en DTD-XHTML y que estudiaremos como tipo ENUMERADODefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue). Especifica la forma en que son requeridos los valores del atributo, siendo:Veámos un ejemplo de todo esto con los atributos del elemento <img> especificado en DTD-XHTML10S:
<!ATTLIST img
%attrs;
src %URI; #REQUIRED
alt %Text; #REQUIRED
longdesc %URI; #IMPLIED
height %Length; #IMPLIED
width %Length; #IMPLIED
usemap %URI; #IMPLIED
ismap (ismap) #IMPLIED
>
Esta es, como ejemplo, la lista de los atributos del elemento imagen, donde el primer atributo %attrs significa un tipo de atributos genéricos para varios elementos, declarándose una entidad que se compone de otros subtipos declarados en <!ENTITY % attrs "%coreattrs; %i18n; %events;">. Los subtipos se declaran a continuación con:
<!ENTITY % coreattrs
"id ID #IMPLIED
class CDATA #IMPLIED
style %StyleSheet; #IMPLIED
title %Text; #IMPLIED"
>
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
<!ENTITY % events
"onclick %Script; #IMPLIED
ondblclick %Script; #IMPLIED
onmousedown %Script; #IMPLIED
...
>
Por lo tanto un tipo %attrs puede ser un atributo común del subtipo %coreattrs para declarar atributos id, class, style o title, un atributo común del subtipo %i18n para declarar atributos de lenguaje lang, xml:lang, dir, o un atributo común del subtipo %events para declarar eventos tal como se detalla. Vemos que algunos ya son tipo finales como id, class que se declaran en los tipos básicos ID, CDATA y otros vuelven a declararse. Especialmente vemos que el tipo final dir es un tipo enumerado con los posibles valores ltr o rtl que se separan con una barra vertical. El resto del desglose puede verse en el DTD correspondiente.
Continuando con la lista de atributos de elemento imagen que volvemos a exponer:
<!ATTLIST img
%attrs;
src %URI; #REQUIRED
alt %Text; #REQUIRED
longdesc %URI; #IMPLIED
height %Length; #IMPLIED
width %Length; #IMPLIED
usemap %URI; #IMPLIED
ismap (ismap) #IMPLIED
>
vemos como algunos son declarados como #REQUIRED que hace que sean requeridos en todo caso (src y alt), mientras que otros son declarados opcionales con #IMPLIED.
También la declaración de atributo puede establecer un valor por defecto, como el el caso del atributo colspan del elemento <td> que establece un valor "1" si el atributo no es especificado, tal como se muestra en el DTD:
<!ATTLIST td
...
colspan %Number; "1"
...
>
Otro ejemplo de tipos enumerados es el atributo method del elemento <form>, tal que el tipo es una lista con los valores (get|post) y luego se declara como predeterminado el valor "get":
<!ATTLIST form
...
method (get|post) "get"
...
>
Otros atributos se declaran a #FIXED pues sólo pueden tomar un valor en cuyo caso será dado, como sucede con el elemento <html> que tiene un atributo xmlns cuyo valor se fija en todos los casos a "http://www.w3.org/1999/xhtml" tal como vemos en el detalle del DTD:
<!ATTLIST html
%i18n;
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
>
En definitiva y para no extendernos, se puede leer con cierta comodidad una especificación DTD sin más que ir hacia atrás buscando las definiciones declaradas hasta llegar a los tipos básicos. Sin embargo para una mayor profundización sobre XML será necesario ver la documentación al respecto XML10. Nuestro propósito en este apartado es exponer como funcionan los tipos básicos para poder entender las especificaciones de los atributos en los DTD sin que esto suponga profundizar en el estudio de XML, lo cual es un tema más extenso.
CDATASe define en XML con el subtipo CData con CData ::= (Char* - (Char* ']]>' Char*)) , lo que significa que admite cualquier carácter del subtipo Char menos la secuencia explícita de caracteres "]]>" en su interior. Este subtipo Char queda definido en XML con Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF], comprendiendo cualquier carácter de cualquier tipo, aunque los retornos de carro y tabuladores se interpretan como espacios.
Por ejemplo, el atributo genérico class es del tipo CDATA, por lo que es válido incluir carácteres como flechas o cualquier otra cosa como en este <span class="←↑↓→ ☺☻">ejemplo</span>. Sin embargo y aunque el documento pueda ser validado, debe tenerse en cuenta las limitaciones que puedan imponerse a la hora de usar este atributo con un estilo CSS por ejemplo.
<meta>, donde se observa que casi todos sus atributos tienen tipos CDATA.
<!ELEMENT meta EMPTY>
<!ATTLIST meta
%i18n;
http-equiv CDATA #IMPLIED
name CDATA #IMPLIED
content CDATA #REQUIRED
scheme CDATA #IMPLIED
>
De hecho el subtipo básico de XML10 Cdata se usa para expresar cadenas de carácteres en XML con la sección CDSect, aunque se les denomina secciones CDATA con igual nombre que el tipo de atributos que estamos exponiendo. En XML se define esta sección como sigue:
CDSect ::= CDStart CData CDEnd
CDStart ::= '<![CDATA['
CData ::= (Char* - (Char* ']]>' Char*))
CDEnd ::= ']]>'
Se trata de una sección CDSect con un inicio CDStart, un CData y finalizado con un CDEnd, donde puede incluirse cualquier string dentro de un XML y, por extensión, dentro de un XHTML, que no es otra cosa que un XML. Por ejemplo, podría servir para ocultar de los validadores XML un <style> de estilo interno o un código <script> dentro de un documento:
<![CDATA[<style>p {color: red; }</style>]]>IDPor ejemplo, el siguiente elemento usa un atributo id que es del tipo ID, siendo correcto escribir <a href="nohref" id="a9b_c88..x3--s.2" /> o incluso comenzarlo con un guión bajo <a href="nohref" id="_a9b_c88..x3--s.2" /> o conteniendo letras acentuadas o como la "ñ": <a href="nohref" id="_CAÑÓN..." />
El subtipo Name es declarado en XML como Name ::= (Letter | '_' | ':') (NameChar)* lo que viene a significar que es una cadena de caracteres que se inicia con una letra [A-Z, a-z] (esto es el subtipo Letter), un guión bajo o dos puntos. A continuación pueden agregarse 0 o más (esto es lo que significa el asterisco) subtipos NameChar que se define en XML con NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender. Un NameChar es un carácter para nombres que se corresponden con una letra [A-Z,a-z], un dígito [0-9], un punto ("."), un guión ("-"), un guión bajo ("_"), dos puntos (":"), un carácter combinado o extendido (como por ejemplo "ñ" o "á"). En definitiva todos los carácteres que se definen en UNICODE 2.0 para las letras y dígitos incluso con acentos y otros ornamentos ideográficos como la "ñ" española. Entonces no se incluyen caracteres que no sean letras como espacios, retornos de carro, tabuladores, signos gramaticales como interrogaciones, admiraciones, barras inclinadas, comas y puntos y comas, etc., además de signos con especial relevancia en XML como "< > &" así como cualquier otro carácter que no sean los especificados. Además hay que tener en cuenta que ningún subtipo XML Name debería empezar por la expresión "xml" tanto con letras mayúsculas o minúsculas o combinación de ellas, pues se reservan para cometidos de especificaciones de XML.
id, tal como se observa en el DTD XHTML 1.0 STRICT:
<!ENTITY % coreattrs
"id ID #IMPLIED
class CDATA #IMPLIED
style %StyleSheet; #IMPLIED
title %Text; #IMPLIED"
>
IDREF, IDREFSSus valores deben atenerse al subtipo XML10 Name tal como se explicó para el tipo de datos ID, cuya especificación XML volvemos a exponer, donde se observa el subtipo XML Names que se aplica para IDREFS, siendo una lista de identificadores separada por espacios:
Hay que tener en cuenta que ningún subtipo XML Name debería empezar por la expresión "xml" tanto con letras mayúsculas o minúsculas o combinación de ellas, pues se reservan para cometidos de especificacion de XML. Además debe evitarse también ":" por la misma razón.
<label> incluido en el DTD de XHTML estricto, donde se observa que tiene un atributo del tipo IDREF. En este caso el valor del atributo for debe ser tal que exista un elemento con un atributo id con el mismo valor de atributo. De esta forma se obliga a que las referencias a elementos identificadores existan en el documento.
<!ELEMENT label %Inline;>
<!ATTLIST label
%attrs;
for IDREF #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #IMPLIED
>
NMTOKEN, NMTOKENS
NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
Nmtoken ::= (NameChar)+
Nmtokens ::= Nmtoken (#x20 Nmtoken)*
name incluidos en varios elementos, por ejemplo, en el elemento <a name="referencia" />. Vemos que este atributo name no tiene nada que ver con el subtipo XML Name, a no ser que ambos se conforman con NameChar, pero el Name debe empezar necesariamente por una letra o un guión bajo, mientras que para el Nmtoken esto no es obligatorio. Por ejemplo, el elemento <a href="nohref" name="957" /> está permitido para su valor de "name" (del subtipo Nmtoken) que comience por dígito, pero el elemento <a href="nohref" id="957" /> no lo está pues su atributo "id" (del subtipo Name) empieza con un dígito. Una parte de la especificación de la lista de atributos de <a> donde se observa el tipo NMTOKEN es la siguiente:
<!ATTLIST a
%attrs;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
...
>
ENTITY, ENTITIESMediante este tipo se declaran los tipos complejos para los atributos de elementos XHTML.
href que se declara con un tipo de entidad %URI indicando el signo "%" que es un tipo declarado con una estructura ENTITY. Como vemos, un %URI es declarado como un CDATA. Tras esto podemos incluir este tipo en la lista de atributos del elemento <a> correspondiendo al atributo href.
<!ENTITY % URI "CDATA">
<!ATTLIST a
%attrs;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
...
>
EnumeratedType
EnumeratedType ::= NotationType | Enumeration
NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
<!ENTITY % cellhalign
"align (left|center|right|justify|char) #IMPLIED
char %Character; #IMPLIED
charoff %Length; #IMPLIED"
>
%tipo%URI, %UriList<html xmlns>, <head profile>, <base href>, <link href>, <script src>, <blockquote cite>, <q cite>, <ins cite>, <del cite>, <a href>, <object> (varios atributos), <img> (varios atributos), <area href>, <form action>, <input> (varios atributos).Aquí expondremos algunos ejemplos de su uso: http, ftp, mailto, file, URL absolutas y relativas.
http://www.servidor.com/ruta/pagina.html donde observamos que http:// es el protocolo usado, www.servidor.com es el nombre del servidor donde se encuentra la información, /ruta/ es la ruta de acceso en su caso a la página deseada pagina.html. Podemos también no incluir la página de la forma http://www.servidor.com/ruta/ con lo cual el navegador buscará en esa carpeta algún documento que se llame index.html o default.html. Otro protocolo similar es https:// para páginas web seguras. ftp://ftp.servidor.com/ruta/programa.exe mailto:micorreo@servidor.com, no poniéndose ninguna barra inclinada después de los dos puntos.file:///C| /ruta/pagina.html. En este caso se pone como servidor una cadena vacía, por lo que aparecen tres barras seguidas. A continuación en Windows hay que poner la letra de la unidad de disco a la que se desea acceder seguida de una barra vertical y luego el resto de la ruta.http://www.servidor.com/ruta/pagina.html . Sin embargo podemos referirnos de forma relativa a un documento. Si por ejemplo la página web anterior contiene un URL que apunta a otro sitio de la forma /imagenes/imagen1.jpg, el navegador al no encontrar la sintaxis de protocolos en el inicio de esta dirección asume que se trata de una dirección relativa al directorio actual del documento pagina.html, es decir http://www.servidor.com/ruta/, de tal forma que buscará a partir de aquí el elemento imagenes/imagen1.jpg. Por lo tanto de esta forma podemos evitarnos tener que escribir la dirección absoluta en nuestros documentos html (si usamos el protocolo http), pues cualquier dirección estará referida a partir de la dirección que ocupe esa página. También podemos retroceder por el directorio relativo a la carpeta padre como con ../carpeta/documento.html, significando que retrocedemos a la carpeta que contiene la página actual y a partir de ahí buscamos el documento señalado.%DatetimeAAAA-MM-DDThh:mm:ssD con el siguiente significado:<ins datetime>, <del datetime>.%ContentType, %ContentTypeshref, tal que si no lo soporta podrá ignorar el elemento. Por ejemplo, cuando se vincula un archivo de estilo externo a una página usando <link rel="stylesheet" type="text/css" href="base.css" />, el tipo "text/css" le dice al navegador que el archivo "base.css" contiene texto en CSS.Se usan como tipos para diversos elementos-atributos en XHTML estricto: <link type>, <style type>, <script type>, <a type>, <object type>, <object codetype>, <param type>, <form accept>, <input accept>.
Una relación completa de los tipos de contenido se pueden encontrar en el enlace incluido en la especificación de HTML401 (tipos MIME). Tomando como ejemplo el navegador Opera, versión 9.24, en menú opciones (avanzado, descargas) aparece la lista de los tipos de archivos que el navegador puede manejar. A partir de esos datos hemos realizado esta lista donde se incluye el tipo MIME y entre paréntesis la extensión del tipo de archivo. Entre corchetes y en los casos en que existe un plug-in (o conector como lo llama Opera), se indica la librería dinámica.
%MediaDesc<link media> y <style media>. Otra forma de especificar el medio de salida es usando la regla arroba @media. En principio, la lista de medios a usar son los siguientes, aunque en la regla anterior se describen algunos otros y se completa la información:%Charset, %Charsets<link charset>, <script charset>, <a charset>, <form accept-charset>. También es usado opcionalmente en <meta content>.Especifica la codificación de caracteres del recurso designado por el elemento. En plural %Charsets se forma con un lista separada por espacios de %Charset. Los valores posibles pueden ser diversos. En principio se recomienda el uso del valor "UTF-8" con el cual es posible presentar gran parte de los idiomas occidentales, incluyendo hebreo, griego y otros. A continuación se expone un glosario de términos relacionados con la necesidad de la codificación de caracteres, finalizando con algunas recomendaciones para su aplicación en XHTML y CSS.
Las especificaciones HTML 4.01, XML 1.0, CSS21 requieren el uso de la codificación IS0-10646 o UCS. El formato UTF-16 y especialmente el UTF-8 es el más usado en este sentido para idiomas occidentales, pues da la posibilidad de ocupar menos espacio y, en casos ocasionales, incoporar codificación en otros idiomas. Especialmente en el apéndice C.1 de la especificación XHTML 1.0 nos dice que cuando no se especifica una declaración de codificación con el elemento <?xml?>, entonces el documento debería codificarse con UTF-8 o UTF-16.
Las aplicaciones para editar XHTML o CSS a veces configuran la codificación por defecto de los archivos de texto CSS con ISO-8859-1. En caso de que no sea posible cambiar la configuración, es necesario incluir una regla @charset "ISO-8859-1"; al inicio del archivo o bien usar este valor para el elemento-atributo <link charset>, con el objeto de que el navegador que importe el archivo sepa de que caracteres estamos hablando. Sin embargo cuando editamos XHTML y declaramos la codificación en el elemento <?xml?>, el editor sí almacenará el texto con esa codificación.
Con el Bloc de Notas o Notepad de Windows puede abrirse/editarse el código fuente de cualquier XHTML o CSS. Las opciones para guardar el documento son ANSI, UNICODE, UNICODE BIG ENDIAN, UTF-8. ANSI es un estándar desarrollado paralelamente a ISO-8859 con la misma finalidad, donde ANSI-windows-1252 ('Latín-1') contiene un conjunto similar, aunque no equivalente, a ISO-8859-1. Por ello si se abre con el Notepad un documento que fue escrito con ISO-8859-1 nos encontraremos algunas diferencias como por ejemplo los retornos de carro. UNICODE es UTF-16 mientras que UNICODE BIG ENDIAN es el mismo pero con un ordenamiento diferente en el grupo de los bytes. UTF-8 sería la opción más adecuada para crear y guardar un nuevo documento, tras lo cual se declararía en el XHTML o CSS esa codificación. Sin embargo si no se guarda como ANSI ( opción por defecto), Windows agrega unos caracteres ocultos (para Windows) al inicio del archivo como un identificador de la codificación con la que se ha guardado. Dado que los documentos XHTML y CSS no deben contener caracteres que no formen parte de la especificación, al intentar validar un documento puede que detecte este inicio. Por ejemplo, en CSS una regla @charset debe ir al inicio del archivo, de tal forma que si antes existe algo será detectado y por tanto no podrá validarse.
@charset. Ver también codificación de caracteres CSS.%LanguageCodecódigo ( "-" subcódigo )*, tal que supone un código principal y una serie de uno o más subcódigos que especifican variaciones del idioma. Por ejemplo, "en-US" es el idioma inglés de Estados Unidos. Los códigos de dos letras siempre se entienden que pertenecen a países.Este tipo determina detalles como el tipo de comillas que se usan y otras características de los atributos de elementos. En XHTML estricto interviene en <E lang xml:lang>, <link hreflang>, <a hreflang>.
%LinkTypes<link hreflang>, <a hreflang> significa que existe una versión traducida del documento. Cuando se usa conjuntamente con <link media> significa que hay una versión diseñada para uno o más medios diferentes.<link rel>, <link rev>, <a rel>, <a rev>.%Text<E title>, <style title>, <img alt>, <area alt>, <object standby>, <table summary>.%Length<object width>, <object height>, <img width>, <img height>, <table width>, <table cellspacing>, <table cellpadding>, <colgroup charoff>, <col charoff>, <thead charoff>, <tbody charoff>, <tfoot charoff>, <tr charoff>, <th charoff>, <td charoff>.%MultiLength, %MultiLengths%Length, es decir, en píxeles o porcentajes. Luego el espacio sobrante se dividen entre los elementos que expresen longitudes relativas con el signo "*". La proporción de reparto se hace en base al entero que acompaña a "*". En XHTML estricto se usa en los siguientes elementos-atributos: <colgroup width>, <col width>.%Pixels<table border>.%Coords<a coords>, <area coords>. En combinación con el atributo <a shape> o <area shape> (del tipo %Shape) se consigue declarar la forma de un área o zona para dotarla como un vínculo. Así las formas y coordenadas son las siguientes, donde los valores deben entenderse como longitudes (del tipo %Length) en píxeles o porcentajes medidas desde la esquina superior del objeto.| shape | coords | explicación |
|---|---|---|
| rect | x1, y1, x2, y2 | Rectángulo cuya esquina superior izquierda será el punto (x1, y1) y la esquina inferior derecha el punto (x2,y2) |
| circle | xc, yc, r | Círculo cuya centro será el punto (xc, yc) con un radio "r" |
| poly | x1, y1, ..., xn, yn | Polígono donde cada punto (xi, yi) es una de sus esquinas y el primer punto (x1, y1) ha de ser igual al último punto (xn, yn) |
%Shape<a shape>, <area shape> y en combinación con el atributo coords del tipo %Coords para delimitar esas áreas.&referencia;Las referencias de caracteres son nombres simbólicos o numéricos de caracteres que pueden incluirse en un documento HTML. Son útiles para hacer referencia a caracteres usados esporádicamente, o a aquellos que son difíciles o imposibles de introducir con las herramientas de creación. A lo largo de este documento pueden verse referencias de caracteres; comienzan con un signo & y terminan con un punto y coma ;.
Las referencias numéricas de caracteres especifican la posición del código de un carácter en el conjunto de caracteres del documento. Las referencias numéricas de caracteres pueden tener dos formas:
&#D;, donde D es un número decimal, se refiere al carácter de ISO 10646 con el número decimal D.&#xH; o &#XH;, donde H es un número hexadecimal, se refiere al carácter de ISO 10646 con el número hexadecimal H. Para los números hexadecimales de referencias de caracteres numéricas no se distingue entre mayúsculas y minúsculas.A continuación figuran algunos ejemplos con valores en decimal y hexadecimal:
< (hexadecimal) representa el signo menor que: <> (decimal) representa el signo mayor que: >" (hexadecimal) representa el signo comillas: "å (en decimal) representa la letra "a" con un pequeño círculo encima (å)И (en decimal) representa la letra mayúscula cirílica "I" (И)水 (en hexadecimal) representa el carácter chino para el agua (水, que se verá si está instalada la fuente oriental)Para que los autores tengan una manera más intuitiva de referirse a caracteres del conjunto de caracteres del documento, HTML ofrece un conjunto de referencias a entidades de caracteres. Las referencias a entidades de caracteres utilizan nombres simbólicos para que los autores no tengan que recordar posiciones de código. Por ejemplo, la referencia a la entidad de caracteres å se refiere a la letra minúscula "a" con un anillo ("ring") encima. Sin duda å es más fácil de recordar que å.
Hay cuatro referencias a entidades de caracteres que merecen mención especial, ya que se usan frecuentemente para transformar ciertos caracteres especiales en secuencias de escape:
< representa el signo <.> representa el signo >.& representa el signo &." representa el signo ".Los autores que quieran poner el carácter < en el texto deberían usar < (ASCII decimal 60) para evitar la posible confusión con el comienzo de una etiqueta (delimitador de apertura de etiqueta inicial). Análogamente, los autores deberían usar > (ASCII decimal 62) en el texto en lugar de > para evitar problemas con agentes de usuario antiguos que lo interpretan incorrectamente como el final de una etiqueta (delimitador de cierre de una etiqueta) cuando aparece dentro de valores de atributos entrecomillados.
Hay unas DTD que establecen las referencias a caracteres:
De ellos se extrae la siguiente relación agrupadas por similitudes:
' (') aunque otros navegadores si lo hacen.