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):
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):
Eine Struktur wie hier (3. Entwurf)
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
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>
Code:
<pair key="title"> <value lang="de" val="Datei" /> <value lang="en" val="File" /> </pair>
Code:
<lang id="de"> <pair key="title" val="Datei" /> </lang> <lang id="en"> <pair key="title" val="File" /> </lang>
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