Mudei meu mime-type

Sim, agora meu site está sendo servido como, application/xhtml+xml. Pelo menos enquanto eu tiver interesse que seja assim. A principal razão que eu criei o meu site foi para ter um espaço onde eu possa realizar todos os testes que me interessa no momento. Pensando assim me dou no direito de implementar coisas aqui, por menos práticas que possam ser, puramente por razões conceituais, principalmente considerando que minhas pesquisas estão relacionadas com os padrões web.

Comercialmente a realidade mostra que é inviável, desnecessário e desaconselhável servir XHTML como XML nos sites dos seus clientes, mesmo que “pensando no futuro”, que se mostra ainda incerto. A não ser que você tenha um aplicativo todo baseado em XML e com propósitos específicos, servir XHTML como mime-type de xhtml+xml ainda não é uma boa idéia.

Continuo defendendo a opinião de que você pode sim continuar enviando o seu XHTML 1.0 com o mime-type text/html (conforme as inúmeras referências e razões que eu citei antes) sem problemas, assim como eu escrevi em XHTML Media Types.

Manter um site sendo enviado com application/xhtml+xml dá muito trabalho, exige muita paciência, principalmente considerando que erros de sintaxe não podem nunca existir. Caso contrário seu browser moderno sequer exibirá algo, apenas um parser error na tela. Para o IE que não interpreta o mime-type application/xhtml+xml, e nem na nova versão 7 será capaz de interpretar, é servido o text/html normalmente. Você pode conferir a diferença olhando no código fonte dos dois browsers.

Eu fiz uma revisão na maioria dos posts e talvez algum artigo bem antigo você não consiga ver se estiver usando o Mozilla ou o Opera. Se você enquanto navega encontrar alguma página que não consiga ver e quiser gentilmente me enviar a URL pra eu poder corrigir, serei muito grato.

Alguns fatos sobre XHTML enviado como application/xhtml+xml:

O HTML 4 ainda é uma recomendação da W3C. Eles não recomendam (ainda) XHTML no lugar do HTML e uma recomendação não invalida a outra.

O namespace xmlns deve ser declarado (mesmo que o validador não acuse isto como um erro)

Se quiser que seu site seja exibido no Internet Explorer você precisa criar uma negociação de conteúdo para servir text/html para o IE.

Os documentos devem ser XML “bem formatados” (o que é diferente de simples validação). Como eu já disse, que validação não significa nada,

e no caso de servir com o mime-type xhtml+xml, você não pode ter erros de sintaxe e, sim, seu site tem que ser 100% válidado e não necessariamente seu site precisa ser 100% validado!

É altamente recomendado declarar o character encoding de XML (Também conhecido como prolog de XML) – <?xml version="1.0" encoding="iso-8859-1"?>. O macete é servir este prolog somente para os user agents que vão ser servidos com xhtml+xml, e para o IE você esconde para não colocar seu site em modo de Quirks Mode.

Algumas coisinhas pequenas mudam no CSS (mais detalhes no futuro).

Leia:

  • Alexandre Gomes Gaig

    Não sei se foi pelo fato das propagandas não terem aparecido, mas aqui onde trabalho, que o computador é bem lento, houve uma melhoria considerável de performance no layout. Uso o Firefox 0.93 aqui, ele carregou a página como application/xhtml+xml mas não seguiu corretamente a especificação do W3C.

    O Navegador deveria parar a renderização e avisar qualquer erro. Segundo a especificação do XHTML 1.0, elementos script e style imbutidos no HTML, devem ser incluídos em seções PCDATA (http://www.w3.org/TR/xhtml1/#h-4.8). Notei que há um elemento script imbutido na sua página, fora de uma seção PCDATA, o que deveria gerar um erro. Possivelmente esse Firefox ainda está processando o documento como uma tag-soup. Vou testar com Firefox 1.5 em casa.

    Bela iniciativa pioneira de servir documentos da maneira correta, parabéns! Mas como você sabe, a web hoje em dia é baseada em copiar/colar. Você deveria deixar uma nota comentada no começo do código, com o endereço desse post, explicando como a página funciona. Como Ian Hickson já mencionou, XHTML é pra programadores avançados, não queremos ver os iniciantes por aí cometendo erros baseados em exemplos nossos!

  • Pingback: O mime-type do Japs agora é application/xhtml+xml » Japs()

  • Dario

    Oi Henrique,

    Sempre leio seus posts através do Bloglines, mas hoje resolvi vir até o seu blog.

    Quando vi o layout, gostei muito. Estou escrevendo para te parabenizar.

    Mas, como nem tudo é perfeito, acabei vendo um erro na renderização no Firefox. A crítica é construtiva, apenas para que o que é bom fique melhor ainda.

    Dê uma olhada na imagem http://i1.tinypic.com/sg6exi.gif e você vai entender.

    Abraços e parabéns.

    Dario

  • Marcelo

    Tá, mas qual a vantagem?????

  • Pedro Rogério

    O Dario tem razão, acontece só no Firefox, no IE tá normal.

  • http://brunotorres.net Bruno Torres

    Só um detalhe, pra poder enviar como XML, o código não precisa ser válido, basta ser bem-formado.

    Pode ter ids duplicados, elementos que não existem no doctype, etc, que vai funcionar normalmente.

  • Marcelo

    Alguem pode me dizer qual a vantagem???? ou diferenças??

  • Alexandre Gomes Gaig

    Marcelo, XHTML é uma revisão do HTML normal em XML. O "X" no nome indica uma nova palavra no acrônimo: "extensible" (Extensível).

    Isso permite que você "extenda" o XHTML, incluindo xml (propriamente declarado) nele. Diversas tecnologias do W3C usam esse recurso, como o MathML.

    Servindo o XHTML como text/html, os navegadores o interpretam como um HTML normal, não extensível, e renderizam-no como um Tag-Soup.

    Servir o XHTML como application/xhtml+xml além de melhorar a performance da renderização (ele não tenta corrigir inconsistências) tem essa vantagem da extensibilidade.

    Para mais informações, procure por "Modularization of XHTML". =)

  • Pingback: Declarando encodings em XHTML » Revolução Etc()

  • Pingback: Coffee Break: application/xhtml+xml » Angeruzzi.com()

  • Pingback: RobotReplay, testes de usabilidade com usuários reais e de graça! » Revolução Etc - Web Standards em uma casca de noz!()

  • Pingback: Fluxograma de navegação do Revolução Etc » Revolução Etc()