Validação de HTML: Isso é importante?

A Web é, para dizer de forma caridosa, um lugar bastante tolerante. O senhor pode alimentar os navegadores da Web com quase qualquer qualquer tipo de marcação HTML ou código JavaScript, e eles tentarão, com determinação, entender o que o senhor forneceu e renderizá-lo da melhor forma possível. Em comparação, a maioria das linguagens de programação é quase cruelmente implacável. Se houver um único caractere fora do lugar, seu programa provavelmente não será compilado, muito menos executado. Isso faz com que o ambiente HTML + JavaScript seja uma plataforma de desenvolvimento de software bastante exclusiva e, muitas vezes, frustrante.

Mas não precisa ser assim. Existem disposições e mecanismos para validar sua marcação HTML através da ferramenta oficial Validador W3C. A brincadeira com o validador ressalta a profundidade dessa perdão por padrão permeou toda a Web. Recentemente, Dennis Forbes submeteu vários sites ao validador, inclusive este, com resultados previsivelmente ruins:

FALHAhttp://www.reddit.com – 36 erros como XHTML 1.0 Transitional. EDITAR: Verifiquei novamente o Reddit e agora é um PASS
FALHAhttp://www.slashdot.org – 167 erros como HTML 4.01 Strict
FALHAhttp://www.digg.com – 32 erros como XHTML 1.0 Transitional
FALHAhttp://www.cnn.com – 40 erros como HTML 4.01 Transitional (inferido porque nenhum doctype foi especificado)
FALHAhttp://www.microsoft.com – 193 erros como XHTML 1.0 Transitional
FALHAhttp://www.google.com – 58 erros como HTML 4.01 Transitional
FALHAhttp://www.flickr.com – 34 erros como HTML 4.01 Transitional
FALHAhttp://ca.yahoo.com – 276 erros como HTML 4.01 Strict
FALHAhttp://www.sourceforge.net – 65 erros como XHTML 1.0 Transitional
FALHAhttp://www.joelonsoftware.com – 33 erros como XHTML 1.0 Strict
FALHAhttp://www.stackoverflow.com – 58 erros como HTML 4.01 Strict
FALHAhttp://www.dzone.com – 165 erros como XHTML 1.0 Transitional
FALHAhttp://www.codinghorror.com/blog/ – 51 erros como HTML 4.01 Transitional
PASShttp://www.w3c.org – sem erros como XHTML 1.0 Strict
APROVADOhttp://www.linux.com – sem erros como XHTML 1.0 Strict
APROVADOhttp://www.wordpress.com – sem erros como XHTML 1.0 Transitional

Em resumo, vivemos em um mundo malformado. Tanto é assim que o senhor começa a questionar se a validação tem alguma importância. Se o senhor vir esse logotipo em um site, o que ele significa para o senhor? Como isso afetará sua experiência nesse site? Como desenvolvedor? Como usuário?

w3c-validation-button-large.png

Acabamos de fazer o exercício de validação do HTML do Stack Overflow. Quase imediatamente descartei a ideia de validar como XHTML, porque eu concordo veementemente com James Bennett:

O motivo mais curto e direto é simplesmente este: O XHTML não oferece nenhuma vantagem convincente, para mim, em relação ao HTMLmas, mesmo que oferecesse, também aumentaria a complexidade e a incerteza, o que o tornaria pouco atraente para mim.

Todo o exercício de validação de HTML é questionável, mas o validar como XHTML é um verdadeiro masoquismo. Recomendado apenas para quem gosta de dor. Ou programadores. Nem sempre consigo distinguir.

De qualquer forma, validamos como o HTML 4.01 rigoroso e muito mais saudávele, mesmo assim, não sei se valeu a pena o tempo que gastamos. Muitas dessas regras de validação parecem arbitrárias e sem sentido. E, o que é pior, algumas delas são ativamente prejudiciais. Por exemplo, isso não é permitido em HTML strict:

<a href="http://www.example.com/" target="_blank">foo</a>

É isso mesmo, target, um atributo perfeitamente inofensivo para links que o senhor deseja abrir em uma guia/janela diferente do navegador, é de alguma forma proibido no HTML 4.01 rigoroso. Há uma solução alternativa com suporte oficial, mas é implementado apenas pelo Operaportanto, na verdade… não há solução alternativa.

Para estar em conformidade com o validador estrito do HTML 4.01, o senhor precisa remover esse target e substituí-lo por JavaScript que faça a mesma coisa. Então, imediatamente comecei a me perguntar: Alguém está validando nosso JavaScript? E quanto ao nosso CSS? Alguém está validando as manipulações DOM que o JavaScript executa em nosso HTML? Quem valida o validador? Por que não consigo parar de pensar em zebras?

Será que realmente importa se renderizamos as coisas dessa forma.

<td width="80">
<br/>

… versus desta forma?

<td style="width:80px">
<br>

Quero dizer, quem cria essas regras? E por qual motivo?

Não pude deixar de sentir que validar como HTML 4.01 estrito, pelo menos em nosso caso, era um exercício gigantesco de “poder-para” versus “poder-para”., pontuado por mudanças agravantes que fomos forçados a fazer sem nenhum benefício prático. (Além disso, se o senhor tem uma tonelada de conteúdo gerado pelo usuário, como nós temos, pode jogar fora qualquer fantasia de validação 100% perfeita pela janela.)

Dito isso, a validação tem seus encantos. O processo de validação expôs algumas coisas em nossa marcação HTML que estavam claramente erradas: uma tag órfã aqui e algumas inconsistências na forma como aplicamos as tags ali. Mark Pilgrim defende a validação:

Não estou afirmando que sua página, uma vez validada, será automaticamente renderizada de forma impecável em todos os navegadores; talvez não. Também não estou afirmando que não existam designers talentosos capazes de criar páginas no estilo antigo “Tag Soup” que funcionem perfeitamente em todos os navegadores; certamente existem. Mas o validador é uma ferramenta automatizada que pode destacar erros pequenos, mas importantes, que são difíceis de localizar manualmente. Se o senhor criar uma marcação válida na maior parte do tempo, poderá aproveitar essa automação para detectar seus erros ocasionais. Mas se a sua marcação não for nem de longe válida, o senhor estará às cegas quando algo der errado. O validador exibirá dezenas ou até centenas de erros em sua página, e encontrar o que realmente está causando o problema será como encontrar uma agulha em um palheiro.

Há alguma verdade nisso. Aprender as regras do validador, mesmo que o senhor não concorde com elas, ensina-lhe qual é a definição oficial de “válido”. Isso fundamenta sua marcação na realidade. É como passar seu código-fonte por um validador ultraestrito. lint ou configurando o compilador para o nível de aviso mais rigoroso possível. Conhecer as regras e os limites o ajuda a definir o que está fazendo e lhe dá munição legítima para concordar ou discordar. O senhor pode fazer uma escolha informada, em vez de uma escolha aleatória do tipo “eu faço isso e funciona”.

Depois de passar pelas etapas de validação do HTML, aqui vai meu conselho:

  1. Valide seu HTML. Saiba o que significa ter uma marcação HTML válida. Entenda as ferramentas. Mais informações são sempre melhores do que menos informações. Por que voar às cegas?
  2. Ninguém se importa se seu HTML é válido. Exceto o senhor. Se o senhor quiser. Não pense, nem por um segundo, que produzir HTML perfeitamente válido é mais importante do que administrar seu site, fornecer recursos que encantem os usuários ou realizar o trabalho.

Mas a pergunta permanece: a validação de HTML é realmente importante? Sim. Não. Talvez. Depende. Vou dizer ao senhor a mesma coisa que meu pai me disse: siga meu conselho e faça o que o senhor quiser.