Negociação de conteúdo
Embora o XHTML devesse ser servido com o MIME application/xhtml-xml, nem todos os browsers estão aptos a entender este MIME Type. Neste contexto, técnicas de negociação de conteúdo - ou content negotiation em inglês - podem ser utilizadas para enviar ao agente de usuário diferentes MIME Types, de acordo com o que cada um deles aceita. A esmagadora maioria utiliza o MIME Type text/html para servir documentos XHTML, embora não seja a maneira correta. De acordo com a nota não-normativa da W3C, XHTML Media Types,
‘application/xhtml+xml’ SHOULD be used for serving XHTML documents to XHTML user agents. Authors who wish to support both XHTML and HTML user agents MAY utilize content negotiation by serving HTML documents as ‘text/html’ and XHTML documents as ‘application/xhtml+xml’.
Ou seja, o autor que deseja dar suporte tanto para user agents XHTML quanto para HTML, deve utilizar negociação de conteúdo para servir documentos com o MIME Type adequado a situação. Um simples script em PHP resolve o problema:
<?php
if (stristr($_SERVER[HTTP_ACCEPT], “application/xhtml+xml”) ||
stristr($_SERVER["HTTP_USER_AGENT"], “W3C Validator”)) {
header(”Content-Type: application/xhtml+xml; charset=iso-8859-1″);
header(”Vary: Accept”);
echo(”<?xml version=\”1.0\” encoding=\”iso-8859-1\” ?>\n”);
} else {
header(”Content-Type: text/html; charset=iso-8859-1″);
header(”Vary: Accept”);
}
?>
O script verifica se o agente de usuário suporta o application/xhtml+xml, ou se o agente de usuário é o W3C Validator. Caso um deles seja verdadeiro, o documento é servido como application/xhtml+xml, caso contrário, ele é servido como text/html. Além disso, se um deles for verdadeiro, o documento recebe a declaração XML.
O cabeçalho Vary: Accept é enviado para que agentes intermediários de cache, como proxy servers, saibam que o MIME Type varia, de acordo com o suporte que o agente de usuário oferece.
O benefício disso tudo é que em browsers como Firefox e Mozilla, que suportam o MIME Type application/xhtml+xml, o código XHTML é tratado como XML no que se refere a intolerância a erros. Ou seja, se um documento XHTML, com MIME Type application/xhtml+xml possuir erros de sintaxe, estes browsers não irão mostrá-lo, assim como acontece com o XML inválido. Somente serão exibidos os documentos assim que os erros de sintaxe estiverem corrigidos. Assim, nem o W3C Validator é necessário para apontar erros.


Social Networking