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