Una dichiarazione XML è valida e valida nella serializzazione XHTML di HTML5. Il seguente documento piuttosto minimale convalida:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title></head>
<body></body>
</html>
Tuttavia, questo vale solo per XHTML serializzazione (sintassi XHTML) di HTML5. Nella serializzazione HTML, non è consentito. Se si scrive il documento di cui sopra in un file e memorizzarli in un server che invierà con Content-Type: text/html
(che normalmente succede se il nome del file termina con “.html”), allora si ottiene un messaggio di errore:
Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML.
(XML processing instructions are not supported in HTML.)
Qui "HTML" significa solo serializzazione HTML.
I browser non si preoccupano di una dichiarazione XML in entrambe le sintassi. Nella sintassi HTML, viene semplicemente ignorato, come errore di sintassi recuperabile. Nella sintassi XHTML, non importa, ad eccezione della parte encoding
.
Sebbene la specifica XML 1.0 raccomandi (ma non richieda) un XML declaration, sarebbe in pratica materia (a parte il significato di encoding
) solo per il software che è in grado di elaborare diverse versioni di XML. I browser non lo sono. E oltre a XML 1.0, c'è solo XML 1.1, che non è molto usato. Inoltre, HTML5 è definito in modo che la versione XML utilizzata nella sintassi XHTML sia XML 1.0.
La parte encoding
può essere importante, ma utf-8
è l'impostazione predefinita per XML. Se si utilizza un'altra codifica per qualche motivo, una dichiarazione XML può essere utile per prevenire eventuali conflitti. HTML5 CR dice questo in esso discussion of encodings: "In XHTML, la dichiarazione XML deve essere utilizzata per le informazioni di codifica dei caratteri inline, se necessario." Un tag meta
non può davvero aiutare in XHTML quando viene servito con un tipo di contenuto XML, poiché la codifica è già stata deciso (di default su UTF-8 o in altro modo) quando il tag è visto.
Per la sintassi HTML, il tag <meta charset=...>
possono essere utilizzato, ma non è necessario per la validità, e la codifica può essere specificato nelle intestazioni HTTP (che sovrascrivono qualsiasi meta
tag). L'utilizzo di un tag meta
può tuttavia essere utile, dal momento che una pagina potrebbe essere salvata localmente e quindi non ci saranno intestazioni HTTP disponibili al momento dell'apertura.