TIPOS DE ELEMENTOS EN XML <E>

HTML401 XML10
Los tipos a partir de los cuales se conforma la estructura de los elementos en XHTML parte de unos tipos básicos de XML 1.0, tipos que restringuen las declaraciones y los contenidos para un elemento. Por lo tanto se define la declaración de tipo de elemento en XML10 como elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'.
Recordar que en XML la "S" significa un espacio en blanco y que son aplicados las siguientes ocurrencias (veces en que debe aparecer un elemento):
SímbolosSignificado
( ... )Delimita un grupo
AA 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 | BO bien A o bien B deben aparecer, pero no las dos
A , BTanto A como B deben aparecer, y en ese orden
A & BTanto A como B deben aparecer, en cualquier orden
Por lo tanto un elemento de XML y por extensión de XHTML se declara en el DTD dentro del cuerpo <!ELEMENT ... >, conteniendo lo siguiente:
  • Un nombre Name que obedece a 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.
  • Un contenido de especificación contentspec que obedece a contentspec ::= 'EMPTY' | 'ANY' | Mixed | children. Las posibles alternativas de contenido son:
    • Contenido vacío EMPTY, el elemento no tiene contenido.
    • Algún contenido ANY, donde los tipos de cualquier elemento hijo ya han sido declarados previamente (no se usa en los DTD de XHTML).
    • Contenido mixto Mixed, declarado con 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).
    • Elementos hijos children, pudiendo contener sólo elementos hijos opcionalmente separados por espacio. Esto se especifica con children ::= (choice | seq) ('?' | '*' | '+')?, donde
      • choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
      • cp ::= (Name | choice | seq) ('?' | '*' | '+')?
      • seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
Las restricciones de validez de un elemento obliga a que sólo pueda declararse un único elemento con el mismo nombre en un documento.

A continuación mostramos algunos ejemplos aclaratorios de lo anterior en el DTD XHTML 1.0 Strict:

  1. Elemento vacío EMPTY como el que declara el retorno de carro <!ELEMENT br EMPTY>.
  2. Elemento datos de carácter #PCDATA como el que declara el título de una página <!ELEMENT title (#PCDATA)>.
  3. Elemento que declara sólo hijos children, como el elemento tabla que declara todos los elementos hijos que puede contener: <!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+)).
  4. Elementos con contenido mixto Mixed como el que declara el elemento objeto <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*.

TIPOS BÁSICOS DE ATRIBUTOS EN XML Tipos XML

HTML401 XML10

En 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? '>' .
Recordar que en XML la "S" significa un espacio en blanco y que son aplicados las siguientes ocurrencias (veces en que debe aparecer un elemento):
SímbolosSignificado
( ... )Delimita un grupo
AA 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 | BO bien A o bien B deben aparecer, pero no las dos
A , BTanto A como B deben aparecer, y en ese orden
A & BTanto A como B deben aparecer, en cualquier orden
Por lo tanto un atributo de XML y por extensión de XHTML se declara en el DTD dentro del cuerpo <!ATTLIST ... > como una lista de atributos, conteniendo lo siguiente:
  • Un nombre Name que obedece a 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.
  • Una definición de atributos AttDef que obedece a AttDef ::= S Name S AttType S DefaultDecl. En esta definición encontramos:
    • Un nombre Name para el atributo, tal como se describió antes.
    • Un tipo AttType para el atributo, según el contenido siguiente: AttType ::= StringType | TokenizedType | EnumeratedType. Por lo tanto los tipos de atributo pueden ser:
      • Tipo StringType de cadena, StringType ::= 'CDATA', tipo final CDATA que estudiaremos.
      • Tipo TokenizedType que comprende TokenizedType ::= 'ID'| 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS', tipos que estudiaremos:
      • Tipo EnumeratedType, declarados como 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 ENUMERADO
    • Un declaración por defecto DefaultDecl para el atributo, declarada como DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue). Especifica la forma en que son requeridos los valores del atributo, siendo:
      • #REQUIRED: El atributo es requerido en todos los casos.
      • #IMPLIED: Es opcional incluir o no el atributo.
      • #FIXED o un valor o lista de valores: El atributo es un valor fijo o un valor o una lista de valores separadas por barras verticales.

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.

Tipo datos de carácter CDATA

XML10 Tipo de carácteres (string) como una secuencia de caracteres tal que podrían ignorarse retornos de carro o tabulaciones (reemplazándolos por espacios) así como espacios en blanco inicial y final, aunque se aconseja no incluirlos.

Se 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.

Ejemplo tipo CDATA en DTD's

Como ejemplo exponemos la especificación DTD XHTML 1.0 STRICT para el elemento <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
  > 
            

Ejemplo tipo CDATA en las secciones CData

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>]]>

Tipo identificador ID

XML10 Identificador único para cada elemento tal que sólo se permite un identificador por elemento. Deben declararse "#IMPLIED" o "#REQUIRED". Este tipo básico ID se forma con el subtipo Name de XML10, que siempre empieza con una letra ([A-Z, a-z]) o un guión bajo ("_") y que luego puede estar seguido por un número cualquiera de letras, dígitos ([0-9]), guiones ("-"), subguiones ("_") y puntos ("."). También puede contener en cualquier lugar dos puntos (":") pero sólo se usa para otros propósitos por lo que no deben incluirse.

Por 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.

Ejemplo tipo ID

Ejemplo: El tipo de datos básico ID sirve para definir el atributo genérico 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"
  >
            

Tipo desreferenciadores IDREF, IDREFS

XML10 Se trata de una referencia a un elemento, tal que el atributo debe contener un valor que aparezca en el atributo ID de algún otro elemento en el mismo documento. IDREFS permite una lista de referencias separadas por espacios. Deben declararse "#IMPLIED" o "#REQUIRED".

Sus 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:

NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender Name ::= (Letter | '_' | ':') (NameChar)* Names ::= Name (#x20 Name)*

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.

Ejemplo tipo IDREF

Como ejemplo presentamos el elemento <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
  >                    
            

Tipo nombres tokenizados NMTOKEN, NMTOKENS

XML10 Se trata de un "name token" como uno o más caracteres del subtipo NameChar, tal que cada uno de ellos puede ser una letra ([A-Z, a-z]), un dígito, ([0-9]), un guión ("-"), un guión bajo ("_"), dos puntos (":") o un punto (".") así como un carácter idiomático. De esta forma no están obligados a empezar necesariamente por un letra o un guión bajo como sucedía para los tipos ID, IDREF, IDREFS basados en los subtipos XML Name, Names. Una lista NMTOKENS es una serie de NMTOKEN separados por espacios. En XML se especifica con:
NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
Nmtoken ::= (NameChar)+
Nmtokens ::= Nmtoken (#x20 Nmtoken)*  
        

Ejemplo tipo NMTOKEN

Este tipo de datos se suele utilizar en el DTD de XHTML para atributos como 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
...
>
            

Tipo entidades ENTITY, ENTITIES

XML10 Un atributo también puede tener un tipo declarado previamente como una entidad, la cual se declara con los tipos básicos anteriores o con otras entidades declaradas previamente. De igual forma puede usarse una lista separada por espacios. En XML hay varias formas de especificar una entidad y nos remitimos a la documentación xml10 para mayor ahondamiento.

Mediante este tipo se declaran los tipos complejos para los atributos de elementos XHTML.

Ejemplo tipo ENTITY

Como ejemplo exponemos el atributo 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
  ...
  >
            

Tipos enumerados EnumeratedType

XML10 Un atributo también puede tener un tipo enumerado. En XML esto se especifica así:
EnumeratedType ::= NotationType | Enumeration
NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' 
Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' 
        

Ejemplo tipo enumerado

Ejemplo: en el DTD de XHTML estricto se usa el subtipo XML Enumeration para enumerar las posibles alineaciones del contenido de una celda de una tabla:
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED
   charoff    %Length;       #IMPLIED"
  >
            

TIPOS COMPLEJOS DE ATRIBUTOS EN XHTML %tipo

HTML401 DTD-XHTML10T DTD-XHTML10S
Tal como se comentó en la entrada de tipos básicos de atributos en XML, los tipos complejos se forman con ENTITY en los DTD para formar tipos basados en otros, los cuáles se usarán para los atributos de los elementos.

Tipo URL Localizador Uniforme de Recursos %URI, %UriList

HTML401 DTD-XHTML10T DTD-XHTML10S Se trata del tipo de datos definido en el DTD como %URI, que se forma con el tipo básico CDATA. Los URI incluyen a los URL de tal forma que los primeros pueden ser direcciones relativas que se convierten en los segundos como absolutas. Es una forma de que el navegador sepa donde encontrar un archivo y como tratarlo. Cada archivo tiene en Internet un URL único. Dado que se diferencia mayúsculas y minúsculas, es recomendable usar siempre letras minúsculas para evitar confusiones a los usuarios. Se deben usar carácteres ASCII aunque pueden usarse otros carácteres usando un tratamiento especial tal como se indica en la especificación HTML401. El tipo %UriList se usa para indicar una lista de tipos %URI separada por comas. En XHTML estricto se usa en los siguientes elementos-atributos: <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.

Ejemplo URL http, Protocolo Transferencia de Hipertexto

Se trata del URL básico para acceder a cualquier página web, siendo de la forma 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.

Ejemplo URL ftp, Protocolo Transferencia de Ficheros

Se utiliza para descargar archivos de sitios ftp. Por ejemplo ftp://ftp.servidor.com/ruta/programa.exe

Ejemplo URL mailto, Correos electrónicos

Se utiliza para enviar correo electrónico. Por ejemplo mailto:micorreo@servidor.com, no poniéndose ninguna barra inclinada después de los dos puntos.

Ejemplo URL file, acceso a ficheros en máquina local

Se utiliza para acceder a ficheros en la máquina de forma local. Por ejemplo 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.

Ejemplo URL absolutas y relativas.

Una URL absoluta sería como 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.

Tipo de fecha y hora %Datetime

HTML401 DTD-XHTML10T DTD-XHTML10S Se trata del tipo de datos definido en el DTD como %Datetime, que se forma con el tipo básico CDATA. El formato es AAAA-MM-DDThh:mm:ssD con el siguiente significado:
  • AAAA: año de cuatro dígitos
  • MM: mes con dos dígitos (01-12)
  • DD: día con dos dígitos (01-31)
  • T: letra "T" literal que debe aparecer para indicar el comienzo de la hora
  • hh: hora con dos dígitos (00-23)
  • mm: minutos con dos dígitos (00-59)
  • ss: segundos con dos dígitos (00-59)
  • D: designador de zona horaria, que puede ser:
    • Z: una "Z" mayúscula, indicador de UTC (Tiempo Universal Coordinado)
    • +hh:mm, -hh:mm: para indicar que es una hora local que está hh:mm por delante (+) o detrás (-) de UTC.
Es usado por en los elementos-atributos siguientes en XHTML estricto: <ins datetime>, <del datetime>.

Tipos MIME de contenido %ContentType, %ContentTypes

HTML401 DTD-XHTML10T DTD-XHTML10S Es un tipo de datos definido con el tipo final CDATA. La versión plural %ContentTypes son una serie de valores del tipo %ContentType separados por comas. Ejemplos de tipos de contenido son:
  • Texto, como text/html para páginas en código HTML o XHTML, text/css para código CSS, text/xsl para texto en código XSL.
  • Imágenes, como image/png y lo mismo para gif, jpg, etc.
  • Video, como video/mpeg por ejemplo.
En el enlace a la especificación de HTML 4.01 indicada arriba se encuentra una referencia a la lista completas de tipos MIME de contenido. Este atributo sirve para que el navegador sepa el tipo de contenido disponible en la dirección del destino de un vínculo href, 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.

Tipo de descriptores de medios %MediaDesc

HTML401 DTD-XHTML10T DTD-XHTML10S Se trata de un valor o varios separados por comas del tipo final CDATA, para describir los medios reconocidos en el uso de atributos de los elementos de XHTML estricto siguientes: <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:
  • screen, pantallas de ordenador.
  • tty, medios que utilicen una cuadrícula de caracteres de ancho fijo, como teletipos, terminales y dispositivos portátiles con posibilidades limitadas de representación.
  • tv, televisión.
  • projection, proyectores.
  • handheld, dispositivos de mano.
  • print, impresoras o vistas previas en pantalla de páginas a imprimir.
  • braille, táctiles braille.
  • aural, sintetizadores de voz.
  • all, apropiado para todos los dispositivos.

Tipo de codificación de caracteres XHTML %Charset, %Charsets

HTML401 DTD-XHTML10T DTD-XHTML10S Formado por el tipo final CDATA, es usado para los elementos y atributos siguiente en XHTML estricto: <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.

ASCII
Significa Código Estándar Norteamericano para el Intercambio de Información: Antes incluso de la aparición de Internet, la codificación de carácteres se realizó basándose en el idioma inglés, para lo cual era suficiente con 128 caracteres que podían codificarse con 7 bits. Sin embargo a medida que se universalizó la informática fue necesario incorporar nuevos caracteres de otros idiomas. Por ejemplo, en ASCII no pueden representarse la "ñ" o la "ç" propias de idiomas español o catalán así como otras letras con signos como diéresis, cedillas, etc.
ASCII extendido
En nuevas plataformas de sistemas operativos que fueron apareciendo se solucionó en parte ampliando un bit más con lo que podian representarse hasta 256 caracteres, donde se incluían las necesidades de la mayoría de idiomas europeos occidentales. Por ejemplo, están representados los caracteres "ñ, Ñ, ç, Ç, €" dentro de este ultimo grupo. Sin embargo aún quedan fuera multitud de idiomas como los Centroeuropeos u Orientales.
ISO-8859
Siguiendo con lo expuesto antes, si ASCII extendido solucionaba el problema para Europa Occidental, se siguió la misma perspectiva con los 128 caracteres extendidos para configurar más idiomas. Así al ASCII extendido se le denominó ISO-8859-1 con el nombre de Latín 1, ISO-8859-2 para idiomas de Europa Central, ISO-8859-3 denominado Latín 3 como una extensión al primero, ISO-8859-4 para idiomas del Báltico, ISO-8859-5 para idiomas Cirílicos, etc.
Unicode
Con la aparición de Internet surge el intercambio de información incluso con el uso simultáneo de varios idiomas en un mismo documento. Con una codificación de las expuestas antes como la ISO-8859-1 no podemos incluir en un documento caracteres de otras codificaciones. Con Unicode esto si es posible, pues cada caracter de cualquier idioma tiene un único código asignado. Así podemos entonces presentar un documento con texto en español que contenga al mismo tiempo texto en chino, por ejemplo. Unicode es en definitiva un repertorio de caracteres que pueden presentarse en diferentes formatos como se expone en las siguientes descripciones.
ISO-10646-UCS
UCS significa Conjunto Universal de Caracteres (Universal Character Set) que se define en la norma ISO-10646, siendo una normalización equivalente carácter a carácter con el estándar Unicode. Por lo tanto los términos Unicode y UCS o ISO-10646 se consideran equivalente en este sentido. Por supuesto UCS soporta ASCII y uno de los formatos de presentación más usado es ISO-10646-2 que usa 16 bits para codificar hasta 65.536 caracteres.
UTF
UTF significa Unicode Transformation Format, Formato de Transformación de Unicode. Con UCS-2 (ISO-10646-2) necesitamos usar 16 bits (2 bytes) para representar esos 65 mil caracteres. UTF-16 es una forma de codificar estos dos bytes. Dado que el caso hipotético de que un documento contenga texto en una gran variedad de idiomas no es un suceso corriente, al usar un número excesivo de bytes para cada cáracter estamos ocupando demasiado espacio, si nuestro propósito se resuelve con idiomas occidentales que se pueden codificar con un único byte. Este es el objetivo de la transformación UTF-8, tal que puede presentar caracteres con uno o más bytes. Si el bit de mayor peso de un byte es cero entonces el caracter equivale a ASCII y si no es así el caracter comprende un grupo de más de un byte.
Otros
UTF-8 supone una desventaja para idiomas como el Japonés cuyos caracteres de doble byte ocupan más espacio que lo que ocuparía con una codificación local específica como SHIFT_JIS o EUC-JP. Esta es la razón de que existan otras codificaciones que tratan de evitar un exceso de bytes con caracteres occidentales que no manejarán.

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.

Ver declaración de codificación para CSS en @charset. Ver también codificación de caracteres CSS.

Tipo de códigos de idioma %LanguageCode

HTML401 DTD-XHTML10T DTD-XHTML10S Se trata de un tipo formado por el tipo básico NMTOKEN para indicar, normalmente con dos letras, los distintos códigos de idioma. Por ejemplo "es" español, "en" inglés, "fr" francés, "it" italiano, etc. En general la estructura de un código de idioma es como có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>.

Tipo de vínculo %LinkTypes

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar una lista de uno o más valores separados por espacios, no distiguiéndose mayúsculas y minúsculas, que pueden ser:
  • Alternate, versión alternativa del documento en que aparece el vínculo. Cuando se usa con en los elementos-atributo <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.
  • Stylesheet, hoja de estilo externa, usándose con el valor alternate para ofrecer hojas de estilo alternativas seleccionables por el ususario.
  • Start, primer documento de un conjunto de ellos a usar por motores de búsqueda para informar del punto de inicio del conjunto de documentos.
  • Next, siguiente documento del conjunto de documento. Un navegador que encuentre este valor puede ir precargando la página para reducir el tiempo de carga.
  • Prev, documento anterior en el conjunto.
  • Contents, documento que sirve como tabla de contenidos.
  • Index, documento que proporciona un índice para el documento actual.
  • Glosary, documento que proporciona un glosario de términos.
  • Copyright, aviso de propiedad.
  • Chapter, documento que actúa como capítulo en un conjunto de documentos.
  • Section, como sección en este caso.
  • Subsection, como subsección en este caso.
  • Appendix, como apéndice en este caso.
  • Help, como documento de ayuda.
  • Bookmark, marca o señal de lectura que es un vínculo a una entrada importante dentro de un documento extenso.
En XHTML estricto se usa en los elementos-atributos <link rel>, <link rev>, <a rel>, <a rev>.

Tipo texto %Text

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar cadenas de texto que puedan ser leídas por los usuarios. En XHTML estricto se usa en los siguientes elementos-atributos <E title>, <style title>, <img alt>, <area alt>, <object standby>, <table summary>.

Tipo longitud %Length

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar longitudes con en píxeles o bien finalizado con "%" para indicar un porcentaje sobre el espacio horizontal o vertical disponible. En XHTML estricto se usa en los siguientes elementos-atributos: <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>.

Tipo Multi-longitud %MultiLength, %MultiLengths

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar longitudes del tipo %Length o bien una longitud relativa, que se forma añadiendo un carácter "*" a un número entero. Cuando los navegadores encuentran varios elementos entre los cuáles ha de repartir un cierto espacio (como en columnas de las tablas), en primer lugar se adjudican las longitudes expresadas en el tipo %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>.

Tipo longitud en píxeles %Pixels

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar longitudes en píxeles. En XHTML Transicional se usa en varios elementos, pero en XHTML estricto sólo se usa en el elemento-atributo <table border>.

Tipo coordenadas %Coords

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con el tipo final CDATA para declarar unas posiciones en pantalla para configurar unas formas. En XHTML estricto y transicional se usan en los elementos atributos <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.
shapecoordsexplicación
rectx1, y1, x2, y2Rectángulo cuya esquina superior izquierda será el punto (x1, y1) y la esquina inferior derecha el punto (x2,y2)
circlexc, yc, rCírculo cuya centro será el punto (xc, yc) con un radio "r"
polyx1, y1, ..., xn, ynPolí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)

Tipo formas %Shape

HTML401 DTD-XHTML10T DTD-XHTML10S Se forman con un tipo enumerado con los valores siguientes que definen zonas o áreas de pantalla:
  • rect, rectangular
  • circle, circular
  • poly, poligonal
  • default, región completa
En XHTML estricto y transicional se usan en los elementos atributos <a shape>, <area shape> y en combinación con el atributo coords del tipo %Coords para delimitar esas áreas.

REFERENCIA A CARACTERES &referencia;

HTML401

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:

  1. La sintaxis &#D;, donde D es un número decimal, se refiere al carácter de ISO 10646 con el número decimal D.
  2. La sintaxis &#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.
  3. Referencias con nombres simbólicos, que se verá a continuación.

A continuación figuran algunos ejemplos con valores en decimal y hexadecimal:

  • &#x3C; (hexadecimal) representa el signo menor que: <
  • &#62; (decimal) representa el signo mayor que: >
  • &#x22; (hexadecimal) representa el signo comillas: "
  • &aring; (en decimal) representa la letra "a" con un pequeño círculo encima (å)
  • &#1048; (en decimal) representa la letra mayúscula cirílica "I" (И)
  • &#x6C34; (en hexadecimal) representa el carácter chino para el agua (水, que se verá si está instalada la fuente oriental)

Referencias a caracteres con nombres simbólicos

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 &aring; es más fácil de recordar que &#229;.

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:

  • &lt; representa el signo <.
  • &gt; representa el signo >.
  • &amp; representa el signo &.
  • &quot; representa el signo ".

Los autores que quieran poner el carácter < en el texto deberían usar &lt; (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 &gt; (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:

  • Especificación del DTD-LAT1 (DTD Entidades de carácteres Latín 1 para XHTML)
  • Especificación del DTD-SPECIAL (DTD Entidades de carácteres especiales para XHTML)
  • Especificación del DTD-SYMBOL (DTD Entidades de carácteres de símbolos griegos y matemáticos para XHTML)

De ellos se extrae la siguiente relación agrupadas por similitudes:

  • Comillas y ortográficos: ´&acute; ˜&tilde; ˆ&circ; ¨&uml;&Prime;&prime; '&apos;(1)&ldquo;&rdquo;&lsquo;&rsquo;&lsaquo;&rsaquo; «&laquo; »&raquo;&sbquo;&bdquo; ¸&cedil; ·&middot;&sdot;&hellip; ¡&iexcl; ¿&iquest; &&amp; ª&ordf; º&ordm; °&deg;
  • Espacios y otros:  &nbsp;&ensp;&emsp;&zwj;&zwnj;&rang;&lang;&lrm;&rlm; ­&shy;
  • Guiones: ¯&macr;&mdash;&ndash;&minus;&oline;
  • Flechas, barras y bordes:&larr;&rarr;&uarr;&darr;&lArr;&rArr;&uArr;&dArr;&hArr;&harr;&crarr;&lfloor;&rfloor;&lceil;&rceil;&perp; ¦&brvbar;
  • Matemáticos: ±&plusmn;&oplus; ÷&divide;&permil;&sim;&asymp;&cong;&equiv;&ne;&ge;&le; >&gt; <&lt;&and;&or;&exist;&forall;&sub;&sube;&nsub;&sup;&supe;&isin;&ni;&notin; ¬&not;&cap;&cup;&empty; ƒ&fnof;&real;&image;&nabla; µ&micro;&part; ½&frac12; ¼&frac14; ¾&frac34;&fras1; ¹&sup1; ²&sup2; ³&sup3;&infin;&prop;&int;&sum;&prod;&radic;&ang; ϖ&piv;
  • Monedas: ¢&cent;&euro; £&pound; ¥&yen;
  • Varios gráficos:&bull;&lowast; ¤&curren;&otimes; ×&times;&clubs;&diams;&hearts;&spades;&loz; ©&copy; ®&reg;&trade;&para;&there4; §&sect;&Dagger;&dagger;
  • Griego mayúsculas: Α&Alpha; Β&Beta; Γ&Gamma; Δ&Delta; Ε&Epsilon; Φ&Phi; Η&Eta; Ι&Iota; Χ&Chi; Κ&Kappa; Λ&Lambda; Μ&Mu; Ν&Nu; Ω&Omega; Ο&Omicron; Π&Pi; Ψ&Psi; Ρ&Rho; Σ&Sigma; Τ&Tau; Θ&Theta; Υ&Upsilon; Ξ&Xi; Ζ&Zeta;
  • Griego minúsculas: α&alpha; β&beta; γ&gamma; δ&delta; ε&epsilon; φ&phi; η&eta; ι&iota; χ&chi; κ&kappa; λ&lambda; μ&mu; ν&nu; ω&omega; ο&omicron; π&pi; ψ&psi; ρ&rho; σ&sigma; ς&sigmaf; τ&tau; θ&theta; ϑ&thetasym; υ&upsilon; ξ&xi; ζ&zeta;
  • Varios: Æ&AELig; æ&aelig; Œ&OElig; œ&oelig; ß&szlig; Ç&Ccedil; ç&ccedil; Ð&ETH; ð&eth; Ø&Oslash; ø&oslash; Š&Scaron; š&scaron; Þ&THORN; þ&thorn;&alefsym;&thinsp; ϒ&upsih;&weierp;
  • Acentos y tildes (todos con &Xacute; / &xacute; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    Á á É é Í í Ó ó Ú ú Ý ý
  • Acentos y tildes (todos con &Xcirc; / &xcirc; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    ÂâÊêÎîÔôÛû
  • Acentos y tildes (todos con &Xgrave; / &xgrave; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    À à È è Ì ì Ò ò Ù ù
  • Acentos y tildes (todos con &Xtilde; / &xtilde; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    Ã ã Õ õ Ñ ñ
  • Acentos y tildes (todos con &Xring; / &xring; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    Åå
  • Acentos y tildes (todos con &Xuml; / &xuml; donde x/X es la letra a acentuar en minúsculas o mayúsculas):
    Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ
NOTAS:
  1. IE8 no implanta el apóstrofe &apos; (') aunque otros navegadores si lo hacen.