Zahlenwerte in
XML (Decimalseparator)
Hallo,
also ich bin mittlerweile ziemlich genervt von folgendem Problem. Dies sei evtl. auch als Warnung an Kollegen gemeint, die evtl. in die selbe Falle laufen.
Ich erstelle für die Verarbeitung von
XML-Daten ein Schema und vergebe dort entsprechende Datentypen für die einzelnen Elemente.
Da nach
W3C-Spezifikation Dezimalzahlen nur mittels Punkt als Trennzeichen angegeben werden dürfen, muß der Wert 1,34 als "1.34 angegeben werden. Sonst meckert eine Validierung gegen das Schema.
Aber jetzt kommt der dicke Hund. Wenn man nun mittels
XML-Dokument oder die
XML-Bindung auf ein
XML-Dokument zugreifen möchte, dabei im System jedoch z.B. ein "," eingestellt ist (so wie im deutschen Schema eben), dann verwendet der Parser dieses Komma als Trennzeichen und wertet "1.34" als 134. Der Parser scheint sich also immer den Dezimal-Trenner aus den Gebietsschema-Einstellungen zu nehmen.
D.h., es wird kein Fehler geworfen, es wird halt eine völlig fasche Zahl zurückgeliefert.
Das Umbiegen der Gebietseinstellungen ist sicher keine gute Idee. Man benötigt also einen Weg, wie man dem Parser mitteilen kann, dass er ein "." als Dezimaltrenner benutzen soll.
Das einfachste wäre ja evtl. ein Processing-Anweisung oder irgendein Wert im
XML-Dokument selbst. Nur habe ich da noch nichts finden können.
Ich habe lediglich in xsl das "xsl:decimal-format"-Konstrukt gefunden, aber das kann mir ja nicht wirklich weiterhelfen. Man abgesehen davon, dass ich nicht erst eine Transformation durchführen will.
Im Netzt habe ich nun schon viele Stunden gesucht und auch andere Beschreibungen des Problems gefunden. Jedoch war nie eine brauchbare (elegante) Lösung des Problems zu finden.
Nun dachte ich mir, dass Delphi-Nutzer (
MSXML+Deutsches Gebietsschema) schließlich zur "Risikogruppe" für dieses Problem gehören müßten.
Vielen Dank für die Aufmerksamkeit
Grüße Henry
Systemumgebung: Delphi 2009 (alle Updates) + Vista