– Los documentos deben ser gramaticalmente correctos:
- Todos los elementos deben tener una apertura y un cierre.
- Debe respetarse el anidamiento jerárquico durante el cierre de etiquetas: <p><b>x</b></p>
– Los nombres de los elementos, los atributos y sus valores por defecto deben escribirse en minúsculas:
<input type=’submit‘ value=’Enviar’ />
– Los valores de los atributos deben ir entre comillas, ya sean sencillas ( ‘ ) o dobles ( ” ).
<table rows=“5” class=“tabla_principal“></table>
– Los atributos no pueden ser minimizados, es decir, su valor no puede omitirse por ningún motivo.
<input type=”checkbox” checked=”checked” id=”caja_verificacion” />
– Todas las etiquetas deben cerrarse de una de las dos formas válidas.
Etiquetas vacías:
Etiquetas no vacías:
- <p>Este es un parrafo</p>
– Los elementos de bloque no pueden ser declarados dentro de elementos en línea. El siguiente ejemplo es inválido: <b><div class=’ejemplo’>Error</div></b>
– El atributo alt siempre debe estar presente en un elemento img. Los textos deben ir enmarcados en etiquetas p.
– Los siguientes carácteres: &, <, ]]> y —, interfieren con el documento XHTML motivo por el cual deben reemplazarse, incluso en URLs, por sus correspondientes entidades: & y <.
– Para bloques extensos de código que adolecen de la situación anterior es posible enmarcar dichos códigos entre un bloque CDATA, por ejemplo para el uso de script y style en línea. Esta necesidad no aplica para documentos externos.
<script>
<![CDATA[
// … contenido del script …
]]>
</script>
– Los elementos deben usar el atributo id como su identificador de fragmento, incluso los que históricamente habían tenido el atributo name.
– Los atributos desaprobados por HTML 4.01 no son incluidos por XHTML. Por ejemplo, la siguiente expresión es inválida: <font color=”red”>texto</font>, debe escribirse de la siguiente manera: <span style=”color: red”>texto</span>.
– Los siguientes elementos no pueden estar compuestos por los dispuestos a continuación.
- <a> no puede contener elementos <a>.
- <pre> no puede contener elementos <img>, <object>, <big>, <small>, <sub>, <sup>.
- <button> no puede contener elementos <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe>, <isindex>.
- <label> no puede contener elementos <label>.
- <form> no puede contener elementos <form>.
Para preservar la compatiblidad se realizan las siguiente recomendaciones.
– Para los elementos vacíos cuyo cierre es inmediato, incluya un espacio antes de la terminación: />. Ejemplo: <br />.
– Para los elementos no vacíos utilice la forma ampliada de cierre, en lugar de la minimizada, aunque estos no tengan contenido. Ejemplo: <p> </p>.
– Se debe evitar el encerrar los fragmentos de código JavaScript y las hojas de estilo entre comentarios (<!– –>) toda vez que su contenido se ignorará y no serán tenidos en cuenta.
– Deben evitarse los espacios extra en blanco y los saltos de línea en el valor de los atributos ya que son interpretados de manera incosistente por los diferentes clientes.
– Los posibles carácteres a utilizarse para crear los nombres de los atributos id deben ser: las letras minúsculas y mayúsculas, los números del 0 al 9, los guiones (-), los guiones bajos (_), los dos puntos (:) y el punto (.). El valor debe empezar siempre con una letra.
– Utilice conjuntamente los atributos lang y xml:lang entendiéndose que xml:lang tiene precedencia. Ejemplo: <a href=”enlace.html” lang=”es” xml:lang=”es”>
– Para las entidades que así lo requieran utilice atributos id y name sabiendo que XHTML es compatible con el primero y no con el segundo.
– Para especificar la codificación de carácteres de un documento se sugiere utilizar las dos formas posibles: en la declaración XML y como una sentencia meta http-equiv.
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<meta http-equiv=”Content-type” content=’text/html; charset=”UTF-8″‘ />
– Algunos atributos booleanos tienen tienen problemas con la forma ampliada que requiere XHTML en clientes que soportan especificaciones anteriores a HTML 4.0.
compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.
– Para efectos de manipulación DOM, HTML retorna los nombres de los elementos y atributos en mayúsculas, XML tal y como fueron escritos y en XHTML se escriben en minúsculas.