1.
Layout ^
2.
Mobile Apps ^
3.
Browseranwendung ^
4.
NoSQL-Datenbanken als große Zwischenablage ^
5.
Das Import- und Speicherformat JSON ^
JSON (Javascript Object Notation) ist eine sehr holzschnittartig definierte Datenhaltungssprache. Sie gehorcht folgenden formalen Regeln:
Es gibt Schlüssel und Werte.
Schlüssel entsprechen dabei den «Feldbezeichnern», den «Spaltenköpfen» in relationalen Tabellenstrukturen und den Elementnamen in der SGML/XML-Welt. Die Werte sind die Inhalte. Beides steht in Anführungszeichen und ist durch einen Doppelpunkt getrennt. Schlüssel-Wert-Paare, die durch geschweifte Klammern umschlossen sind, nennt man Objekt. Objekte können hintereinander angeordnet sein, dann stehen Kommata dazwischen. Objekte können auch gleichgeordnet, also bildlich «nebeneinander» stehen, dann nennt man diese Anordnung «Array». Dabei sind die Objekte ebenfalls durch Kommata getrennt, aber der gesamte Array ist noch durch eckige Klammern umschlossen. Als Zeichen stehen nur die ANSI-Zeichen der Computertastatur zur Verfügung, alle Sonderzeichen sind in UTF-8 zu umschreiben. Da es keine weiteren Regeln für JSON gibt, eignet sich dieses Datenformat gut für den Datenaustausch und für die medienneutrale Datenhaltung. Seine Grammatik wird z.B. auf der Homepage http://json.org/json-de.html in fünf schematischen Abbildungen verständlich dargestellt.
6.
Konvertersuche ^
6.1 Als erstes gegoogeltes Beispiel herausgegriffen sei: http://www.thomasfrank.se/xml_to_json.html
Testablauf: Eine beliebige Sammlung von Adressen in wohlgeformtem XML mit einigen ISO-Sonderzeichen wurde mit der Anwendung online zu JSON konvertiert. Anschließend wurde das Ergebnis bei http://jsonlint.org/ zur Validierung einkopiert. Leider ergab sich bereits in Zeile 1 eine Fehlermeldung «Expecting a string». Offenbar vermisst der Parser im Ergebnis eine Reihe von Anführungszeichen. Die Bearbeitung erfolgte rasch, das Script scheint aber leider offenbar nicht für alle Konventionen gerüstet.
6.2 Vielversprechend war auch: http://www.freeformatter.com/xml-to-json-converter.html.
Hier erfolgt derselbe Test, aber leider erscheint statt des Outputs nur die Meldung "Unable to format the JSON output. The entity "uuml" was referenced, but not declared." Das Programm ist leider beim ersten "ü", welches als ü codiert war, ausgestiegen. Für einem zweiten Test wurden daher vorab alle "&" zu # verwandelt. Die Umwandlung verläuft nun problemlos, das Ergebnis sieht gut aus, aber leider meldet der JSONLint-Parser 2 einen Fehler, allerdings ohne die Fehlerposition anzugeben: " JSON.parse: expected property name or '}'".
6.3 Als drittes wurde folgende Adresse getestet: http://www.utilities-online.info/xmltojson/#.UNxh0ndsl6Y
Hier erfolgt derselbe Test, aber leider erscheint auch hier statt des Outputs nur die Meldung "parsererror": { "#text": "XML-Verarbeitungsfehler: Nicht definierte Entität, Adresse: http://www.utilities-online.info/xmltojson/#.UNxh0ndsl6Y Zeile Nr. 1, Spalte 147:" Auch dieses Programm ist beim ersten "ü", welches als ü codiert war, ausgestiegen. Für einen zweiten Test wurden daher vorab alle "&" zu # verwandelt. Die Umwandlung verläuft nun problemlos und auch der JSONLint-Parser als Benchmark wird fehlerfrei passiert.
7.
Sonderzeichenumformung: ^
8.
Konverteraufbau: ^
8.5 In JSON werden geschweifte und eckige Klammern zur Strukturierung verwendet, in XML dürfen sie hingegen als gewöhnliche Schriftzeichen interpretiert werden. Daher müssen vor einer Konvertierung von XML zu JSON geschweifte und eckige Klammern "escaped" werden, also durch eine explizite Sonderzeichennotation ersetzt. Wenn nun im Laufe der weiteren Konvertierschritte XML-Tagging in Zeichen wie {, }, [ oder ] verwandelt wird, kann es nicht mehr zu einer Verletzung der notwendigen Spiegelbildlichkeit solcher Sonderzeichen kommen.
9.
update für CouchDB: ^
Der Konverter muss erstmalige Datenumformungen anders behandeln als Updates. Die NoSQL-Datenbasis CouchDB beispielsweise arbeitet mit absoluter Kontrolle der Objektintegrität. Zwar gibt es viele Wege für neuen raschen Input. Aber falls sich die Datenbank nicht sicher ist, dass ein Input ein Update eines bereits vorhandenen Objektes ist, behandelt sie jedes neu aufgenommene Objekt als komplett neues Objekt. Diese Vorsichtsmaßnahme im Datenbankdesign birgt im juristischen Umfeld folgendes Problem: Wenn sich z.B. eine gesetzliche Vorschrift ändert, dann würde der Nutzer das nicht mitbekommen, sondern die Änderung als zusammenhanglose Neuheit betrachten, anstatt sie in einer Reihe mit den Vorgängerregelungen zu sehen. Daher muss der Konverter bei Aktualisierungen vorhandener Objekte den datenbankinternen Schlüssel der Vorgängerversion ermitteln und diesen der Nachfolgerversion sozusagen als Passwort mitgeben, damit auch CouchDB den neuen Input als Update eines bereits vorhandenen Objektes behandelt.
10.
Anwendungsbeispiel ^
Alexander Konzelmann, Abteilungsleiter, Richard Boorberg Verlag GmbH & Co KG, Boorberg Rechtsdatenbanken RDB.