XHTML vs HTML

Debido al hecho de que XHTML es una aplicación XML, se deben cambiar ciertas prácticas que eran perfectamente legales en HTML 4 basado en SGML. Ya ha visto la sintaxis XHTML en el capítulo anterior, por lo que las diferencias entre XHTML y HTML son muy obvias. A continuación se muestra la comparación entre XHTML y HTML.

Los documentos XHTML deben estar bien formados

La buena formación es un nuevo concepto introducido por XML. Básicamente, esto significa que todos los elementos deben tener etiquetas de cierre y usted debe anidarlos correctamente.

CORRECT: Nested Elements

<p>Here is an emphasized <em>paragraph</em>.</p>

INCORRECT: Overlapping Elements

<p>Here is an emphasized <em>paragraph.</p></em>

Los elementos y atributos deben estar en minúsculas

Los documentos XHTML deben usar minúsculas para todos los elementos HTML y nombres de atributos. Esta diferencia es necesaria porque se supone que el documento XHTML es un documento XML y XML distingue entre mayúsculas y minúsculas. Por ejemplo, <li> y <LI> son etiquetas diferentes.

Se requieren etiquetas finales para todos los elementos

En HTML, ciertos elementos pueden omitir la etiqueta final. Pero XML no permite que se omitan las etiquetas finales.

CORRECT: Terminated Elements

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

INCORRECT: Unterminated Elements

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

Los valores de atributo siempre se deben cotizar

Todos los valores de los atributos, incluidos los valores numéricos, deben estar entre comillas.

CORRECT: Quoted Attribute Values

<td rowspan="3">

INCORRECT: Unquoted Attribute Values

<td rowspan=3>

Minimización de atributos

XML no admite la minimización de atributos. Los pares atributo-valor deben escribirse en su totalidad. Los nombres de atributos como compact y check no pueden aparecer en elementos sin que se especifique su valor.

CORRECT: Non Minimized Attributes

<dl compact="compact">

INCORRECT: Minimized Attributes

<dl compact>

Manejo de espacios en blanco en valores de atributo

Cuando un navegador procesa atributos, hace lo siguiente:

  • Elimina los espacios en blanco iniciales y finales.

  • Asigna secuencias de uno o más caracteres de espacio en blanco (incluidos los saltos de línea) a un solo espacio entre palabras.

Elementos de escritura y estilo

En XHTML, el script y los elementos de estilo no deben tener caracteres “<” y “&” directamente, si existen; luego se tratan como el inicio del marcado. Las entidades como "<" y "&" son reconocidas como referencias de entidad por el procesador XML para mostrar los caracteres "<" y "&" respectivamente.

Envolver el contenido del script o elemento de estilo dentro de una sección marcada con CDATA evita la expansión de estas entidades.

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

Una alternativa es utilizar documentos de estilo y guiones externos.

Los elementos con atributos de identificación y nombre

XHTML recomienda el reemplazo del atributo de nombre con el atributo id . Tenga en cuenta que en XHTML 1.0, el atributo de nombre de estos elementos está formalmente en desuso y se eliminará en versiones posteriores de XHTML.

Atributos con conjuntos de valores predefinidos

Tanto HTML como XHTML tienen algunos atributos que tienen conjuntos de valores predefinidos y limitados. Por ejemplo,type atributo del inputelemento. En HTML y XML, estos se denominanenumerated attributes. En HTML 4, la interpretación de estos valores no distingue entre mayúsculas y minúsculas, por lo que un valor deTEXT era equivalente a un valor de text.

En XHTML, la interpretación de estos valores distingue entre mayúsculas y minúsculas, por lo que todos estos valores se definen en minúsculas.

Referencias de entidad como valores hexadecimales

Tanto HTML como XML permiten referencias a caracteres mediante el uso de valores hexadecimales. En HTML, estas referencias se pueden hacer utilizando&#Xnn; o &#xnn; y son válidos, pero en documentos XHTML, debe usar la versión en minúsculas solo, como &#xnn;.

El elemento <html> es imprescindible

Todos los elementos XHTML deben estar anidados dentro del elemento raíz <html>. Todos los demás elementos pueden tener subelementos que deben estar en pares y correctamente anidados dentro de su elemento padre. La estructura básica del documento es:

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>