molily: keine Sprache angeben

Beitrag lesen

Hallo,

Gebe ich das in einer XHTML 1.0-Datei an, meckert der Valiadator: syntax of attribute value does not conform to declared value.

lang- und xml:lang-Attribut sind "NMTOKEN". Was genau heißt das?

xml:lang ist hier normativ definiert:
http://www.w3.org/TR/REC-xml/#sec-lang-tag
Dort steht: »The values of the attribute are language identifiers as defined by [IETF RFC 3066], Tags for the Identification of Languages, or its successor; in addition, the empty string MAY be specified.«

Von NMTOKEN ist nur in der XHTML-DTD die Rede. Das ist ein Fehler in der XHTML-DTD.
Aber DTDs sind bekanntlich eh scheiße. ;) Dies ist ein weiteres Beispiel dafür, dass Standardkonformität nichts mit DTD-Validität zu tun hat. Validiere halt gegen das (vorläufige) XML Schema von XHTML, dort ist xml:lang korrekt vom Typ CDATA.
(Naja, zur Zeit von XHTML 1.0 gab es nur XML 1.0 zweite Ausgabe, dort ist xml:lang="" nicht explizit erlaubt, also strenggenommen verboten.)

Ich werd aus [XSD:NMTOKEN] nicht so recht schlau.

Äh, wie kommst du jetzt auf XML Schema? Du validierst doch nicht gegen ein Schema. Und im Schema zu XHTML ist nicht von NMTOKEN die Rede. Und XML bezieht sich genausowenig wie die XHTML-DTD auf die NMTOKEN-Definition in XML Schema.

Darf der Wert von xml:lang kein Leerstring sein, wie im Tutorial angegeben?

Ja, gemäß XML-Spezifikation, dritte Ausgabe.
Nein, gemäß XML-Spezifikation, zweite Ausgabe.
Nein, gemäß XHTML-Spezifikation, aufbauend auf der XML-Spezifikation, dritte Ausgabe.

Mathias