Usei o script acresentando alguns outros comandos simples de PHP para escrever o código conforme o documento seja servido.
Para constatar o resultado do script ao servir o documento e escrever o código, visualize o código fonte desta página do meu site em um navegador com suporte para XML (Firefox por exemplo) e em outro sem suporte (Internet Explorer :-( por exemplo) e compare os códigos fonte desde o início do documento até a seção HEAD .


Introdução



Usei o script acresentando alguns outros comandos simples de PHP para escrever o código conforme o documento seja servido.
Para constatar o resultado do script ao servir o documento e escrever o código, visualize o código fonte desta página do meu site em um navegador com suporte para XML (Firefox por exemplo) e em outro sem suporte (Internet Explorer :-( por exemplo) e compare os códigos fonte desde o início do documento até a seção HEAD .

O template do site

A título de ilustração considere um template como o abaixo mostrado:

Código:

<? include('/includes/doctype.inc'); ?>
<head>
<title>Page Title</title>
<? include('/includes/metastyle.inc'); ?>
</head>
<body id="index">

................
Os scripts

Código:

doctype.inc
Início do script de Mathias
<?
$mime = 'text/html';
if(strstr($_SERVER['HTTP_USER_AGENT'],
'W3C_Validator') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'WDG_SiteValidator') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'W3C-checklink') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'Web-Sniffer') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'FeedValidator') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'Poodle predictor') ||
strstr($_SERVER['HTTP_USER_AGENT'],
'Leknor.com gzip tester')) {
$mime = 'application/xhtml+xml';
} else {
if(stristr($_SERVER['HTTP_ACCEPT'],
'application/xhtml+xml')) {
if(preg_match("/application\/xhtml\+xml;
q=([01]|0\.\d{1,3}|1\.0)
/i", $_SERVER['HTTP_ACCEPT'], $matches))
{$xhtml_q = $matches[1];
if(preg_match("/text\/html;
q=q=([01]|0\.\d{1,3}|1\.0)/i",
$_SERVER['HTTP_ACCEPT'], $matches))
{$html_q = $matches[1];
if((float)$xhtml_q >= (float)$html_q) {
$mime = 'application/xhtml+xml';
}
}
} else {
$mime = 'application/xhtml+xml';
}
}
}
header('Content-Type: ' . $mime . ';charset=utf-8');
header('Vary: Accept');
// Fim do script de Mathias

// Escrevendo o prólogo XML
//e os links para as folhas de estilos quando
//o documento for servido como uma aplicação  XML
if ('application/xhtml+xml' == $mime)
      {
echo '<?xml version="1.0" encoding="utf-8"?>'."\n";
echo '<?xml-stylesheet type="text/css"
href="/estilos/main.css"
media="screen"?>'."\n";
echo '<?xml-stylesheet type="text/css"
href="/estilos/print.css"
media="print"?>'."\n";
echo '<?xml-stylesheet type="text/css"
href="/estilos/handheld.css"
media="handheld"?>'."\n";
      }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="pt-br">


Código:

metastyle.inc
<meta name="keywords" content=" " />
<meta name="description" content=" " />
<meta name="author" content="Mauricio Samy Silva" />
<meta.......
// Escrevendo meta tag's.
//Escrevendo os links para as folhas de estilos quando
//o documento for servido como text/html
<?
if ( 'application/xhtml+xml' == $mime)
      {
echo '<meta http-equiv="Content-Type"
content="application/xhtml+xml;
charset=utf-8" />'."\n";
      }else{
echo '<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />'."\n";
echo '<style type="text/css" media="screen">'."\n";
echo "@import url("/estilos/main.css");'."\n";
echo '</style>'."\n";
echo '<link rel="stylesheet" type="text/css"
media="print" href="/estilos/print.css" />'."\n";
echo '<link rel="stylesheet" type="text/css"
media="handheld" href="/estilos/handheld.css" />'."\n";
      }
?>


Créditos: Maujor e Eu ^^