Validação e Semântica

Eu me lembro que tempos atrás eu acreditava que passar pelo validador da W3C era tudo! Acreditava que se eu conseguisse validar meu site em “XHTML strict” eu seria “o cara”! Me lembro até hoje como foi a sensação de ver aquela tela “This page is valid XHTML 1.0 Strict” pela primeira vez. Com certeza “um pequeno passo para um homem, mas um grande passo para humanidade”, eu pensava.

Vou ter que tirá-la da toca do coelho Alice!

Este mundo mágico que você acreditava existir onde você insere sua URL e um mecanismo verifica que você está com um código semântico não existe! Existe outra realidade que você deve saber sobre os validadores, e especificamente sobre o validador de HTML da W3C. O maior erro que a maioria dos desenvolvedores comete é associar que um código validado pela W3C é um código semanticamente correto. Não há nada mais enganoso que isto. Você pode ter um código sujo, sem respeitar nenhuma tag, sem nunca ter ouvido falar em semântica e ainda assim, tê-lo 100% validado em XHTML Strict.

Se você gritou na sua mente “isso é um absurdo” ou “o que este cara está falando?”, você precisa aprender algumas coisas sobre semântica.

Semântica é significado.

Como eu escrevi aqui anteriormente que semântica é o estudo do significado das palavras e sua relação uma com as outras. Não estou me referindo aqui a semântica de SGML da qual o XHTML é um dos derivados. É um assunto muito distante do escopo deste texto.  Estou falando de semântica de XHTML e nada mais. Neste sentido estrito, um código semântico nada mais é do que utilizar as tags no sentido real pelo qual elas foram criadas. Se você vai escrever uma lista, você pode usar <ol> <ul> ou <dl>, se vai escrever um endereço você deve usar <adderess>, se precisa de um título, você tem os headings <h1>, <h2>, <h3> e assim por diante. Utilizar as tags no sentido correto é igual a “código semântico” que por sua vez justifica o termo “web standards”. Seguir os web standards é respeitar a semântica!

O validador de HTML verifica a ortografia do seu código, ou seja, verificam se não há erros de escrita nele. E nada mais! É só isso que ele faz. Ele não avalia se o conteúdo que você inseriu, e que só tem significado para seres humanos, foi inserido dentro das tags correspondentes aquele tipo de conteúdo. Ou seja, o validador nem ao menos vai te falar se seu código está dentro dos padrões e nem ao menos significa que seu trabalho seja uma boa página! O validador não vai te informar se este trecho deve estar dentro de um <h1> ou dentro de uma <li>. Isso é impossível de ser feito!

Não existe e nunca vai existir um “validador semântico”. Você vai precisar estudar e ler muito para avaliar você mesmo se o seu XHTML segue os padrões ou não. A semântica é a alma dos web standards. Seguir os padrões é descrever seus dados usando as tags de forma correta (descrever dados te lembra outra coisa chamada Microformats?). Você precisa dizer para os user agents o que é um título, o que é uma lista ordenada, o que é um endereço e assim por diante.

Voltando aos Validadores

Para que servem os validadores então, se eles não avaliam se meu site está ou não dentro dos padrões? A função dos validadores é te ajudar a verificar se seu código tem erros de “ortografia”. Ele pode te mostrar onde você esqueceu de fechar uma tag, onde você esqueceu um atributo que não deveria ter esquecido ou o lugar onde você colocou aspas e não deveria ter feito. Um site “validado” significa simplesmente que ele não tem erros ortográficos! Não significa que ele segue os padrões. Mais vale um site semântico com alguns errinhos ortográficos na mão (leia-se não validado) do que dois sites validados feito todo em tabelas voando!

Algum tempo atrás me parece que havia um “status” maior em se ter um site validado. Alguns até diziam que se não fosse em XHTML Strict e validado, o site não merecia atenção. Mas lembre-se que o HTML 4 ainda é uma recomendação da W3C, e um site semanticamente correto, escrito em HTML 4 e com alguns errinhos de ortografia tem milhões de chances a mais de ser relevante para o Google ou qualquer outro mecanismo de busca, do que um site validado, não semântico e feito em tabelas. Os valores aqui se inverteram não é mesmo?

No final das contas, é ou não importante ter um site validado?

Sim. É importante. Significa que você não esqueceu nada onde não deveria e que seu documento não tem erros ortográficos e código mal escrito. Mas nunca se esqueça que isso não faz do seu site um “web standards conformance”.  E se vivêssemos no país das maravilhas e fizesse algum sentido fazer uma escolha entre as duas opções, ter um site dentro dos padrões, mas com erros de validação, é melhor! É tudo uma questão de relevância!

34 thoughts on “Validação e Semântica”

  1. Um problema semântico que surge com isso diz respeito aos CMS's e aos clientes que querem poder atualizar sempre seus conteúdos sozinhos. Para manter o código semântico, eles vão ter que marcar palavras estrangeiras (se não for XHTML 1.1), abreviaturas, siglas, etc. Será que isso vai dar certo?

  2. Concordo com essa história de validação. Mas e aquela sua função que abre o link em uma nova janela? Iso é só pra não colocar o target no link… Você não acha q no fundo é a mesma coisa? Que ela só serve pra validar? Se o W3C tira o target é por que não se deve abrir novas janelas, e deixar o usuário escolher se qr uma nova…

  3. Para o caso dos CMS's eu acho que seria melhor colocar um HELP ME ou um Leia Antes com alguns conselhos sobre certas TAGS, delimitando o usuário para algumas TAGs ou "coisas" que ele queira colocar.
    Já no caso do LINK – eu vi hoje inclusive, achei demais – eu acho que é para validar sim, ainal… mais vale um site com erros ortográficos do que um site sem semantica, mas se for o dois, acho que fica melhor. Ah… eu discordo do fato de não poder colocar o _blank, mas acho que a W3C fez isso para freiar "webDesigners" que fazem isso com o site inteiro. Tipo, aquele link que vai para uma página só por causa de um foto.

  4. Eu, assim como uma massiva quantidade de pessoas, está interessada em um código semânticamente correto.

    Estou aprendendo diariamente através dos conteúdos aqui presentes e em vários outros lugares, o valor da websemantica. Isso sim é uma revolução!

    A verdade é que devemos primar pelos dois caminhos, tanto a semantica quanto a validação, mas devemos fazer do jeito certo, assim como o Henrique escreveu.

    Meus parabéns mais uma vez pelo excelente artigo!

  5. Os CMS's realmente acabam criando algumas barreiras quanto a validação e semântica. Ninguém quer ficar escrevendo tags num artigo a fim de "ter um código bonito e válido"; querem saber apenas de escrever, clicar em "OK" e pronto.
    Agora, sobre o artigo, muito bom, eu também em meu primeiro contato com os padrões achava isso, mas hoje em dia eu tenho uma visão totalmente diferente, e pra falar a verdade eu sempre acabo pensando "porque eu não aprendi HTML semantico desde o princípio?". É a vida, parte da evolução, o artigo serve para alertar quem não se tocou sozinho, com pesquisa e etc.

  6. Em matéria de relevância, de fato o código semânticamente deve ser priorizado… Mas nada como unir o útil ao agradável, em suma, busquemos sempre a perfeição!

    Como sempre, ótimo artigo, Henrique. Parabéns!

  7. Pegar um layout que um desinger fez no photoshop e destruir os miolos do cérebro pra montar tudo dentro dos padrões e sem hacks malditos para o IE é uma tarefa que demanda tempo e muito, muito café.
    Sabemos também que tempo é dinheiro e infelizmente não há como chegar para seu cliente e falar: "Seu site vai ficar mais caro porque o código dele vai ficar mais bonito". O cara não quer nem saber do código. Ele quer ver o site dele rodando lindamente, independente do que está por trás.

    Estou migrando o site da minha empresa (que o atual tem um código medonho) para os padrões e tentando ser o mais correto possível na hora da apicação das tags. Mas ainda não aprendi como devo me dirigir a um cliente para explicar qual vai ser o real benefício que ele terá para pagar a diferença de preço.

    Saber os padrões e entender como eles funcionam é um ponto positivo para MIM e meu curriculo, pois sei que estou melhorando meu procedimento de desenvolvimento, mas infelizmente esse resultado ainda não pode ser repassado para os clientes que pagam pelo meu serviço.

  8. sem sombra de duvida o q mais trava o desenvolvimento dos padrões web aqui no Brasil, e a desvalorização do serviço. É realmente frustrante ter q fazer serviços com prazos irreais, e ter q fazer codigo porco para cumprir as metas. E ainda mais frustrante é q a cada dia q se passa fico menos esperançoso de ver isso valorizado. Mas por enquanto ainda vou ser otimista e tentar melhorar o meu codigo cada vez mais 🙂
    Abraço

  9. Concordo Henrique, boa visão, tava até pensando em escrever algo sobre, mas já postou ae e muito bem 😉
    É impossível mesmo ter um validador semantico. Esse validador é o próprio desenvolvedor, com conhecimento para fazer o tal.
    E acho que agora um grande desafio é como o pessoal tah falando, um CMS's nos padrões, bem complicado conseguir um ótimo resultado…

  10. Kiko,

    Apenas chegue para seu cliente, e diga que está migrando o site para ocupar menos banda, ficar mais rápido, mais leve, e mais fácil de expandir ou modificar futuramente.

  11. Pessoa do 10° comentário,
    os padrões podem melhorar sim o desempenho do site, mas não é o único responsável. Eu posso usar os padrões e imagens gigantescas que o site vai ficar pesado do mesmo jeito.
    Sobre expansão e atualização também não tem muita justificativa, porque pra mexer num site mantendo ele no padrão pode até custar mais tempo do que atualizar sem se preocupar com regras de semântica.
    Ainda não é uma justificativa que vai fazer o cliente investir.

  12. Claro… mas isso depende do desenvolvedor. Se o projeto for bem pensado será menor que sua versão em tabelas. Para provar isso existia a seção convertido do tableless.com.br, onde TODOS os sites eram menos em versão tableless.

  13. Mas Felipe, eu também não estou falando de tabelas. Estou falando de padrões. Eu só tenho utilizado tableless… o problema é fazer o código totalmente semanticamente correto. Eu tenho o máximo, mas nunca fica 100% por falta de tempo.

  14. Kiko,

    Desculpe por utilizar seu nome antes, foi sem querer. 🙂

    Bem, mais uma justificativa é que o site irá funcionar de forma "semelhante" em qualquer navegador ou sistema operacional. E isso são mais de 10% dos usuários!

    Caso você não seja familiarizado com Tableless/Web Standarts, e acha que do método "tradicional" com tabelas vai ter uma produtividade maior, dependendo do tamanho do site, porque não, né?

    É tudo uma questão de análise. Você pode sim desenvolver fora dos padrões. Mas lembre seu cliente de outros navegadores, consumo de banda, posteriores modificações no site e outras vantagens que pode estar perdendo.

  15. Bruno, voltando ao que eu disse, não estou dizendo que programar fora dos padrões é diagramar com tabelas. Programar nos padrões, com semântica correta é sim utilizar as tags corretas para as suas devidas funções.
    Além do que é muito prezada a validação XHTML, embora, como disse o Henrique, apenas validar seu XHTML não queira dizer que você está com um código semanticamente correto.

    Digo que se preocupar com todos os detalhes de semântica e correção do CSS para validação XHTML, bem com evitar os hacks do CSS pro ie, acabam demandando mais trablaho que o usual.
    É esse trabalho extra-oficial que não há como repassar para o cliente, pois este não consegue entender o motivo do overprice.
    O Brasil ainda está engatinhando nesse meio e acho que um dia, quando o mercado tiver crescendo, alguém vai dar valor real ao que estamos discutindo aqui…

  16. Pingback: No idea! » Blog Archive » A importância da semântica
  17. Você falou e falou e não exemplificou a semantica na prática. Afinal, quais são suas recomendações para a semantica?

    E ainda disse bobagens. o validador W3C não analisa apenas os erros ortográficos e tags aberta. Ele alerta e valida sim para os padrões web (padrão XHTML).

    Ele apenas não torna um site semântico nem acessível.

  18. Pingback: Validação vs. Semântica » RafaelMarin.net
  19. Bom, primeira vez que vejo o blog e gostei do mesmo, ainda mais do polêmico assunto. Apenas uma observação pqp como tem "bruno" postando… caraca… Agora indo ao que interessa, eu trabalho a um certo tempo com web, e venho passando por uma evolução (natural, para com quem estuda para isso). Sempre procurei validar meus códigos após iniciar o XHTML, para que for conferir meu atual portal verá que está realmente grotesco e está passando por muitas mudanças de acordo com as normas e regras. Agora todos meus clientes estão com seus sites validados e teoricamente semanticamente corretos (digo teoricamente pois nem todos 100% foram mechidos por mim, eu tinha um funcionário que nao era ligado nem em validação e muito menos semantica) mas mesmo assim prezo por isso pela qualidade do meu serviço, mesmo que isso me tire mais tempo do que necessário para a entrega do serviço. Jamais pensei em fazer algo "mal feito" ou que fossem contra as regras que eu aprendo todos os dias, já deixo claro para os clientes que jamais entregarei algo "mais rapido" ou mais barato pelo simples fato de não cuidar ao máximo com o meu codigo e a minha maneira de programar. Quanto a justificar valores para o cliente eu já tenho os valores ajustados de acordo com a maneira com que programo, sendo assim não dou a opção ao cliente de reduzir custos pela não conformidade dos códigos. Muitos não dão nem bola para isso. Mas eu como programador dou sim e mantenho isso mesmo nos sites mais básicos. Trabalhar com a semantica correta posso não estar fazendo por ainda nao ter tido tempo para estudar mais mas a cada dia pretendo evoluir nesta área. Sobre a validação do XHTML eu acho importante sim, mas validar CSS tendo FF e IE juntos PRATICAMENTE IMPOSÍVEL ! Abraço e desculpe me prolongar! Boa iniciativa do blog discutir este assunto tão polêmico e aproveitando o espaço alguem algum site de referência para SEMANTICA?!

  20. Concordo plenamente, mas acho que ter o site validado pela w3c é o primeiro passo e é muito importante, mas não essencial

  21. Muito bom o artigo, Mas… que diferença faz, quais as vantagens de ser sematicamente correto, se um codigo é valido ou não, semantico ou não, ele não vai ser decodificado e compreendido da mesma maneira pelo navegador??
    sinceramente eu acho que vcs se preocupam demais com o "codigo" ao inves de se preocupar com o usuario final, eu como sou estudante dessa area me interesso muito pelo desenvolvimento, pelo que há por tras da web, tenho mania de ficar investigando codigos alheios, css e tal, mas e a dona de casa que vai ver o resumo da novela no site da globo, vcs acham que ela tem alguma noção do que é semantica? os usuarios não dão a minima pra isso tudo,
    pode parecer ignorancia mas eu particularmente não me preocupo com isso, e sim com quem vai usufruir do meu projeto.

Leave a Reply

Your email address will not be published. Required fields are marked *