Ir directamente al contenido de esta página
Como en las anteriores especificaciones, para XHTML 1.1 el W3C ha procedido a simplificar aún más la lista de elementos y atributos permitidos, y ha eliminado los ya depreciados. Además, ha convertido XHTML en un lenguaje modular (inglés), pero eso es un tema que —por el momento— se escapa de los objetivos de este curso.
En las listas que presentaré en los documentos siguientes, y que recogen los elementos de esta DTD, he aplicado una serie de convenciones:
<elemento atributos />
. Si no lo es, requiere etiqueta de cierre: <elemento atributos>contenido</elemento>
).name
y http-equiv
, que son palabras clave; por eso en la decripción de cada elemento se indican limitaciones adicionales, si existen.rtl
, que indica que el fragmento se lee de derecha a izquierda, o ltr
que indica que se lee de izquierda a derecha.-
), el guión bajo (_
) y el punto (.
) —aunque no pueden comenzar con ninguno de estos tres últimos—, pero no un espacio en blanco.class
es una serie de name tokens de XML (inglés), lo cual incluiría además de los caracteres permitidos para un identificador los dos puntos (:
) (inglés); sin embargo, no se puede emplear este último caracter, puesto que está reservado en CSS para pseudoselectores. La diferencia, en realidad, es que se puede incluir una lista de identificadores separados por espacios en blanco. Para más información, ver el empleo de class
como selector.Dicho esto, aquí están las listas de elementos sus atributos:
En la clasificación no he seguido la división por módulos de la especificación de XHTML 1.1 (inglés) al pie de la letra, sino una más cercana al trabajo diario de un desarrollador. Así, aunque meta
pertenece al módulo de metainformación, lo he incluido junto a los elementos del módulo de estructura porque al crear un documento no se puede desvincular del trabajo de crear el head
de un documento, al igual que base
, que cuenta con su propio módulo. De la misma forma, he reunido los elementos pertenecientes a los módulos de texto, presentación, bidireccional y edición, por un lado, el módulo de hipertexto y el de vinculación por otro, y por último los módulos de objeto, imagen, y el referido a mapas del lado del cliente.
Además, para los elementos de formulario y tablas he recogido los que aparecen en los módulos extensos, que incluyen, respectivamente, los subconjuntos del módulo de formulario básico y el módulo de tablas básico.
Por último, no incluyo los módulos depreciados, a saber, el módulo de applets, los referidos a marcos, el módulo de name
, el de herencia (Legacy Module), ni el de mapas del lado del servidor.
Al tratar los modelos de contenido, en muchos de ellos se especifica si un elemento acepta «contenidos de bloque» y/o «contenidos en línea». La distinción que de ellos da el W3C (inglés) se basa en dos características principales —son tres, pero la tercera, la direccionalidad, salvo en casos excepcionales como desarrolladores no nos afectará— que son:
Generally, block-level elements may contain inline elements and other block-level elements. Generally, inline elements may contain only data and other inline elements. […] By default, block-level elements are formatted differently than inline elements. Generally, block-level elements begin on new lines, inline elements do not.
[Generalmente, los elementos de bloque pueden contener elementos en línea y otros elementos de bloque. En general, los elementos en línea pueden contener sólo datos y otros elementos en línea. (…) Por defecto, los elementos de bloque se representan de manera diferente que los elementos en línea. Generalmente, los elementos de bloque comienza en nueva línea, mientras que los elementos en línea no.]
Como esta definición es un poco vaga, en las descripciones del modelo de contenido de los elementos aplicaré la que se encuentra en el documento sobre los módulos abstractos de XHTML (inglés), según la cual, hay tres grupos de contenidos:
h1
, h2
, h3
, h4
, h5
y h6
.address
, blockquote
, div
, fieldset
, form
, p
, pre
y table
.a
, abbr
, acronym
, br
, button
, cite
, code
, dfn
, em
, img
, input
, kbd
, label
, map
, q
, samp
, select
, span
, strong
, textarea
y var
.De todas formas, las excepciones o «rarezas» —como las de del
u object
— las comentaré para cada elemento concreto.
Hay cinco atributos que son aplicables a casi todo elemento de marcado2, por lo que voy a describirlos en este momento y evitar así saturar las ya densas páginas con las descripciones de los elementos:
class
: Se trata de uno o varios identificadores de clase que relacionan varios elementos que comparten un aspecto estructural o de presentación, y a diferencia de id
, varios elementos pueden compartir la misma clase. Su función es doble:
getElementById
y getElementsByTagName
».id
: Asigna un identificador a un elemento. Aunque su proliferación actualmente se debe a su empleo como selector de CSS, sus funciones son varias:
Añade valor semántico a las partes de un documento, individualizando elementos de XHTML con una semántica más general. Así, por ejemplo, un elemento ul
no es más que una lista no ordenada, pero así:
<ul id="navegacion">
<li><a href="inicio.htm">Inicio</a></li>
<li><a href="articulos.htm">Artículos</a></li>
<li><a href="recursos.htm">Recursos</a></li>
</ul>
se convierte en una barra de navegación, una parte importantísima de una página web para la que XHTML no tiene elemento específico. Sobre este punto, ver «Clarificación del uso de id
y class
».
<a name="marcador"></a>
.getElementById
y getElementsByTagName
».style
: Aplica una o varias declaraciones de estilo directamente a un elemento.
Entre los teóricos hay discusión sobre si se debe emplear o no —independientemente de su validez—, puesto que atenta contra la separación entre estructura y presentación. Para hacerse una impresión general de la situación, recomiendo leer Why is the style attribute allowed in strict doctypes? de Roger Johannson, incluidos los comentarios.
title
: Se emplea para añadir un texto con información adicional a un elemento, y en los navegadores tiene un aspecto similar a éste:
title
en Firefox 2Por cierto, que el title
no es «el alt
para Firefox» —como a veces se oye—; el primero es una información adicional para cualquier elemento, y el segundo es una alternativa para una imagen. El hecho de que en ausencia de title
Internet Explorer haga visible de la misma forma el valor de alt
es un error en el soporte de la especificación por parte de este navegador.
xml:lang
: Especifica el idioma del contenido del texto. Una vez que se ha especificado para el documento completo en html
, sólo es necesario indicarlo en aquellos elementos en los que se produzca un cambio, por ejemplo:
<p>«Medianoche» en alemán es <i xml:lang="de">mitternacht</i></p>
Sí, es mucha información… pero como las listas de elementos, hay que sabérsela como las tablas de multiplicar.
Text
, en un intento de clarificar un poco más su significado. Por ejemplo, el valor del atributo title
sería una cadena de caracteres (CDATA
), pero dado que por su naturaleza debe ofrecer información adicional a un usuario, me parecía más adecuado describirlo como un texto. No obstante, esto no es más que una interpretación personal, por supuesto. br
un title
?.