HTML y XHTML son las dos variantes que existen en el lenguaje HTML 5. Las diferencias entre esas dos variantes son básicamente sintácticas: la sintaxis HTML está inspirada en la norma SGML (aunque no la cumple estrictamente), mientras que la sintaxis XHTML está basada en la recomendación XML (aunque tampoco la cumple estrictamente).
En general, la sintaxis XHTML es más "estricta", en el sentido de imponer restricciones en la forma de escribir etiquetas, atributos o valores, mientras que la sintaxis HTML es más "flexible".
Si un documento contiene errores de sintaxis (HTML o XHTML) se dice que es un documento inválido. Si las páginas web se sirven al navegador como application/xhtml+xml, el navegador debe rechazar las páginas inválidas, pero si se sirven al navegador como text/html, los navegadores intentan mostrar el documento aunque contenga errores. Aunque los navegadores a menudo consiguen mostrar documentos inválidos, se aconseja validar y corregir los documentos para asegurar que los navegadores puedan mostrarlos correctamente.
En esta lección se comentan algunas de las diferencias entre las sintaxis HTML y XHTML. En casi todos los casos se puede escribir código válido para ambas sintaxis.
<p>AAAA</p>
BBBB
<p>CCCC</p>
<p class="xxx">AAAA</p>
<P>AAAA</P>
<p CLASS="xxx">AAAA</p>
<p>α β π</p>
<p>α β π</p>
<script type="text/javascript">
<![CDATA[
... unescaped script content ...
]]>
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML</title>
</head>
<body>
<!-- contenido de la página -->
</body>
</html>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>HTML</title>
</head>
<body>
<!-- contenido de la página -->
</body>
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XHTML</title>
</head>
<body>
<!-- contenido de la página -->
</body>
</html>
<p>AAAA</p>
<p>BBBB</p>
<p>AAAA
<p>BBBB</p>
Las etiquetas vacías (void) de HTML son <area>, <base>, <br>, <col>, <embed>, <hr>, <img>, <input>, <link>, <meta>, <param>, <source>, <track> y <wbr>.
<hr />
<hr></hr>
<hr>
El cierre de las etiquetas vacías en XHTML puede tener o no un espacio delante. En la recomendación XHTML 1.0 se recomendaba dejar un espacio delante por compatibilidad con algunos navegadores (por ejemplo, Netscape 4.8), pero seguramente hace años que esos navegadores han desaparecido del mercado.
<hr />
<hr/>
<pre>x<sup>2</sup></pre>
Nota: El validador del W3C dice que el ejemplo es anterior es correcto en XHTML pero la recomendación dice claramente que no lo es (apéndice B de la recomendación XHTML 1.0).
<p><label><label><input type="checkbox" name="casilla" />Casilla 1</label></label></p>
Nota: El validador del W3C dice que el ejemplo es anterior es correcto en XHTML, pero la recomendación dice claramente que no lo es (apéndice B de la recomendación XHTML 1.0).
<ol reversed="reversed">
<li>AAA</li>
<li>BBB</li>
</ol>
<ol reversed="">
<li>AAA</li>
<li>BBB</li>
</ol>
<ol reversed>
<li>AAA</li>
<li>BBB</li>
</ol>
<p><input type="text" /></p>
<p><input type="TEXT" /></p>
<p style="color: red">AAAA</p>
<p style=color:red>AAAA</p>
<p style=color: red>AAAA</p>
<p class="xxx">AAAA</p>
<p class=xxx>AAAA</p>