Dann kann man z.B. das lang-Attribut nicht verwenden,
was IIRC geändert wurde.
Ich hatte extra nochmal im aktuellen, ein paar Tage alten XHTML M12n nachgesehen - aber kein Modul gefunden, was lang definiert. Die I18n Attribute Collection definiert nur xml:lang.
Der W3C-Validator gibt bei @lang grünes Licht.
Ich halte das für einen Fehler im Validator. Er nutzt eine DTD aus irgendeinem Working Draft, aber nicht die aus dem Standard.
http://validator.w3.org/#validate_by_input
Eingeben & validieren:
<!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">
<head><title/></head>
<body lang="de"/>
</html>
-> Valide (false positive)
Hingegen:
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/2001/REC-xhtml11-20010531/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title/></head>
<body lang="de"/>
</html>
-> Nicht valide (korrekt m.W.)
Das heißt, den Public Identifier weglassen, stattdessen die direkte URI der DTD angeben. Der Validator lädt die sich herunter, anstatt die DTD zu verwenden, die er lokal unter dem Public Identifier gespeichert hat. Wenn er sich also die richtige DTD aus dem XHTML-1.1-Standard anschaut, welche die aktuellen DTD-Module von XHTML M12n 1.1 referenziert, dann ist lang nicht erlaubt.
Der Validator verwendet eine XHTML-1.1-DTD (Link zum Quellcode-Repository), die laut README aus post-WD-xhtml11-20070216 stammt, »retrieved from http://www.w3.org/MarkUp/DTD/ on 2009-10-23«.
Daraus:
119<!-- adding the lang attribute into the I18N collection -->
120
121<!ENTITY % xhtml-datatypes.module "INCLUDE" >
122<![%xhtml-datatypes.module;[
123<!ENTITY % xhtml-datatypes.mod
124 PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
125 "xhtml-datatypes-1.mod" >
126%xhtml-datatypes.mod;]]>
127
128<!ENTITY % lang.attrib
129 "xml:lang %LanguageCode.datatype; #IMPLIED
130 lang %LanguageCode.datatype; #IMPLIED"
131>
Klar, *diese* DTD erlaubt lang, weil sie den Entity lang.attrib neu definiert. Der ist in purem XHTML M12n so definiert:
<!ENTITY % lang.attrib
"xml:lang %LanguageCode.datatype; #IMPLIED"
http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod
Das von dir verlinkte, aufgehobene Dokument http://www.w3.org/TR/2009/PER-xhtml11-20090507/xhtml11_dtd.html überschreibt lang.attrib ebenfalls zugunsten von lang (siehe ganz unten).
Vielleicht plante das W3C mal, lang wieder zuzulassen, geändert hat sich allerdings nur die DTD des Validators, nicht die einer Recommendation.
Dass XHTML 1.1 qua Standard als XML deklariert und verarbeitet werden sollte,
ist in der Second Edition behoben.
Danke für den Hinweis.
(Wieso verweist man eigentlich aufs Archiv, wenn da offenbar obsolete Infos drinstehen?)
Mathias