Validação vs. Semântica
Lendo alguns artigos ? respeito de Validação e Semântica, como o artigo que o Henrique do Revolução Etc escreveu sobre o assunto, resolvi criar a minha versão para este assunto.
Talvez eu seja o centésimo que esteja escrevendo sobre isto, mas não importa.
Round 1: Validação
Muitos pensam pensam que um site validado pelo W3C é o suficiente, principalmente os iniciantes no assunto de Web Standards. É fundamental que o desenvolvedor conheça ao menos qual o papel real do Validador da W3C. Ao validar o código, você apenas verifica que não há nenhum erro de sintaxe, como uma tag que não foi fechada, e coisas do gênero. Só, e nada mais.
Round 2: Semântica
Talvez seja uma das gafes mais comuns cometidas pelos iniciantes confundir validação e semântica. Basicamente, a validação consiste em verificar se não há erros de sintaxe, e semântica é atribuir as tags adequadas de acordo com o conteúdo. Isso significa que usamos as tags <p> para parágrafos, <h1> (e as outras tags h) para títulos, e assim por diante.
O único validador de semântica que existe é você mesmo. Uma máquina não consegue verificar se o texto de uma tag <p> realmente é um parágrafo, ou se é um elemento com uma classe que o torna com a aparência de título.
Cabe exclusivamente a você avaliar se o seu código é semântico - o que exige experiência, e o que eu considero muito mais importante do que a validação. Por isso ? s vezes nem ligo se na validação ficam ainda alguns warnings - claro que tento corrigí-los ao máximo quando possível, mas é algo que não incomoda justamente por que uma das causas destes warnings são as adaptações necessárias para que o site rode tranqüilamente, sem distorções, em diferentes plataformas e browsers.
Ter um código sem erros é ótimo, e para isto (leia-se: SOMENTE para isto) é que serve o validador. Mas um código semântico, onde as tags realmente são usadas para sua devida função, vale muito mais.
Vou citar um exemplo que mostra a diferença entre validação e semântica, antes de encerrar este artigo: a tag <table> é utilizada para criar tabelas de dados, mas nos últimos tempos vêm sido usada por muitos desenvolvedores para estruturar o corpo da página. Isto é correto? Não, não é correto. Não é semanticamente correto, pois a tag <table> não foi planejada para a estruturação do corpo da página.
Mesmo não sendo o propósito da tag <table>, que é o de exibir dados tabulares, mas fazendo a tabela sem erros de HTML, o código será validado pelo validador. O código é válido? Sim, é válido. É semântico? Não.
Mais sobre o assunto
Em outros sites você encontra outras versões - melhores que a minha talvez - para este assunto. O Jader escreveu um bom artigo ? respeito, e o Henrique do Revolução Etc escreveu vários. Ah, o Maujor também escreveu um ótimo artigo.


[...] Viva o Linux! - W3C Rafel Marin - Validação vs. Semântica Tableless - Validar é importante?! Henrique Pereira - Eu já disse que validação não significa [...]