XHTML: pensando no futuro?

Há algum tempo acompanho a discussão sobre se devemos usar XHTML ou HTML para desenvolver nossos sites hoje. Já discuti com muitas pessoas sobre isso e a conclusão é sempre a mesma, nenhuma.

O principal argumento que se usa para defender o uso do XHTML é que dessa maneira estaríamos dando um passo a frente, pensando no futuro. Essa afirmação não está errada, XHTML é sim um passo a frente, é uma maneira de se pensar no futuro. Mas, para que isso seja realmente verdadeiro é preciso prestar atenção a alguns detalhes.

Antes que alguém tire conclusões precipitadas, devo dizer que sou a favor do XHTML. Escrevo este post apenas para tentar ajudar a esclarecer alguns pontos que tenho percebido não estar muito claros na cabeça da maioria das pessoas que estão pegando o bonde dos padrões web agora.

XHTML enviado como text/html causa problemas

Ian Hickson já discorreu sobre os problemas de se enviar XHTML como text/html antes mesmo de eu ouvir falar em XHTML pela primeira vez. Este texto é uma leitura quase obrigatória para qualquer um que deseje entender um pouco sobre a maneira como seus documentos são interpretados pelos browsers e pretende realmente desenvolver sites que sejam “future-proof”, ou seja, que causem o mínimo de problemas — ou nenhum, preferivelmente — no dia em que a migração completa para XHTML for possível.

Mas, Bruno, como assim? Ainda não é possível migrar totalmente para XHTML? Eu escrevo documentos XHTML e eles funcionam muito bem em qualquer browser. Explica isso direito.

Bom, se você der uma boa lida no texto do Ian Hickson (pode ir lá ler, eu espero…), vai conseguir ter uma boa noção sobre o assunto. Mas se você é preguiçoso ou não sabe inglês, vou tentar explicar brevemente (e não tão bem quanto o Ian) essa coisa toda de XHTML e HTML.

Compatibilidade entre XHTML e HTML e o porquê dos DOCTYPEs

A primeira coisa que você deve saber é que o Internet Explorer 6 (e versões anteriores) não suporta XHTML. Ponto. Na verdade ele nem chega a suportar o HTML completamente. Seu XHTML funciona bem mesmo sendo enviado como se fosse HTML porque você aprendeu a escrever XHTML cumprindo as regras descritas no Apêndice C da especificação do XHTML 1.0, mesmo que inconscientemente.

O apêndice C define as regras de compatibilidade entre XHTML 1.0 e HTML 4.01. São as regras que você deve seguir para poder enviar seus documentos XHTML como text/html e assegurar que os UAs atuais consigam renderizá-lo a contento.

Outra coisa que você precisa colocar na cabeça e não tirar nunca mais é que o DOCTYPE não define, para o user agent, o tipo de documento que está sendo enviado. Quem define isso é o header Content-Type contido na resposta HTTP enviada pelo seu servidor ao UA.

Isso fica bem claro na seção “Why UAs can’t handle XHTML sent as text/html as XML” do texto do Ian Hickson. Se um documento é enviado como text/html, não há maneira confiável de detectar se seu conteúdo é XML ou apenas mera “old-school tag soup”. Nem pelo doctype, nem pelo namespace declarado no elemento html, nem pela declaração XML (que, aliás, deve ser evitada por colocar o IE em quirks mode, explicado mais a frente), nem por qualquer outra maneira que se possa imaginar.

Então para que serve o doctype? Por quê eu preciso declarar o danado do doctype no início de cada documento que escrevo para a web? Para duas coisas: poder informar a linguagem e versão usadas no documento a uma ferramenta automatizada de verificação de validade (seja o W3C validator ou qualquer outro) e para dizer ao browser qual modo de renderização deve ser usado ao ler seu documento.

Modos de renderização


Devo abrir um parêntese aqui para explicar aos desavisados o que é este modo de renderização. Os browsers modernos (IE 6 incluído) usam um recurso chamado DOCTYPE Switching para decidir como renderizar um dado documento. Se você usa um doctype válido e completo, declarando estar usando qualquer coisa acima de HTML 4.0, os browsers vão renderizar seu documento em um modo chamado strict mode ou standards compliance mode. Neste modo de renderização o browser vai fazer o maior esforço possível para renderizar o documento seguindo as especificações (HTML ou XHTML e CSS 1 e 2). Na ausência de um DOCTYPE, ou na presença de um que seja incompleto, inválido ou que declare uma linguagem mais antiga (como HTML 3.2) o modo usado é o que chamam de quirks mode, onde o browser “emula” a renderização de versões anteriores, que lidavam com as “loucuras” (quirks) dos códigos tag soup tão comuns na web de ontem (e, infelizmente, ainda bem comuns na web de hoje).

Um detalhe sobre o modo de renderização é que, no IE, se houver qualquer coisa antes do doctype — seja uma declaração XML, um comentário, ou mesmo uma linha vazia — ele “chaveia” para quirks mode. Isso é um bug. Alguns desenvolvedores preferem se valer disso para, propositalmente, jogar o IE6 em quirks mode para que ele renderize as páginas da mesma forma que o IE5. Eu prefiro não usar este artifício.

No Opera (versões 7.0 a 7.03), quando uma declaração XML estiver presente e o documento for enviado como text/html, o quirks mode é ativado. Talvez seja um bug também, mas não tenho certeza. A partir da versão 7.1 isso não acontece mais.

Usar ou não usar XHTML. Eis a questão

Bem, voltemos ao ponto central deste texto. XHTML, da forma que é usado hoje, é ou não um passo em direção ao futuro? Os documentos XHTML de hoje garantem compatibilidade futura, com os user agents de amanhã e, mais importante, ganhamos alguma coisa desenvolvendo sites em XHTML hoje, mesmo com o browser líder do mercado não tendo suporte?

Vamos voltar ao texto do Ian Hickson. No texto, ele cita as vantagens do XHTML em relação ao HTML. Basicamente as vantagens se resumem a: poder incluir conteúdo marcado em outros namespaces, como MathML, garantir que os documentos sejam bem-formados e poder processá-los com parsers XML, mais simples que os parsers SGML e os que precisam lidar com tag soup.

Se você não envia seus documentos XHTML com o media type correto (application/xhtml+xml), já fica impossível incluir conteúdo de outros namespaces nos seus documentos. Mas você pode ponderar: quem precisa de MathML hoje em dia? Ok. Mas você costuma validar seus documentos XHTML ou pelo menos verificar se são bem formados? Se não, você já invalida as outras duas vantagens do XHTML. Ou seja, não está garantindo a boa formação do documento e não permite que ele possa ser analisado por parsers XML.

Quando você envia seus documentos XHTML com o media type correto, os user agents que suportam esse media type vão capturar imediatamente qualquer falha de boa formação e mostrar um erro de XML. Mais uma vez você me interrompe e diz: eu não quero que meus sites parem de funcionar por causa de um errinho bobo. E eu te pergunto: então por que você usa XHTML?

Ao responder a esta pergunta, a maioria das pessoas diz que usa XHTML porque é a linguagem do futuro da web, porque assim estão dentro dos padrões e porque o XHTML as “força” a escrever documentos semanticamente corretos e bem estruturados.

Ora, semântica e boa estruturação não dependem da linguagem de marcação usada. Dependem somente do desenvolvedor. Quem disse que não é possível escrever documentos semânticos e bem estruturados em HTML? E quem disse que HTML não faz parte dos padrões web?

A última versão do HTML, a 4.01, em sua “versão” strict, consta ainda como uma recomendação da W3C, portanto faz parte dos padrões web sim.

O grande problema de se usar XHTML hoje sem pensar em validação e boa formação é que se amanhã todos os browsers passarem a suportar XHTML e todos que usam essa linguagem decidirem mudar seu media type para application/xhtml+xml, a grande maioria dos sites exibiriam apenas erros de XML.

Algumas pessoas torcem o nariz ao ver um site desenvolvido em HTML, mesmo sendo 4.01 Strict, mas a verdade é que se você não pode garantir a boa formação e validade dos seus documentos XHTML, HTML 4.01 Strict é a melhor opção. Nada nos impede de escrever documentos HTML seguindo as boas práticas de marcação de conteúdo que o XHTML nos ensinou. Nada impede usarmos tag de fechamento em elementos onde ela é opcional (P e LI, por exemplo) excetuando-se, obviamente os elementos vazios (BR, HR, IMG, LINK e META) e descrever elementos em que as tags de abertura e fechamento são opcionais (HTML, BODY e HEAD), por exemplo.

No futuro, migrar de um HTML 4.01 Strict bem estruturado para XHTML 1.0 Strict (ou 1.1) será tão simples ou até mesmo mais simples que migrar de um XHTML 1.0 mal estruturado, mal formado e inválido.

Conclusão

Como eu já disse no início deste texto, sou a favor do uso do XHTML. Desde que se tome o cuidado de garantir que ele seja, no mínimo, bem formado e não vá “quebrar” quando enviado com o media type correto.

O problema é que para poder garantir que sua marcação seja realmente válida — ou pelo menos bem formada — sempre, sem ter que validar cada página criada com uma ferramenta de validação, é necessário trabalhar com ferramentas apropriadas para lidar com XML. Infelizmente os CMS que temos hoje a nossa disposição pecam nesse aspecto. Sistemas legados então nem se fala. Nesses casos, HTML 4.01 pode ser a escolha certa.

Pensar no futuro é importante. Pensar no presente é mais importante ainda. Use a ferramenta certa para que seus documentos funcionem corretamente hoje e, se quiser que eles continuem funcionando bem amanhã, preste atenção às especificações, tente seguí-las o mais fielmente possível.

Se você usa XHTML pensando no futuro, procure garantir que seus documentos continuem funcionando no futuro. Se não fizer isso, você não está de fato pensando no futuro.

Agora, se você pensa que essa história toda de media type é baboseira e não pretende enviar seus documentos XHTML com o media type correto quando todos os user agents o suportarem, bem, desculpe não ter avisado antes, mas este texto é inútil pra você.

Links Interessantes

Leia também:

33 Comentários sobre “XHTML: pensando no futuro?”

Faça um comentário

Em suma, este Content-Type está correto?

<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />

Usado em páginas XHTML 1.0 Transitional…

Desculpa se escrevi besteira aí em cima, mas este texto deixou claro que, embora eu pensasse o contrário, ainda sou um tremendo ignorante no que diz respeito a XHTML, padrões web etc., hehe.

Abraços, e parabéns pelo ótimo artigo!


Apesar do esforço Bruno, achei que o artigo ficou um pouco confuso do meio para o final.
Mas acredito que o problema sou eu, não li o texto do Ian por não dominar o ingles ainda e alguns termos ai eu desconheço.


Conheço bem a dificuldade de se produzir um texto, ainda mais quando as fontes de pesquisa disponíveis são, praticamente, todas em inglês. Parabéns pelo material produzido!

Boa parte dos desenvolvedores já se demonstram bem preocupados com esta “nova” realidade. Com mais algum tempo os navegadores terão que a suportar a padronização que tanto ouvimos comentar pelos quatro cantos da Internet.

Por algum motivo não estou conseguindo acessar o site do Ian Hickson, mas logo logo deve estar de volta… Ah, pra quem tiver dificuldades com línguas estrangeiras, o google tem um tradutor bem legal: http://www.google.com.br/language_tools?hl=pt-BR


[...] XHTML: pensando no futuro? | BrunoTorres.net [...]


Me desculpem se não concordarem, mas é uma vergonha um país como o Brasil ter que depender de inglês pra sobreviver. Já estamos passando por momentos difíceis nessa transição de tecnologia web e como se fosse pouco, ter que falar inglês é fodaaaaa!!! Um abraço!


mt bom artigo parabens


#7 | Marcelo Alexandre

Eu estava entre aqueles que não compreendiam bem estas diferenças XHTML e HTML, até por falta de tempo em etudar o assunto. Este artigo de fácil entendimento foi esclarecedor.

Obrigado!


Olá Bruno,

Bom artigo. Quando você citou “Infelizmente os CMS que temos hoje a nossa disposição pecam nesse aspecto”, está se referindo ao Plone[1] também? Porque?

[1] http://plone.org/


Hei cara, respondi a galera ae pow! Hehehe!
Como prometi pra tu no MSN eu imprimi o teu artigo e li (na aula de história).
Parabéns cara, aprendi bastante com o texto.

Continue assim!


Brunão,

Seus feeds tão ficando maluquinhos (ou é o meu bloglines que tá). Toda vez que você dá um update na matéria, eu recebo 2 notificações. E quando vou ver o que há de novo, de novo, nada tem.

Pergunta técnica:
Só existe strict e quirks? Não tem um terceiro modo de renderização? E os outros dispositivos, tipo o Opera no Symbian? Usa qual método pra renderizar? Ein? Ein??? rsrsrs

Abraços


#11 | Alexandre Gomes Gaigalas

Não precisa mudar pra HTML4.01, o XHTML1.0 Strict pode ser servido como text/html, segundo as especificações do W3C, somente o 1.1 que DEVE ser servido como application/xhtml+xml.


#12 | Lourenço Rizzotto

Exelente artigo, principalmente pela interpretação de um texto importante em inglês, porque muitos não sabem inglês


Sinceramente, não li o texto todo mas parece ser interessante mas coloco uma questão: você acha de extrema importância a validação do XHTML ?

Acho que isso vale uma discussão e longa.
Abs.


[...] Google contrata Ian Hickson. Ex-opera, editor do HTML5 (ou Web Applications 1.0) e o cara que primeiro abriu os olhos do mundo para os problemas do XHTML feito “de qualquer jeito”. [...]


#15 | Lorn

Muito bom, e “original” o texto parabéns!
Nunca tinha lido/visto/ouvido falar dessas partes obscuras de XHTML/HTML


Pois é, eu ainda acho que esta discussão vai longe, mas penso que, se a ideia é seguir padrões (webstandards, semantica, acessibilidade, etc..) o correto mesmo é usar HTML 4.01 strict (VALIDADO). Num é?


#17 | Micox

O comentário do Alexandre #10 é válido? Se for, a solução (no momento) é essa…


legal este artigo, como trabalho com ColdFusion utilizo html 4.01 transitional ou dependendo do site XHTML 1.0 Transitional. pergunto qual a diferença de se usar transitional ou strict se ambos validam?

até mais


@Jefferson #17

Como diz a palavra, trata-se de um documento em transição para o strict. Não sei se há mais diferenças, mas as que sei é que no transitional vc pode usar iFrames e Target, o que não é permitido no XHTML ou HTML strict.

T+


Complementando o comentário

“Usar um DTD Strict, seja em HTML 4.01 Strict ou XHTML 1.0 Strict, é mais importante para a qualidade da web do futuro do que se há ou não um X na frente do nome. O DTD Strict promove a separação da estrutura e da apresentação, o que torna o site mais fácil de ser mantido.”

Então, transfere todo o aspecto visual do site para o CSS.

Retirado daqui: http://24ways.org/advent/transitional-vs-strict-markup


#21 | HCD

cara eu acho que pagina XML ainda nao compensa porque a versao do IE que vem com o WinXP service pack 1 le com dificuldade paginas em XML (ex: 1 pag em HTML carrega em 10seg a pag em XML carrega em no minimo 30seg por causa do script do retro IE)
tambem tem o problema para o Webmaster que nao é todo tipo de servidor que suporta XHTML(XML) entre outros php, MySQL, etc.
Talvez daqui ums 2 ou 3 anos sendo a tecnologia mais avancada fica + facil de incorpora totalmente o XML nas nossas paginas
por emquanto o php esta sendo mais usado( e bem mais facil faze qualquer coisa eu vi um cara que consegui faze até animacao “estilo Flash” com php) mas bom post continua assim e por enquanto vamos ir adotando o XML em 10 ou 20% das paginas para “acordar a microsoft” a incorporar scripts avancados para usuarios leigos (sendo esse o problema principal na internet)


Adorei o artigo. Esse assunto é de vital importância para o pessoal que está começando a trabalhar com XHTML.

Antes do artigo do Bruno, no Tableless eu tinha lido um também. Ambos ótimos!

Poxa não concordo com o comentário de um amigo lá em cima. Sempre achei que o Bruno é um ótimo escritor, bastante didático. Futuramente um best-seller!!! xD


Muito bom seu artigo. Principalmente pra mim que não domino completamente o Inglês.
Graças a caras como você que os padrões web estão sendo implementados(de maneira vagarosa, mas estão) no Brasil.
Eu estava justamente tentando servir o conteúdo do meu blog em application/xhtml+xml, mesmo achando que isso não era tão importante assim, mas depois que li o artigo estou tentando corrigir os pequenos problemas e trabaçhar de maneira correta (XHTML1.1 + application/xhtml+xml).


quero materias sobre xhtml enviadas pro meu e mail.por favor…

ah..e parabéns pelo site..


Viajou na maionese total… errado é errado, certo é certo em qualquer coisa. “E SE…” é amigo do cão. XHTML Rulizzz


[...] módulos padrão, ou seja: tudo que está disponível no HTML. Perda de tempo. Como já disseram o Bruno e o Lachlan Hunt: Esquece o XHTML e usa [...]


[...] da discussão entre o uso de HTML e XHTML eu prefiro XHTML, concordo que o que usamos é apenas HTML, porém mantenho meu XHTML válido para [...]


[...] por alguns. Isso não é motivo para abandonar o XHTML e voltar a escrever HTML, somente para algumas pessoas as quais eu respeito a opinião. É interessante continuar escrevendo e validar seu [...]


[...] se fala muito do MIME dos documentos e do problema que alguns navegadores tem ao tratar o MIME do XHTML, que deve ser application/xhtml. Além do MIME existe um característica muito mais importante: [...]


[...] desse post, o anúncio no blog oficial só cobre suporte basicamente a HTML e CSS. Nada de mimetypes pra XHTML por [...]


#31 | Zeca Ferreira

Eis o comentário de um estudante nas primeiras letras:
Comecei a estudar PHP recentemente e venho experimentando meus scripts em servidor local. Porém, quis evoluir e pesquisei na internet qual a melhor interação; PHP+HTML ou XML ou XHTML ou o quê?
Por tudo que tenho lido, desde a criação do GML pela IBM no fim da década de 60, depois a chegada da SGML dada a complexidade da primeira, evoluindo para HTML; XML e por fim XHTML, cheguei a conclusão coincidente em parte com a sua: ficarei quietinho esperando o futuro. Enquanto isso, sigo em frente com PHP+HTML+CSS.
Gostei da sua explanação.


eu estou precisando de uma historia chamada O escritor do futuro mais eu e meu grupo não estamos consiguindu fazer…você pode dar alguma dica?
obrigada

Julia Gabriela


[...] – XHTML Maujor XHTML, Pensando no Futuro Implementar XHTML/CSS é [...]


«

»

Deixe seu comentário


Veja as estatísticas