Announcement

Collapse
No announcement yet.

Design eines multilingualen XML-Dialekts

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Design eines multilingualen XML-Dialekts

    Hallo,

    ich möchte eine XML-Sprache bzw. einen XML-Dialekt formulieren, welche/welcher eine multilinguale Datenstruktur beschreibt. Konkret heißt das: Ich möchte pro "Key" mehrere "Values" ablegen, die mit einem ISO-Sprachcode (ISO 639-1:2002, zwei Buchstaben) gekennzeichnet sind.

    Angenommen der Key lautet "title", dann soll es mehrere Werte geben, z. B. für die Sprache "de" "Datei", für "en" "File" etc.

    Ich habe mir überlegt, die Sprachcodes als XML-Namespaces zu repräsentieren, also z. B. xmlns:de="www.example.com/lang/de" und xmlns:en="www.example.com/lang/en". Benutzer sollen hier weitere Sprachen anlegen können.

    Ein Beispiel (1. Entwurf):
    Code:
    <?xml version="1.0">
    <settings xmlns="www.example.com/ns" xmlns:de="..." xmlns:en="...">
      <langs>
        <lang priority="1" id="de" />
        <lang priority="2" id="en" />
      </langs>
      <pairs>
        <pair key="title" de:value="Datei" en:value="File" />
      </pairs>
    </settings>
    Das Problem ist, dass ich gegen DRY verstoße, weil ich den Identifier für den Namespace einmal in settings und erneut in lang aufführe, sowie immer, wenn ich ein pair definiere. Außerdem beschleicht mich das Gefühl, dass ich hier Namespaces missbrauche. Allerdings möchte ich nicht so umschweifende Dinge tun wie hier (2. Entwurf):
    Code:
    <pair key="title">
      <value lang="de" val="Datei" />
      <value lang="en" val="File" />
    </pair>
    Eine Struktur wie hier (3. Entwurf)
    Code:
    <lang id="de">
      <pair key="title" val="Datei" />
    </lang>
    <lang id="en">
      <pair key="title" val="File" />
    </lang>
    würde allerdings die Wiederholung vom Key voraussetzen, was ein größerer Overhead wäre, als einfach die zwei Buchstaben von der Sprache zu wiederholen.

    Außerdem könnte beim 1. Entwurf bei Tippfehlern in der Sprachbezeichnung schon der Parser meckern, wenn der Namespace nicht definiert ist.

    Ist es möglich, aus dem 1. Entwurf die Designfehler, die ich vermute, zu beseitigen, oder gibt es einen besseren Ansatz?

    In der Hoffnung, dass hier jemand durchblickt,

    Lars
    Zuletzt editiert von jfreak; 11.07.2008, 12:25. Reason: +Frage
Working...
X