Chciałbym poznać Wasze zdanie dt. negocjacji zawartości i co za tym idzie stosowania różnych standardów. Dla przybliżenia tematu stworzyłem poniższy kod:
index.html (XHTML 1.0 Strict)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
index.xhtml (XHTML 1.1)
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="css/style.css"?>
<!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="pl">
i na koniec plik odpowiedzialny za wyświetlenie odpowiedniej wersji:
<?php
// Default parse HTML
$xhtml = false;
// XHTML compatible user agents not sending the "Accept" header
(
'w3c_validator',
'webkit',
'wdg_sitevalidator',
'w3c-checklink',
'web-sniffer',
'feedvalidator'
);
// In case of empty headers
$_SERVER['HTTP_ACCEPT'] = (isset($_SERVER['HTTP_ACCEPT'])) ?
$_SERVER['HTTP_ACCEPT'] : ''; $_SERVER['HTTP_USER_AGENT'] = (isset($_SERVER['HTTP_USER_AGENT'])) ?
$_SERVER['HTTP_USER_AGENT'] : ''; // Checking the user agent
foreach ($useragents as $useragent) {
if (false !== stripos($_SERVER['HTTP_USER_AGENT'], $useragent)) {
$xhtml = true;
break;
}
}
// Checking the "Accept" header
if (false === $xhtml) {
if (false !== stripos($_SERVER['HTTP_ACCEPT'] , 'application/xhtml+xml')) {
$xhtml = true;
}
}
// Output
header('Content-Type: ' . ((true === $xhtml) ?
'application/xhtml+xml' : 'text/html') . '; charset="utf-8"'); readfile('index.' . ((true === $xhtml) ?
'x' : '') . 'html'); ?>
Co według Was przemawia za stosowaniem tego typu mechanizmów, a co przeciw? Czy macie jakieś uwagi lub własne pomysły do powyższego kodu?