XHTML vs HTML

Devido ao fato de que XHTML é um aplicativo XML, certas práticas que eram perfeitamente legais em HTML 4 baseado em SGML devem ser alteradas. Você já viu a sintaxe XHTML no capítulo anterior, então as diferenças entre XHTML e HTML são muito óbvias. A seguir está a comparação entre XHTML e HTML.

Documentos XHTML devem ser bem formados

Boa formação é um novo conceito introduzido pelo XML. Essencialmente, isso significa que todos os elementos devem ter tags de fechamento e você deve aninhá-los corretamente.

CORRECT: Nested Elements

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

INCORRECT: Overlapping Elements

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

Elementos e atributos devem estar em letras minúsculas

Os documentos XHTML devem usar letras minúsculas para todos os elementos HTML e nomes de atributos. Essa diferença é necessária porque o documento XHTML é considerado um documento XML e o XML diferencia maiúsculas de minúsculas. Por exemplo, <li> e <LI> são tags diferentes.

Tags finais são obrigatórias para todos os elementos

Em HTML, certos elementos podem omitir a tag final. Mas o XML não permite que as tags finais sejam omitidas.

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>

Os valores de atributo devem sempre ser citados

Todos os valores de atributos, incluindo valores numéricos, devem estar entre aspas.

CORRECT: Quoted Attribute Values

<td rowspan="3">

INCORRECT: Unquoted Attribute Values

<td rowspan=3>

Minimização de Atributo

XML não suporta minimização de atributos. Os pares de atributo-valor devem ser escritos por extenso. Nomes de atributos como compact e checks não podem ocorrer em elementos sem que seu valor seja especificado.

CORRECT: Non Minimized Attributes

<dl compact="compact">

INCORRECT: Minimized Attributes

<dl compact>

Tratamento de espaços em branco em valores de atributo

Quando um navegador processa atributos, ele faz o seguinte -

  • Tira espaços em branco à esquerda e à direita.

  • Mapeia sequências de um ou mais caracteres de espaço em branco (incluindo quebras de linha) para um único espaço entre palavras.

Elementos de script e estilo

Em XHTML, o script e os elementos de estilo não devem ter caracteres “<” e “&” diretamente, se existirem; então, eles são tratados como o início da marcação. As entidades como “<” e “&” são reconhecidas como referências de entidade pelo processador XML para exibir os caracteres “<” e “&” respectivamente.

Encapsular o conteúdo do script ou elemento de estilo em uma seção marcada com CDATA evita a expansão dessas entidades.

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

Uma alternativa é usar scripts externos e documentos de estilo.

Os elementos com atributos id e name

XHTML recomenda a substituição do atributo name pelo atributo id . Observe que no XHTML 1.0, o atributo name desses elementos está formalmente obsoleto e será removido em versões subsequentes do XHTML.

Atributos com conjuntos de valores predefinidos

HTML e XHTML têm alguns atributos que possuem conjuntos de valores predefinidos e limitados. Por exemplo,type atributo do inputelemento. Em HTML e XML, são chamadosenumerated attributes. No HTML 4, a interpretação desses valores não fazia distinção entre maiúsculas e minúsculas, então um valor deTEXT era equivalente a um valor de text.

No XHTML, a interpretação desses valores diferencia maiúsculas de minúsculas, portanto, todos esses valores são definidos em minúsculas.

Referências de entidade como valores hexadecimais

HTML e XML permitem referências a caracteres usando valor hexadecimal. Em HTML, essas referências podem ser feitas usando&#Xnn; ou &#xnn; e eles são válidos, mas em documentos XHTML, você deve usar a versão em minúsculas apenas, como &#xnn;.

O elemento <html> é obrigatório

Todos os elementos XHTML devem ser aninhados no elemento raiz <html>. Todos os outros elementos podem ter subelementos que devem estar em pares e aninhados corretamente em seu elemento pai. A estrutura básica do documento é -

<!DOCTYPE html....>

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