xml:lang

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Da XML-Dokumente in Unicode geschrieben sind, eignet sich XML ganz hervorragend für mehrsprachige Dokumente; möglich ist z. B. ein arabischer Kommentar in einem griechischen Text (etwas, was mit einem anderen Zeichensatz nicht möglich ist). In solchen mehrsprachigen Dokumenten ist es günstig festzustellen, in welcher Sprache ein bestimmter Textabschnitt geschrieben wurde. Beispielsweise sollte ein Rechtschreibkontrollprogramm, das nur Englisch kennt, nicht versuchen, ein französisches Zitat zu überprüfen.

Jedes XML-Element könnte ein xml:lang-Attribut besitzen, das die Sprache festlegt, in der der Inhalt dieses Elements verfasst wurde. Die vorangegangene Maxime sieht zum Beispiel so aus:

<maxim xml:lang="el">
   &#x3C3;&#x3CC;&#3C6;&#3BF;&#3C2; &#x3AD;&#3B1;&#3C5;&#3C4;&#x3CC;&#x3BD;
   &#x3B3;&#x3B9;&#x3B3;&#x3BD;&#X3CE;&#x3C3;&#x3BA;&#x3B5;&#x3B9;
</maxim>

Dies kennzeichnet sie als Griechisch. Der verwendete Code, el, leitet sich vom griechischen Wort für »Griechisch«, ελληνικα, ab.

Sprachcodes

Der Wert des Sprachattributs xml:lang sollte einer der zweibuchstabigen Sprachcodes sein, die in ISO 639.2, Codes for the Representation of Names of Languages definiert wurden, falls für die fragliche Sprache ein solcher Code existiert.

Für Sprachen, die nicht in ISO-639 aufgeführt werden, können Sie einen Sprach-Identifier verwenden, der bei der IANA registriert ist; momentan gibt es ungefähr 20 dieser Identifier, einschließlich i-navajo, i-klingon und i-lux. Alle Identifier beginnen mit i-. Zum Beispiel:

<maxim xml:lang="i-klingon">Heghlu'meH QaQ jajvam</maxim>

Falls die Sprache, die Sie benötigen, noch nicht in einer der beiden Listen geführt wird, können Sie ein eigenes Sprach-Tag erzeugen. Solange es mit den Präfixen x- oder X- beginnt, kennzeichnet es einen benutzerdefinierten Sprachcode. Zum Beispiel ist der Titel dieses Journals in J. R. R. Tolkiens fiktiver Sprache Quenya geschrieben:

 

<journal xml:lang="x-quenya">Tyalië Tyelelliéva</journal>

Subcodes

Manchmal reicht es nicht, die Sprache zu kennen, Sie müssen auch die Region kennen, in der die Sprache gesprochen wird. Zum Beispiel gibt es in Frankreich, Quebec, Belgien und der Schweiz leichte Unterschiede in Vokabular, Buchstabierung und Aussprache der französischen Sprache. Obwohl sie mit einem identischen ideographischen Zeichensatz geschrieben werden, sind Mandarin und Kantonesisch völlig unterschiedliche, untereinander unverständliche Dialekte des Chinesischen. Über die Vereinigten Staaten und Großbritannien wird scherzhaft gesagt: »zwei Länder, die durch eine gemeinsame Sprache getrennt werden«.

Um mit diesen Unterschieden umzugehen, können dem Sprachcode beliebig viele Subcodes folgen, die die Sprache näher kennzeichnen. Bindestriche trennen den Sprachcode vom Subcode sowie die Subcodes untereinander. Wenn der Sprachcode ein Code nach ISO-639 ist, sollte der erste Subcode ein zweibuchstabiger Ländercode sein, der durch ISO-3166, Codes for the Representation of Names of Countries, definiert wird. Dieses xml:lang-Attribut kennzeichnet kanadisches Französisch:

<p xml:lang="fr-CA">Marie vient pour le fin de semaine.</p>

Der Sprachcode wird üblicherweise mit kleinen Buchstaben, der Ländercode dagegen mit großen Buchstaben geschrieben. Das ist jedoch nur eine Vereinbarung, keine Notwendigkeit.

ATTLIST-Deklarationen von xml:lang

Obwohl die XML 1.0-Spezifikation das xml:lang-Attribut definiert, müssen Sie es immer noch in den DTDs gültiger Dokumente deklarieren. So deklariert zum Beispiel diese Information das Element maxim, das bereits mehrere Male in diesem Abschnitt zum Einsatz kam:

<!ELEMENT maxim (#PCDATA)>
<!ATTLIST maxim xml:lang NMTOKEN #IMPLIED>

Wir haben hier den Typ NMTOKEN verwendet, da alle zulässigen Sprachcodes wohlgeformte XML-Namenstoken sind.

Sie können das Attribut xml:lang so deklarieren, wie es Ihnen am liebsten ist. Falls Sie zum Beispiel wollen, dass es im Element maxim immer vorhanden ist, könnten Sie es als #REQUIRED deklarieren:

 

<!ATTLIST maxim xml:lang NMTOKEN #REQUIRED>

Oder falls Sie in Ihren Dokumenten nur französischen und englischen Text erlauben wollen, könnten Sie es als Aufzählungstyp deklarieren, wobei Englisch voreingestellt ist:

 

<!ATTLIST maxim xml:lang (en | fr) 'en'>

Der Parser überprüft nicht, ob der Wert, den Sie dem Attribut geben, den hier beschriebenen Regeln folgt, es sei denn, Sie benutzen einen Aufzählungstyp. Sie sind selbst dafür verantwortlich, dass die korrekten Sprachcodes und Subcodes verwendet werden.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de