Categories: (X)HTMLtodas

XHTML nao é para iniciantes

Como divulgadores das Web Standards, muitos de nós participamos de comunidades online tais como listas de discussão, fóruns, grupos e blogs (não só escrevendo nossas próprias matérias como também comentando em blogs alheios). Em tais comunidades, é comum encontrarmos pessoas recém começando com HTML, e até mesmo várias delas já bastante familiarizadas com a marcação, mas principiantes nas práticas de desenvolvimento Web Standards.

Invariavelmente os iniciantes logo se encontram perante a eterna questão da decisão entre HTML ou XHTML; e hoje eu pretendo neste artigo responder a esta questão (para os principiantes) de uma vez por todas. Minha resposta é dada para os principiantes e para nós que ensinamos as práticas Web Standards. A resposta para usuários mais experientes seria diferente.

Eu não pretendo começar o debate XHTML versus HTML e muito menos reiterar que servir XHTML como text/html é extremamente nocivo; eu devo sim lembrar que tanto HTML quanto XHTML têm seu emprego apropriado e que é importante usar a ferramenta adequada para cada caso. Mas, para iniciantes é preciso dar uma resposta clara e apontar um caminho seguro para o aprendizado, assim, nós que ensinamos temos que adotar um caminho unificado na nossa posição. Se iniciantes se depararem com diferentes respostas vindas de diferentes fontes o resultado será uma confusão generalizada e acabaremos por lançar para sempre, os iniciantes, para o lado negro da força.

Quero começar dizendo que XHTML não é para iniciantes. Devemos começar ensinando HTML e assim sedimentar um caminho seguro para um futuro com XHTML. Argumenta-se que o futuro é o XHTML (the future lies with XHTML) (embora caiba um ‘vamos ver se é mesmo’) e desta forma devemos começar logo ensinando XHTML. Na teoria tal pensamento parece certo, mas a realidade é que nós estamos ensinando em um ambiente predominantemente text/html e o fato é que: tentar ensinar XHTML nas condições do HTML à maneira ‘tag-soup’ é algo parecido com tentar ensinar uma criança a nadar jogando-a em uma piscina funda e só perceber que ela está se afogando quando já for muito tarde. Com o XHTML acontece o mesmo; existe muita coisa que o iniciante deve aprender além dos itens relacionados com o suporte ao XHTML pelos navegadores e assim devemos simplesmente aceitar que eles não estão preparados para XHTML e então ensinar HTML.

XHTML não é simplesmente HTML 4 em sintaxe XML, ele é um pacote com todas as implicações e requisitos do XML com todas suas “Fragilidades” e “Cuidados no manuseio” próprios da marcação. A despeito da crença atual, envolvendo o uso de servir XHTML como text/html e fazer a mudança para XML quando o suporte do navegador melhorar, existem fortes evidências de que XHTML desenvolvido em ambiente text/html não sobreviverá à transição para XML, contrariando as suposições atuais.

O grande número de páginas ao estilo ‘tag-soup’ clamando ser XHTML é desenvolvida por principiantes que não levam em consideração detalhes extremamente importantes da codificação, sendo que a maioria destes principiantes, sequer entende direito o que estão fazendo e precisariam primeiro aprender para depois usar. Eu não pretendo me aprofundar em minúcias, mas aponto a seguir nesta matéria, alguns daqueles detalhes e garanto que se você perguntar a um iniciante (que tenha aprendido XHTML baseado nos princípios do HTML) sobre qualquer um dos detalhes apontados, eles não terão a mínima noção de sobre o que você esta falando. Vamos aos detalhes:

Pontos gerais sobre a marcação

  • O Internet Explorer 7 e anteriores não oferecem qualquer suporte ao XHTML, nem mesmo suporte parcial. Quem afirmar o contrário ou é um ignorante ou estará mentindo. (Espera-se, mas não há certeza de que o IE8 finalmente suportará).
  • Erros de má formatação são fatais.
  • O namespace (atributo xmlns) deve ser declarado na raiz do documento, apesar de o validador não acusar erro se tal declaração for omitida.
  • O uso de referências para nome de entidades pode ser fatal para parsers não validados (exceção para amp, lt, gt, quot e apos).
  • Use xml:lang no lugar de lang.
  • O significado sintático de elementos vazios em XML é diferente em SGML e HTML, para navegadores que não os suportam.
  • DTDs são instáveis no suporte a validação quando há misturas de namespace.
  • Quando servido como XML, o DOCTYPE não é condição para colocar o navegador em modo standards.
  • A declaração XML coloca o IE6 no modo quirks quando servido como text/html e deve ser omitida nestes casos (ver outras considerações a seguir).

MIME e codificação

  • O MIME type deve ser apropriadamente declarado no HTTP headers (application/xhtml+xml (preferido), application/xml (aceitável) ou text/xml (não recomendado)).
  • Codificação deve estar dentro da declaração XML e não no HTTP headers, uma vez que XML é um formato auto descritivo. (Isto não se aplica para text/xml).
  • Para text/xml, se não estiver especificado em nível de protocolo, deve ser usado US-ASCII.
  • Quando a declaração XML é omitida, UTF-8 ou UTF-16 deve ser usada, a menos que tenha sido especificada em um protocolo de nível mais alto.
  • O elemento meta não tem qualquer valor para especificar a codificação e o MIME type.

Scripts e Folhas de estilos

  • script e elementos style são parseados de modo diferente, a tradicional sintaxe de marcação para comentários no HTML e em scripts ( HTML comment-like syntax within script and style elements) não deve ser usada para esconder código aos navegadores mais antigos.
  • document.write() e document.writeln() não funcionam.
  • innerHTML (propriedade não standard) não é suportada por alguns agentes de usuário para XHTML.
  • DOM necessita do uso de métodos namespace compatíveis onde aplicável.
  • Métodos DOM são sensíveis ao tamanho de letra.
  • Nomes de elementos e de atributos para métodos do DOM são sensíveis (letras minúsculas), comparadas às letras maiúsculas para o HTML.
  • Regras CSS são aplicáveis em XML e diferem significativamente de regras para HTML. O elemento body não está sujeito a um tratamento diferenciado.
  • A sensibilidade ao tamanho de letras para os seletores CSS depende da linguagem de marcação, são sensíveis para o XHTML.

Eu tenho quase certeza de que não existe uma lista de diferenças entre HTML e XHTML, contudo cada uma destas diferenças que eu apontei (e mais uma série delas que eu não apontei) deve ser muito bem entendida por todos que queiram aprender XHTML apropriadamente.

A grande maioria delas ou não se aplica ou não são muito bem explicadas sobre o ponto de vista de condições HTML. Contudo, por tudo isto e mais ainda pelo fato de que iniciantes aprendem sobre condições HTML, não é seguro para principiantes aprender XHTML. Ao ensinar XHTML para iniciantes, nós estamos na verdade ensinado uma nova forma de codificação ao estilo ‘tag soup’ sob a égide do “desenvolvimento segundo as standards” e isto torna-se mais nocivo do que útil.

Usuários experientes e capazes de entender todas estas implicações estão em condições de fazer um julgamento fundamentado de quando é recomendável usar HTML ou XHTML, contudo o mesmo não se aplica aos principiantes. Para finalizar, quero reiterar que nós devemos nos unir nestes pontos de vista e encorajar os principiantes a começar com HTML e não com XHTML.

Créditos

Este artigo é uma tradução do original em inglês de Lachlan Hunt
publicado em XHTML is not for Beginners

Maujor

Exerci o magistério paralelamente a minha carreira profissional por toda uma vida e ao longo destes trinta anos aprendi tanto quanto ensinei. Sou um apaixonado por Web Standards e desenvolvo o site de tutoriais CSS para Web Design.

View Comments

  • Olha só....

    Uma pessoa que escreve uma réplica cheia de erros de português como você, Guilherme, não merece crédito pelos comentários.
    Sou web master há 6 anos, e dificilmente vejo em posts uma falta de respeito e profissionalismo com um colega.
    Como você disse, é lamentável.

  • Despreso esse artigo.
    É a coisa mais ridícula que já vi em toda minha vida.

    Horrível.

    Lamentavel.

    Sou designer e programador a muito mais tempo que você meu caro amigo.

    Dou aula a mais de 3 anos.

    Seu artigo é desprezavel.

  • òtima 'tradução' perfeita fonte de leitura.

    Esta 'transição' parece ser muito complicada, eu mesmo, as vezes me pego a ler artigos como este, e novamente voltar e achar que está totalmente perdido caindo neste mundo de informação que está entrando em nossos olhos.

    Bem, mais para dizer uma ótima materia, e que ainda temos muito para estudar.!

  • Concordando com os colegas acima, realmente está muito legal esta tradução do artigo do Lachlan Hunt! Aproveitando, gostaria de sugerir:

    O carinha disse "Eu não pretendo me aprofundar em minúcias", mas creio que nada impede de que aqui tal aprofundamento aconteça. É apenas uma sugestão, mas o que acha, Maujor, de fazer uma "série" com detalhes de cada um dos itens elencados? Lembra-se daquela vez que fez várias matérias sobre algumas tags não muito conhecidas? Então, algo do gênero.

    Creio que seria de grande ajuda para nós, "principiantes que não levam em consideração detalhes extremamente importantes da codificação"...

  • Além do mais, muita gente divulga a idéia que o XHTML é "melhor" que o HTML. Não é bem assim.

    As vantagens do XHTML são basicamente divididas em duas: Pode ser extendido e pode ser tratado com ferramentas XML, como o XSLT. Ele não é mais "semântico" do que o HTML, não é mais "correto" e não tem motivo para ser usado se você não faz (ou pretende fazer) uso direto dessas vantagens.

    É muito comum ver hoje em dia sites que não usam nada disso, não extendem o XHTML (mesmo porque até para profissionais isso é um trabalho delicado) e não usam ferramentas XML diretamente no documento.

    O XHTML foi idealizado para trazer o HTML pra essa nova gama de tecnologias XML, pra trabalharem em conjunto. É raro usarem isso, o HTML ainda é visto como "aquilo que vai pro navegador" e não "aquilo que pode ser interpretado por uma máquina". Para a maioria massante dos sites hoje em dia, o HTML dá e sobra. Basta ser usado corretamente.

  • Muito bom este artigo.

    Realmente são pontos importantes a serem discutidos atualmente, já que estamos neste verdadeiro 'oba-oba' para aprender os Web Standards e acabamos nos esquecendo de alguns detalhes cruciais.

    Sempre deve-se começar pelo básico, simples. E o HTML é o caminho mesmo.

    Abraço!

  • Maujor, como sempre ótimos traduções, ou melhor, bons textos para mostrar a comunidade brasileira.

    Achei esse muito bom, um guia ótima para quem está entrando no mundo do XHTML.

    Parabéns!

Share
Published by
Maujor

Recent Posts

Teste seu conhecimento #20

Em 2006 comecei a publicar nesse blog uma série de desafios CSS que consistiam em…

7 anos ago

Teste seu conhecimento #19

Há muito tempo que eu não publico um "Teste seu conhecimento". Esta semana, revendo algumas…

10 anos ago

JavaScript bubbling e capturing

Introdução Elementos da marcação HTML podem ser aninhados uns dentro de outros, criando-se uma cadeia…

10 anos ago

HTML5 – W3C versus WHATWG

HTML5? Web universal? É comum eu me deparar com dúvidas sobre a HTML5 não só…

10 anos ago

Seria esse o futuro das imagens responsivas?

Quem é Tab Atkins Jr? Tab Atkins Jr, um desenvolvedor americano, trabalhou durante muitos anos…

11 anos ago

BrazilJS Conf 2013

Pessoal, a BrazilJS Conf 2013 disponibilizou para o Maujor cupons de desconto para serem oferecidos…

11 anos ago