XHTML-1.0: Descripciones
TIPOS DE ELEMENTOS EN XML <E>
HTML401 XML10elementdecl ::= '<!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:- Un nombre Name que obedece a
Name ::= (Letter | '_' | ':') (NameChar)*
, dondeNameChar ::= 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) ('?' | '*' | '+')?
, 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:
- Elemento vacío EMPTY como el que declara el retorno de carro
<!ELEMENT br EMPTY>
. - Elemento datos de carácter #PCDATA como el que declara el título de una página
<!ELEMENT title (#PCDATA)>
. - 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+))
. - 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 XML10En 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:- Un nombre Name que obedece a
Name ::= (Letter | '_' | ':') (NameChar)*
, dondeNameChar ::= 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 identificador ID
- Tipo identificador referenciado IDREF, IDREFS
- Tipo complejo ENTITY, ENTITIES. En estos se declaran los diversos tipos complejos XHTML que soportan muchos atributos.
- Tipo nombre tokenizado NMTOKEN, NMTOKENS
- Tipo EnumeratedType, declarados como
EnumeratedType ::= NotationType | Enumeration
. Los tipos de notación NotationType se declara comoNotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
, que no estudiaremos aquí. Los tipos de enumeración Enumeration se declaran conEnumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
, siendo los que se aplican con mayor frecuencia en DTD-XHTML y que estudiaremos como tipo ENUMERADO
- Tipo StringType de cadena,
- 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éricoid
, 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:
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 comoname
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 atributohref
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-XHTML10STipo 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 formahttp://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 ejemplofile:///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 comohttp://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.
<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.
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.
@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.
<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.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) |
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
<a shape>
, <area shape>
y en combinación con el atributo coords
del tipo %Coords para delimitar esas áreas.REFERENCIA A CARACTERES &referencia;
HTML401Las 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:
- La sintaxis
&#D;
, dondeD
es un número decimal, se refiere al carácter de ISO 10646 con el número decimalD
. - La sintaxis
&#xH;
o&#XH;
, dondeH
es un número hexadecimal, se refiere al carácter de ISO 10646 con el número hexadecimalH
. Para los números hexadecimales de referencias de caracteres numéricas no se distingue entre mayúsculas y minúsculas. - Referencias con nombres simbólicos, que se verá a continuación.
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)
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 å
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:
- 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: ´´ ˜˜ ˆˆ ¨¨ ″″ ′′ ''(1) ““ ”” ‘‘ ’’ ‹‹ ›› «« »» ‚‚ „„ ¸¸ ·· ⋅⋅ …… ¡¡ ¿¿ && ªª ºº °°
- Espacios y otros:     ‍ ‌ 〉⟩ 〈⟨ ‎ ‏ ­
- Guiones: ¯¯ —— –– −− ‾‾
- Flechas, barras y bordes: ←← →→ ↑↑ ↓↓ ⇐⇐ ⇒⇒ ⇑⇑ ⇓⇓ ⇔⇔ ↔↔ ↵↵ ⌊⌊ ⌋⌋ ⌈⌈ ⌉⌉ ⊥⊥ ¦¦
- Matemáticos: ±± ⊕⊕ ÷÷ ‰‰ ∼∼ ≈≈ ≅≅ ≡≡ ≠≠ ≥≥ ≤≤ >> << ∧∧ ∨∨ ∃∃ ∀∀ ⊂⊂ ⊆⊆ ⊄⊄ ⊃⊃ ⊇⊇ ∈∈ ∋∋ ∉∉ ¬¬ ∩∩ ∪∪ ∅∅ ƒƒ ℜℜ ℑℑ ∇∇ µµ ∂∂ ½½ ¼¼ ¾¾ ⁄&fras1; ¹¹ ²² ³³ ∞∞ ∝∝ ∫∫ ∑∑ ∏∏ √√ ∠∠ ϖϖ
- Monedas: ¢¢ €€ ££ ¥¥
- Varios gráficos: •• ∗∗ ¤¤ ⊗⊗ ×× ♣♣ ♦♦ ♥♥ ♠♠ ◊◊ ©© ®® ™™ ¶¶ ∴∴ §§ ‡‡ ††
- Griego mayúsculas: ΑΑ ΒΒ ΓΓ ΔΔ ΕΕ ΦΦ ΗΗ ΙΙ ΧΧ ΚΚ ΛΛ ΜΜ ΝΝ ΩΩ ΟΟ ΠΠ ΨΨ ΡΡ ΣΣ ΤΤ ΘΘ ΥΥ ΞΞ ΖΖ
- Griego minúsculas: αα ββ γγ δδ εε φφ ηη ιι χχ κκ λλ μμ νν ωω οο ππ ψψ ρρ σσ ςς ττ θθ ϑϑ υυ ξξ ζζ
- Varios: Æ&AELig; ææ ŒŒ œœ ßß ÇÇ çç ÐÐ ðð ØØ øø ŠŠ šš ÞÞ þþ ℵℵ   ϒϒ ℘℘
- 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; / ◯ 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):
Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ
- IE8 no implanta el apóstrofe
'
(') aunque otros navegadores si lo hacen.