06. Oktober 2004 Arbeitsgruppe IT-Standards in der Justiz Technische Dokumentation zu XJustiz Version 1.2 I. Einleitung ....................................................................................................... 3 1. Zielsetzung .................................................................................................... 3 2. Grundzüge des Lösungsansatzes.................................................................. 3 3. Bestandteile von XJustiz ................................................................................ 4 II. Aufbau und Inhalt der XML-Schema-Dateien .............................................. 5 1. Namensraum ................................................................................................. 5 2. Grundmodul, Wertelisten und Fachmodule .................................................... 6 a) Grundmodul ............................................................................................... 6 b) Wertelisten ................................................................................................. 9 c) Fachmodule ............................................................................................. 11 d) Include-Technik ....................................................................................... 16 3. Bezugnahme auf die Schemata in Instanzdokumenten ............................... 16 4. Statisches Datenmodell ............................................................................... 17 5. Bewusst ausgeklammerte Aspekte .............................................................. 17 a) Dokumente und Meta-Informationen ....................................................... 18 b) Elektronische Signatur ............................................................................. 19 c) Übertragungsweg, Verschlüsselung, Transportsignatur .......................... 19 III. Einzelheiten .................................................................................................. 19 1. Dateinamen ................................................................................................. 19 2. Modellierungsstil .......................................................................................... 20 3. Häufigkeiten (Kardinalitäten) ........................................................................ 23 a) minOccurs und maxOccurs ..................................................................... 23 b) Leere Elemente ....................................................................................... 23 c) Leerstrings ............................................................................................... 25 4. Interne Referenzierung ................................................................................ 25 a) Ausgangspunkt ........................................................................................ 25 b) Eingesetzte Werkzeuge ........................................................................... 26 c) Konsequenzen für die Erstellung der Instanzdokumente ......................... 32 5. Erweiterung und Einschränkung .................................................................. 33 a) Erweiterung ............................................................................................. 33 b) Einschränkung ......................................................................................... 33 6. Versionierung ............................................................................................... 34 a) Versionierung der Schema-Dateien ......................................................... 34 b) Wiedergabe der Versionsnummer in Instanzdokumenten ....................... 36 7. Parser .......................................................................................................... 38 D:\75903285.doc XJustiz Version 1.2 Technische Dokumentation 2 Versionsangaben Version 1.2 Stand vom 6.10.2004 Bearbeitet von I. Bauer, Status Vorlage an AG-IT Freigegeben AG-IT am Freigegeben BLK am Änderungshistorie Datum Was wurde geändert Wer hat geändert 19.09.2003 Neuerstellung Irina Bauer 28.09.2003 Redaktionelle Überarbeitung Klaus Bacher 13.10.2003 Angaben zu Version und Änderungshistorie eingefügt Klaus Bacher 15.10.2003 Änderungen auf Vorschlag NRW eingefügt Klaus Bacher 05.11.2003 Freigabe BLK, V1.1 erstellt J. Ehrmann 06.10.2004 Anpassung an die neue Version des Grunddatensatzes V1.2 I.Bauer 75903285 XJustiz Version 1.2 I. Technische Dokumentation 3 Einleitung 1. Zielsetzung Das Datenformat XJustiz soll den Austausch von verfahrensrelevanten Daten zwischen Gerichten, Staatsanwaltschaften und Verfahrensbeteiligten nach einem bundesweit einheitlichen Standard ermöglichen. Ziel ist es, dass alle anfallenden Daten möglichst nur einmal manuell erfasst werden müssen und dann von allen anderen Verfahrensbeteiligten elektronisch übernommen und eingelesen werden können. Dabei sollen möglichst alle Zielsysteme bei Gerichten, Staatsanwaltschaften, Anwälten, Steuerberatern usw. unterstützt werden. Nicht von der Zielsetzung umfasst ist hingegen eine vollautomatische Datenübernahme. Die übermittelten XJustiz-Daten sollen erst dann endgültig in die Datenbank des Empfängers Eingang finden, wenn sie von einem Bearbeiter geprüft und freigegeben worden sind. Erspart werden soll nur der Aufwand für das Eintippen (oder Einscannen und OCR-Bearbeiten) der Daten, nicht der Erfassungsvorgang insgesamt. Erst recht soll XJustiz nicht dazu dienen, beim Empfänger automatisierte Bearbeitungsvorgänge mit Außenwirkung anzustoßen. Ziel von XJustiz im elektronischen Rechtsverkehr ist der erleichterte und problemlose Datenaustausch zwischen Verfahrensbeteiligten, wie Gerichten, Staatsanwaltschaften, Rechtsanwälten usw. Die für XJustiz gewählte Auszeichnungssprache XML kann das Konzept des Datenaustausches umsetzen. 2. Grundzüge des Lösungsansatzes XJustiz bedient sich der Seitenbeschreibungssprache XML (Extensible Markup Language). Daten, die im Format XJustiz übermittelt werden, sind in einer XMLDatei (einem so genannten Instanzdokument) enthalten, die nach bestimmten Regeln aufgebaut ist. Diese Regeln ihrerseits sind in Dateien hinterlegt, die nach dem Standard XSD (XML-Schema-Datei) aufgebaut sind. Im folgenden wird beschrieben, nach welchem Prinzip die für XJustiz maßgeblichen XML-Schema-Dateien aufgebaut sind und welche Besonderheiten es bei der 75903285 XJustiz Version 1.2 Technische Dokumentation 4 Erstellung von Instanzdokumenten, die diesen Schemata entsprechen, zu beachten gilt. 3. Bestandteile von XJustiz Die Definition der XJustiz-Datenstrukturen ist derzeit in folgenden XML-SchemaDateien hinterlegt: ▪ Grundmodul (xj_0000_grunddatensatz_1_2.xsd) Dies ist eine XML-Schema-Datei in der grundlegende Strukturen und Datentypen definiert werden. Die in dieser Datei enthaltenen Definitionen bilden die Grundlage für die einzelnen Fachdatensätze. ▪ Verschiedene Wertelisten Diese Listen werden zum Ausfüllen einzelner Felder benötigt, in denen nur bestimmte Angaben zulässig sind (z.B. Abkürzungen für Ländernamen nach ISO 3166). Diese Wertelisten sind ebenfalls als XML-Schema-Datei angelegt. Aus Gründen der Übersichtlichkeit wurden die Listen auf folgende Dateien verteilt: ▪ ▪ xj_0010_wl_allgemein_1_2.xsd ▪ xj_0020_wl_gerichte_1_2.xsd ▪ xj_0030_wl_rechtsform_1_2.xsd ▪ xj_0040_wl_rollenbezeichnung_1_2.xsd ▪ xj_0050_wl_staaten_1_2.xsd ▪ xj_0060_wl_telekommunikation1_2.xsd Basis-Fachmodul (xj_0100_basis_1_2.xsd) Dies ist eine XML-Schema-Datei, in der die im Grundmodul enthaltenen Definitionen sowie die Vorgaben aus den Wertelisten ohne Ergänzungen oder Einschränkungen umgesetzt worden sind. Das Basis-Fachmodul ist die zentrale Vorgabe für alle XJustiz-Datensätze, die im Grundmodul definierten Informationen ohne weitergehende Zusätze enthalten. ▪ Fachmodul Familie (xj_0200_familie_1_2.xsd) Das Fachmodul Familie tritt in Familiensachen an die Stelle des Basis- 75903285 XJustiz Version 1.2 Technische Dokumentation 5 Fachmoduls. Es hat dieselbe Struktur wie dieses, enthält als Erweiterung aber zusätzliche Definitionen für Daten-Elemente, die nur in Familiensachen benötigt werden. ▪ Wertelisten für das Fachmodul Für das Fachmodul Familie existieren familienspezifische Wertelisten. ▪ xj_0210_wl_gegenstand_1_2.xsd ▪ xj_0220_wl_rollenbezeichnung_1_2.xsd II. Aufbau und Inhalt der XML-Schema-Dateien 1. Namensraum Alle Bezeichnungen innerhalb einer XML-Datei müssen einem bestimmten Namensraum zugeordnet sein, um sie eindeutig identifizieren zu können. Hierzu wird der Bezeichnung ein Präfix vorangestellt, der den Namensraum kennzeichnet. Das Vokabular der Definitionssprache XML Schema selbst wird durch den Namensraum www.w3.org.2002/XMLSchema identifiziert. Um Schreibaufwand zu sparen und den Code übersichtlicher zu halten, wird für diesen Namensraum in XJustiz – einer allgemeinen Übung entsprechend – das Präfix xs: verwendet. Ergänzend kann ein bestimmter Namensraum als Standard definiert werden. Diesem Namensraum ist definitionsgemäß das Präfix xmlns: zugeordnet. In XJustiz lautet der Standard-Namensraum http://www.xjustiz.de. Globale Objekte, die keinen Präfix haben, werden automatisch dem Präfix xmlns: zugeordnet. Lokal deklarierte Elemente werden ihm nur dann zugeordnet, wenn das Attribut elementFormDefault den Wert qualified hat. Dies ist in XJustiz der Fall. Lokal deklarierte Attribute werden dem Standard-Namensraum zugeordnet, wenn das attributeFormDefault den Wert qualified hat. Dies ist in XJustiz nicht der Fall. Schließlich kann noch ein Ziel-Namensraum (targetNamespace) definiert werden. Dies 75903285 ist der Standard-Namensraum für die zum Schema gehörigen XJustiz Version 1.2 Instanzdokumente. Technische Dokumentation In XJustiz lautet auch 6 der Ziel-Namensraum http://www.xjustiz.de. Damit sind alle zu XJustiz gehörigen Objekte einem einheitlichen Namensraum zugeordnet. Dies vereinfacht die Erweiterung durch Vererbung von Typen und die Anbindung von externen Listen. 2. Grundmodul, Wertelisten und Fachmodule Die Definition der XML-Strukturen ist auf mehrere Dateien verteilt. a) Grundmodul Das Grundmodul ist eine Art Baukasten. Es definiert die Grundstrukturen und stellt diese als Sammlung von Bausteinen zur Verfügung, auf die die einzelnen Fachmodule zurückgreifen können. (1) Grundlegender Aufbau Programmiertechnisch gesehen ist das Grundmodul eine Sammlung von komplexen Datentypen. Die meisten dieser Typen sind stark hierarchisch aufgebaut, d.h. die in ihnen enthaltenen Elemente sind in einer über mehrere Ebenen gegliederten Baumstruktur angeordnet. Auf diese Weise wird ein den Erfordernissen des Rechtsverkehrs entsprechendes Inhaltsmodell aufgebaut. Das Grundmodul besitzt kein Wurzelelement. Es kann deshalb nicht als Ausgangspunkt für die Erstellung oder Prüfung einer XML-Datei verwendet werden. Für diese Zwecke muss das Grundmodul vielmehr um ein Fachmodul ergänzt werden. Ergänzt wird das Grundmodul durch eine Sammlung von Wertelisten, in denen für den Inhalt bestimmter Elemente (z.B. Familienstand oder Staatsangehörigkeit) standardisierte Werte vorgegeben werden. Inhaltlich sind diese Wertelisten integraler Bestandteil. Um den Code besser lesbar zu halten, wurden die Wertelisten aber in separate Dateien ausgelagert. 75903285 XJustiz Version 1.2 Technische Dokumentation 7 (2) Wesentliche Datentypen Zentraler Ankerpunkt des Grundmoduls ist der Typ T_Grunddaten. Er enthält das Element Grunddaten, in dem alle im Grundmodul definierten Datentypen zusammengefasst und den fachlichen Vorgaben entsprechend angeordnet sind. Aus fachlichen Überlegungen heraus wurde das Element Grunddaten wie folgt strukturiert: Das Element Grunddaten enthält die Unterelemente Verfahren und Sendung. Das Unterelement Verfahrensdaten definiert Informationen, die für das von der Datenübermittlung betroffene Verfahren relevant sind. Es enthält seinerseits folgende Unterelemente: ▪ Verfahrensnummer ▪ Instanzdaten ▪ Beteiligung ▪ Termin Das Unterelement Sendungsdaten definiert Meta-Informationen, für den einzelnen Übermittlungsvorgang. Es enthält seinerseits folgende Unterelemente: ▪ Sendungspriorität ▪ Bemerkung ▪ Absenderkennung ▪ Empfängerkennung ▪ Eingangsbestätigungswunsch ▪ Dokument Der vorstehend beschriebene Grundaufbau ist in nachfolgendem Schaubild nochmals zusammengefasst: 75903285 XJustiz Version 1.2 Technische Dokumentation 8 Abbildung 1: Aufbau des Elements T_Grunddaten Daneben enthält das Grundmodul eine Ansammlung von global definierten Typen. Dabei handelt es sich um kleinere Datenstrukturen, die innerhalb des Typs T_Grunddaten öfter Verwendung finden oder deren Wiederverwendung in künftigen Fachmodulen wahrscheinlich und sinnvoll erscheint. Ein Beispiel bildet der Typ T_Bankverbindung. An verschiedenen Stellen des Grundmoduls werden Elemente definiert, die Angaben zu einer Bankverbindung enthalten. Die Definition des Typs T_Bankverbindung ermöglicht es, diese Strukturen mit einfachen Mittel gleich auszugestalten. Zugleich erleichtert sie die spätere Pflege. Werden für eine Bankverbindung später zusätzliche oder andere Daten benötigt, muss nur der Typ neu definiert werden, nicht dagegen die zahlreichen Elemente, die diesem Typ zugewiesen sind. Außerdem sind im Grundmodul Wertelistentypen definiert (gekennzeichnet mit WLT_). Diese bilden die Grundlage für die Einbindung von Wertelisten. Siehe dazu im einzelnen unter b). Eine vollständige Übersicht über sämtliche im Grundmodul definierten Datentypen liefert das folgende Schaubild: 75903285 XJustiz Version 1.2 Technische Dokumentation 9 Abbildung 2: Datentypen im Grundmodul b) Wertelisten Wertelisten dienen dazu, für den Inhalt bestimmter Elemente eine Menge von zulässigen Werten zu definieren. Typische Beispiele sind Elemente wie Staatsangehörigkeit oder Familienstand, die typischerweise nur bestimmte Werte enthalten können und sollten. Die zum Grundmodul gehörigen Wertelisten wurden der Übersichtlichkeit halber in separate Dateien ausgelagert. Dabei wurde für umfangreichere Listen jeweils eine gesonderte Datei angelegt. Kleinere Listen wurden in xj_0010_wl_allgemein_1_2.xsd zusammengefasst. Im einzelnen gehören zum Grundmodul folgende Wertelisten-Dateien: ▪ xj_0010_wl_allgemein_1_2.xsd ▪ xj_0020_wl_gerichte_1_2.xsd ▪ xj_0030_wl_rechtsform_1_2.xsd 75903285 der Datei XJustiz Version 1.2 Technische Dokumentation ▪ xj_0040_wl_rollenbezeichnung_1_2.xsd ▪ xj_0050_wl_staaten_1_2.xsd ▪ xj_0060_wl_telekommunikation_1_2.xsd 10 Die Datei wl_allgemein_1_2.xsd enthält Wertelisten für folgende Elemente: ▪ Sachgebiet ▪ Familienstand ▪ Anschriftstyp ▪ Geschlecht ▪ Dateiformat ▪ Terminsart Der Inhalt der anderen Wertelisten-Dateien ergibt sich aus dem Dateinamen. Jede Werteliste definiert einen Datentyp auf der Basis des im Grundmodul enthaltenen Typs WLT_String und schränkt diesen durch Enumerations, also durch Vorgabe einer abschließenden Liste von zulässigen Werten, ein. Alle auf diese Art definierten Datentypen tragen Namen, die mit WL_ beginnen. Der Basis-Typ WLT_String wird hier verwendet, weil er neben einer StringInformation auch Attribute enthält, aus denen die Version und die Fassung der jeweils verwendeten Werteliste hervorgeht. Auf diese Weise können neue Versionen der Wertelisten eingeführt werden, ohne dass der Inhalt des Grundmoduls geändert werden muss. Für die Elemente Gericht und Rollenbezeichnung wurden spezielle Basistypen WLT_Gerichte und WLT_Rollenbezeichnung geschaffen, weil diese Elemente zugleich Teil von Schlüsselreferenzen sind (vgl. dazu III.4). In einigen Fällen könnte sich die Verwendung verbindlicher Wertelisten in der Praxis als zu starr erweisen. Beispielsweise könnte kurzfristig die Notwendigkeit entstehen, eine neue Staatenbezeichnung zu verwenden, die in der einschlägigen Werteliste noch nicht enthalten ist. Um für solche Situationen genügend Flexibilität zu haben, besteht für jedes Instanz-Dokument die Möglichkeit, anstelle des in der Werteliste verwendeten Datentyps WL_xxx den Basistyp WLT_String zu verwenden, der beliebige Inhalte zulässt. Einzelheiten hierzu sind unter c) beschrieben. 75903285 XJustiz Version 1.2 Technische Dokumentation 11 c) Fachmodule (1) Funktion und grundlegender Aufbau Weder das Grundmodul noch die zu diesem gehörigen Wertelisten sind als unmittelbarer Ansatzpunkt für die Definition eines Instanzdokuments geeignet. Hierzu ist ein so genanntes Root-Element erforderlich, das diese Dateien – ihrer Zwecksetzung als "Werkzeugsammlung" entsprechend – nicht aufweisen. Um ein Instanzdokument definieren und prüfen zu können, werden Fachmodule eingesetzt. Die Fachmodule verweisen über include-Befehle auf das Grundmodul und die zu diesem gehörigen Wertelisten. Hierdurch stehen sämtliche Datentypen und Definitionen aus dem Grundmodul und den Wertelisten im Fachmodul zur Verfügung. Die include-Beziehungen zwischen den einzelnen Elementen von XJustiz sind in der nachfolgenden Grafik nochmals veranschaulicht: 75903285 XJustiz Version 1.2 Technische Dokumentation 12 Abbildung 3: Einbindung des Grundmoduls und der Wertelisten Jedes Fachmodul enthält das Root-Element XJustizDaten. Dieses wiederum besteht aus einem Unterelement Grunddaten und einem zusätzlichen Element Fachdaten_xxx. Das Element Grunddaten ist vom Datentyp T_Grunddaten, enthält also sämtliche Unterelemente und sonstigen Merkmale, die im Grundmodul definiert sind. Je nach den fachlichen Anforderungen können die im Grundmodul enthaltenen Definitionen dabei eingeschränkt, erweitert oder modifiziert sein. Das Element Fachdaten_xxx enthält zusätzliche Elemente, die nur für das jeweilige Fachverfahren benötigt werden. Zusammen mit der XJustiz-Version 1.0 sind zwei Fachmodule erstellt worden: 75903285 XJustiz Version 1.2 Technische Dokumentation 13 (2) Basis-Fachmodul Das Basis-Fachmodul enthält das Element Grunddaten in unveränderter Form, stellt also eine Eins-Zu-Eins-Abbildung der im Grundmodul enthaltenen Definitionen zur Verfügung. Es eignet sich zur Aufnahme des elektronischen Rechtsverkehrs in allen Gerichtszweigen und Verfahrensarten, solange für das jeweilige Fachgebiet noch kein Fachmodul existiert. Als einzige Ergänzung zum Element Grunddaten enthält das Basis-Fachmodul ein Element Fachdaten_Basis. Dieses ist vom Datentyp any, kann also beliebigen Inhalt haben. Der Aufbau des Basis-Fachmoduls ist in der nachfolgenden Grafik nochmals zusammengefasst: Abbildung 4: Aufbau des Basis-Fachmoduls (3) Fachmodul Familie Das Fachmodul Familie enthält zusätzliche Elemente und Definitionen, die nur in Verfahren vor den Familiengerichten benötigt werden. Hierzu wird die Definition des Elements Grunddaten teilweise abgewandelt. Außerdem definiert das Element Fachdaten_FAM zusätzliche Datenstrukturen, die im Grundmodul nicht angelegt sind. Der Aufbau des Basis-Fachmoduls ist in der nachfolgenden Grafik dargestellt. 75903285 XJustiz Version 1.2 Technische Dokumentation 14 Abbildung 5: Aufbau des Fachmoduls Familie (4) Anbindung der Wertelisten Die für bestimmte Elemente definierten Wertelisten werden im Fachdatensatz durch einen Verweis auf die betreffenden Wertelisten-Dateien zur Verfügung gestellt. Innerhalb des Fachdatensatzes besteht die Möglichkeit, diese Wertelisten nochmals einzuschränken oder zu erweitern, um sie den Erfordernissen des jeweiligen Fachgebiets anzupassen. Im Fachmodul Familie wurde von dieser Möglichkeit beispielsweise für die Werteliste Gegenstandsbezeichnung Gebrauch gemacht. Diese Werteliste liegt in xj_0210_wl_gegenstand_1_2.xsd vor. Um bei der Verwendung von Wertelisten ein Mindestmaß an Flexibilität zu bewahren, enthält das Grundmodul keine Bindung an einen Wertelistentyp. Elemente, für die die Verwendung von Wertelisten in Betracht kommt, weisen stattdesen den Typ WLT_String (oder die strukturgleichen Typen WLT_Gerichte und WLT_Rollenbezeichnung) auf, der beliebige Stringwerte zulässt und darüber hinaus Versions-Attribute vorsieht. Soll anstelle dieses "offenen" Datentyps ein Wertelistentyp verwendet werden, muss dies im Instanzdokument durch Verwendung des Attributs xsi:type kenntlich gemacht werden. 75903285 XJustiz Version 1.2 Technische Dokumentation 15 In der Regel enthalten Instanzdokumente keine Angaben über den Datentyp der in ihnen enthaltenen Elemente. In diesem Fall ergibt sich der Datentyp aus den Definitionen des zu Grunde liegenden XML-Schemas. Das Attribut xsi:type ermöglicht es, den Datentyp im Instanzdokument explizit festzulegen. Hierbei kann ein anderer Datentyp gewählt werden als der im XML-Schema vorgesehene. Dies funktioniert jedenfalls dann problemlos, wenn die beiden Datentypen dieselbe Grundstruktur aufweisen. Um letzteres zu gewährleisten, wird für die in Frage kommenden Elemente bereits im Grundmodul nicht der einfache Datentyp xs:string verwendet, sondern der speziell definierte Typ WLT_String, der zusätzlich Attribute vorsieht, mit denen eine Versionsnummer angegeben werden kann. Alle Wertelisten-Typen enthalten ein Attribut wl_version. Damit kann (und muss) angegeben werden, welche Version (Haupt- und Unterversion, vgl. unten III.6) der jeweiligen Werteliste bei der Erstellung des Instanzdokuments zu Grunde gelegt worden ist. Ergänzend ist ein optionales Attribut wl_fassung vorgesehen, mit dem angegeben wird, in welcher konkreten inhaltlichen Fassung die Werteliste zu Grunde gelegt worden ist. Die vorstehend beschriebene Vorgehensweise lässt sich an folgendem Beispiel verdeutlichen: Dem an verschiedenen Stellen vorgesehenen Element Staat ist im Grundmodul der Datentyp WLT_String zugewiesen. Sofern das Instanzdokument dazu keine zusätzlichen Festlegungen enthält, kann dieses Element im Instanzdokument deshalb beliebigen Inhalt haben. Auch die Verwendung eines Attributs ist dann nicht zwingend erforderlich. Zulässig wäre beispielsweise folgende Angabe: <Staat>Irgendein neu gegründeter Staat</Staat> Im Instanzdokument kann (und sollte in aller Regel) stattdessen aber festgelegt werden, dass das Element dem Datentyp WL_Staat entspricht, also einen vordefinierten Wert enthält. Dann hat das Element beispielsweise folgenden Inhalt: 75903285 XJustiz Version 1.2 Technische Dokumentation 16 <Staat xsi:type="WL_Staaten" wl_version="1.2" wl_fassung="0">DE </Staat> Bei der Erstellung von Instanzdokumenten soll in aller Regel auf vorhandene Wertelisten zugegriffen werden. Nur in Ausnahmefällen, in denen die Werteliste den aus inhaltlicher und fachlicher Sicht benötigten Wert nicht enthält, darf der Basistyp WLT_String verwendet werden. d) Include-Technik Sowohl das Grundmodul als auch die Wertelisten werden mit Hilfe der Anweisung xs:include in die Fachmodule eingebunden. Wichtig bei der Verwendung von xs:include ist, dass das eingebundene Schema denselben Ziel-Namensraum haben muß wie das einbindende Schema. Es ist möglich gleichzeitig mehrere Dokumente mit mehreren Include-Elementen einzubinden und Dokumente, die ihrerseits wieder inkludieren - jedoch müssen alle eingebundenen Dokumenten denselben Ziel-Namensraum verwenden. Das Inkludieren eines Schemadokumentes erzeugt eine Referenz auf dieses und erlaubt somit später einen schnelleren Zugriff, da hier vorab in den Cache gespeichert wird. Die Einbindung mittels xs:include bietet sich auch für künftige Erweiterungen von XJustiz an, insbesondere für zukünftig hinzukommende Fachmodule. Sollten in Zukunft Module mit einem eigenem, neuen Namensraum hinzukommen, müssten diese Module hingegen mit der Anweisung xs:import importiert werden. Aus heutiger Sicht erscheint es indes sinnvoller, auch neue Module in den einheitlichen Namensraum http://www.xjustiz.de zu integrieren und die Anbindung an andere Module über xs:include zu realisieren. 3. Bezugnahme auf die Schemata in Instanzdokumenten Jedes XML-Instanzdokument muss die Angabe enthalten, nach welchen Regeln es aufgebaut ist. Hierzu muss im Instanzdokument auf eines der Fachmodule referenziert werden. Diese Referenzierung erfolgt durch das Attribut xsi:schemaLocation. Als Wert enthält es Paare aus einem Namensraum 75903285 XJustiz Version 1.2 Technische Dokumentation 17 (www.xjustiz.de) und einer Referenz auf ein zu diesem Namensraum gehöriges Fachmodul. Auf das Grundmodul oder auf Wertelisten braucht in Instanzdokumenten dagegen nicht referenziert zu werden. Beides steht durch den Verweis auf das Fachmodul und die darin enthaltenen xs:include-Anweisungen automatisch zur Verfügung. 4. Statisches Datenmodell Die Definitionen in XJustiz sind von statischer Natur. Sie dürfen deshalb nur als statisches Datenmodell gesehen werden. Erste Entwürfe von XJustiz hatten demgegenüber noch Mechanismen vorgesehen, die eine rudimentäre Grundlage für die Mitteilung von Änderungs- oder Lösch-Vorschlägen geboten hätten. Diese Ansätze wurden verworfen, weil sie ihre Umsetzung nach Einschätzung von Software-Entwicklern mit zu hohem Aufwand verbunden gewesen wäre. In seiner jetzigen Form macht XJustiz keine Annahmen über die EDV-Ausstattung auf Anwalts- und oder Gerichtsseite, über Inhalt und Umfang der dort vorhandenen Datenbestände oder über bestimmte Eigenschaften von Fachanwendungen. XJustiz hat lediglich die Funktion einer Schnittstelle, über die die verschiedenen Anwendungen statische Daten austauschen können. Mit XJustiz können dagegen keinerlei Transaktionen ausgelöst werden. XJustiz ist also beispielsweise nicht dafür ausgelegt, durch den Eingang eines Instanzdokuments automatische Transaktionen in der Gerichtsdatenbank auszulösen. Im Rahmen einer späteren Erweiterung ist denkbar, auch Transaktionen zu modellieren. Hierzu bietet sich die Verwendung von separaten Transaktions-XMLSchemata an. 5. Bewusst ausgeklammerte Aspekte Die Konzeption von XJustiz beschränkt sich bewusst darauf, lediglich eine Datenstruktur für den Austausch ausgewählter Daten bereitzustellen. Andere Aspekte, die für eine rechtsgültige Übermittlung im elektronischen Rechtsverkehr 75903285 XJustiz Version 1.2 Technische Dokumentation 18 einer Lösung bedürfen, wurden bewusst ausgeklammert, um den Inhalt der Vorgaben auf ein Minimum zu beschränken. Für alle Aspekte, die von XJustiz nicht berührt werden, ergeben sich die maßgeblichen Vorgaben aus den von der Bund-Länder-Kommission für Datenverarbeitung und Rationalisierung in der Justiz (BLK) verabschiedeten Organisatorisch-Technischen Leitlinien elektronischen Rechtsverkehr mit den Gerichten und Staatsanwaltschaften (OT-Leit-ERV). Dieses Regelwerk, das auch einen technischen Anhang enthält, ist unter anderem unter http://www.xjustiz.de erhältlich. a) Dokumente und Meta-Informationen Die in XJustiz definierten Strukturen beschreiben ausschließlich Meta-Informationen zu einem übermittelten Dokument und zu dem Verfahren, auf das sich das Dokument bezieht. Das eigentliche Dokument ist in einer separaten Datei enthalten, das nicht im XJustiz-Format erstellt ist. Zusammen mit jeder XJustiz-Instanzdatei wird deshalb in aller Regel mindestens eine weitere Datei übertragen, die das eigentlich zu übermittelnde Dokument enthält. Beispiel: Wenn ein Anwalt eine Klage einreicht, erstellt er die Klageschrift in einem gängigen Dokumentenformat, z.B. Adobe PDF. Welche Formate hierfür zulässig sind, wird durch Rechtsverordnung geregelt. Zu diesem Dokument wird vor dem Versand eine XJustiz-Datei erzeugt, in der grundlegende Informationen zum Absender und Empfänger des Dokuments Sendung sowie rudimentäre Angaben zu dessen Inhalt hinterlegt werden. Beides zusammen – Klageschrift im PDF-Format und Metainformationen im XJustiz-Format wird dann an das Gericht übersandt. Die Verbindung zwischen den XJustiz-Daten und den zusammen mit ihnen übermittelten Dokumenten bildet das Element Sendungsdaten enthalten. Dieses enthält Informationen über den Inhalt, das Dateiformat und den Dateinamen der beigefügten Dokumente. 75903285 XJustiz Version 1.2 Technische Dokumentation 19 b) Elektronische Signatur Dokumente, die im elektronischen Rechtsverkehr ausgetauscht werden, bedürfen in der Regel einer qualifizierten elektronischen Signatur. Rechtlich maßgeblich und deshalb signaturbedürftig sind nicht die XJustiz-Daten, sondern die zusammen mit diesen übermittelten Dokumente, also z.B. die Klageschrift, ein gerichtliches Urteil usw. XJustiz selbst deshalb keine Festlegungen hinsichtlich der elektronischen Signatur. c) Übertragungsweg, Verschlüsselung, Transportsignatur XJustiz wurde bewusst so konzipiert, dass die Übermittlung nicht an einen bestimmten Übertragungsweg gebunden ist. Auch insoweit ergeben sich die wesentlichen Vorgaben aus den OT-Leit-ERV. III. Einzelheiten 1. Dateinamen Für die Dateinamen der XML-Schema-Dateien wird folgendes Muster verwendet: xj_nnnn_[ww_]b*_v-v.xsd Hierbei bedeuten: ▪ xj Ein konstanter Präfix zur Kennzeichnung aller XJustiz-Schemata. ▪ nnnn Eine vierstellige Zahl, die als Hilfsmittel verwendet wird, um die alphanumerische Reihenfolge der Dateinamen möglichst weitgehend in Einklang zu bringen mit der inhaltlichen Reihenfolge. Hierzu wird folgendes System verwendet: Die erste und die zweite Stelle zeigen an, ob die Datei zum Grundmodul oder zu einer Facherweiterung gehört. Für das Grundmodul ist dabei die Ziffernfolge 00 reserviert, für Facherweiterungen die Ziffernfolgen 01 bis 99. Die dritte und die vierte Stelle sollen eine an inhaltlichen Kriterien orientierte Sortierung der zu einem Modul gehörigen Dateien ermöglichen. 75903285 XJustiz Version 1.2 Technische Dokumentation 20 Beispiel: Das Schema für das Grundmodul erhält die Nummer 0000, die zum Grundmodul gehörigen Wertelisten die Nummern 0010, 0020, 0030 usw.; die Zehnerschritte sollen es ermöglichen, später hinzukommende Wertelisten, die inhaltlich mit vorhandenen Wertelisten zusammenhängen, in das bestehende Schema einzureihen. ▪ ww Ein optionaler Zusatz für besondere Schema-Arten. Zur Zeit wird dieser Zusatz nur bei Wertelisten verwendet; diese erhalten das Kennzeichen "wl". ▪ b* Eine schlagwortartige Bezeichnung des Inhalts ▪ v-v Die Angabe der Haupt- und Unterversion. Beispiel: Für die Version 1.0.0 lautet der Zusatz 1-0, ebenso für künftige Versionen 1.0.1, 1.0.2 usw. Der derzeitige Zusatz lautet 1-2 für die Version 1.2.0. 2. Modellierungsstil Objekte in XML-Schemata können entweder lokal oder global definiert werden. Beide Modellierungsarten haben Vor- und Nachteile. In XJustiz wurde ein gemischter Ansatz gewählt, der sich in der Formel "lokale Elemente – globale Datentypen" zusammenfassen lässt. Global definierte Elemente sind in der Inhaltsstruktur als unmittelbare Kinder des Schema-Elements angeordnet. Solche Elemente können durch Refererenzierung in das Inhaltsmodell aller anderen Elemente eingebunden werden. Ein Design, das ausschließlich mit globalen Elementen arbeitet, wird häufig als SalamischeibenDesign bezeichnet. Viele XML-Editoren, die den XML-Code automatisch erzeugen, arbeiten mit dieser Technik. Der hauptsächliche Vorteil liegt in der mehrfachen Verwertbarkeit der Definitionen. Ein Nachteil besteht häufig darin, dass die CodeStruktur schnell unübersichtlich wird. Lokal definierte Elemente sind in die Deklaration eines anderen Objekts eingeschlossen. Solche Elemente können nur in ihrem jeweiligen Zusammenhang verwendet werden, können also nicht in das Inhaltsmodell anderer Elemente 75903285 XJustiz Version 1.2 Technische Dokumentation 21 eingebunden werden. Ein Design, das ausschließlich mit lokalen Elementen arbeitet, wird häufig als Matroschka-Design bezeichnet. Ein Vorteil dieser Technik besteht darin, dass die Code-Struktur weitestgehend mit der fachlichen Anordnung der Daten übereinstimmt. Nachteilig ist, dass gleichartig strukturierte Elemente separat definiert werden müssen, was vor allem den Aufwand für die spätere Weiterentwickung und Pflege erhöht. Ein Mittelweg besteht darin, lokale Elemente zu verwenden, ergänzend aber globale Typen zu deklarieren, auf die bei der Deklaration der Elemente Bezug genommen werden kann. Ein solches typgestütztes Design wird häufig auch als JalousieDesign bezeichnet. Es vereint die Vorteile der beiden übrigen Designmodelle, ohne dass gravierende Nachteile in Kauf genommen werden müssen. XJustiz orientiert sich im wesentlichen am typgestützten Design. Globale Typen wurden allerdings nur dann definiert, wenn die betreffende Teilstruktur in gleicher Weise in mehreren Elementen vorkommt oder wenn zumindest damit zu rechnen ist, dass spätere Facherweiterungen Elemente gleicher Struktur aufweisen werden. Typisches Beispiel ist der Typ T_Geldbetrag: Das Grundmodul enthält an einigen Stellen Elemente, die einen Geldbetrag darstellen. Der global definierte Typ T_Geldbetrag stellt sicher, dass alle diese Elemente dieselbe Struktur aufweisen. Im Falle einer späteren Änderung oder Erweiterung des Datenmodells braucht nur die Typ-Definition geändert zu werden; in allen zugehörigen Elementen stehen die Änderungen dann ohne weiteres zur Verfügung. Sofern in späteren Fachmodulen weitere Elemente mit gleicher Funktion hinzukommen, sollte auch diesen der Typ T_Geldbetrag zugewiesen werden, damit die Einheitlichkeit der Datenstrukturen gewahrt bleibt. 75903285 XJustiz Version 1.2 Technische Dokumentation 22 <xs:complexType name="T_Geldbetrag"> <xs:sequence> <xs:element name="Zahl" type="xs:double" /> <xs:element name="Waehrung" type="xs:string" default="EUR"/> </xs:sequence> </xs:complexType> Abbildung 6: Definition des Datentyps T_Geldbetrag Elemente sind in XJustiz dagegen stets lokal definiert. Sie sind teilweise tief geschachtelt, um die fachlich vorgegebene originalgetreu im Inhaltsmodell wiederzugeben. Abbildung 7: Verschachtelung der Elemente 75903285 Struktur der Daten möglichst XJustiz Version 1.2 Technische Dokumentation 23 3. Häufigkeiten (Kardinalitäten) a) minOccurs und maxOccurs Bei der Definition von Elementen in einem XML-Schema kann auch angegeben werden, wie oft ein Element mindestens vorkommen muss und wie oft es höchstens vorkommen darf. Hierzu dienen die Attribute minOccurs und maxOccurs. Beiden Attributen kann ein beliebiger ganzzahliger Wert oder der Wert unbounded zugewiesen werden. Typische sind für minOccurs die Werte 1 oder 0, für maxOccurs die Werte 1 oder unbounded. Der Standardwert beider Attribute ist 1. Er braucht nicht explizit zugewiesen zu werden. Enthält ein Element weder das eine noch das andere Attribut, bedeutet dies folglich, dass es genau einmal vorkommen darf und muss. In XJustiz werden viele Elemente mit minOccurs=“0“ eingesetzt. Dies ergibt sich aus der Zielsetzung von XJustiz: In aller Regel enthält ein XJustiz-Instanzdokument nur eine verhältnismäßig geringe Teilmenge der in Grund- und Fachmodulen vorgesehenen Elemente. Welche Elemente vorhanden sind und welche fehlen, hängt vom jeweiligen fachlichen Zusammenhang und vom Einzelfall ab. Allgemeine Regeln lassen sich dafür kaum bilden. Um die für diese Ausgangslage erforderliche Flexibilität zu erreichen, ist die Zahl der Pflicht-Elemente, also der Elemente mit maxOccurs="1", auf ein Minimum reduziert. b) Leere Elemente Daneben besteht die Möglichkeit, ein Element zwar als zwingend zu deklarieren (also minOccurs="1"), aber zuzulassen, dass es ohne Inhalt bleibt. Hierzu dienen das Attribut nillable="true" im XML-Schema und das Attribut xsi:nil=“true“ im zugehörigen Instanzdokument. Wird in der Deklaration eines Elements nillable="true" angegeben, werden Elemente ohne Inhalt auch dann geduldet, wenn dies mit dem Datentyp, dem das Element zugeordnet ist, an sich nicht vereinbar wäre. Von dieser Möglichkeit wurde in XJustiz bei Elementen Gebrauch gemacht, die zwar nicht in jedem Fall vorhanden sein müssen, die aber aus fachlichen Gründen erfahrungsgemäß häufig vorkommen. Diese Elemente müssen in jedem Instanzdokument vorkommen, dürfen aber über 75903285 XJustiz Version 1.2 Technische Dokumentation 24 das Attribut xsi:nil=“true“ einen leeren Inhalt zugewiesen bekommen. Auf diese Weise wird einerseits gewährleistet, dass jedes Instanzdokument einen gewissen Mindestbestand an Elementen hat, andererseits verhindert, dass ein Datenaustausch daran scheitert, dass es zu einem bestimmten Element keinen Inhalt gibt. Das Attribut xsi:nil ist im XML-Schema-Namensraum für Instanzen, (http://www.w3.org/2001/XMLSchema-instance) definiert. Zu Referenzierungszwecken wird diesem Namensraum in der Regel das Präfix xsi: zugewiesen. Instanzdokumente, die das Attribut verwenden, müssen diesen Namensraum einbinden. Hierbei kann theoretisch jedes beliebige Präfix verwendet werden. Zur besseren Verständlichkeit empfiehlt es sich jedoch, generell das gebräuchliche Präfix xsi: zu verwenden. Die Auswahl zwischen Elementen, die mit dem Attribut minOccurs="0" versehen werden, und solchen, bei denen minOccurs="0" und nillable="true" gesetzt ist, erfolgte aus praktischen Erfahrungen heraus und hat keinen tiefer gehenden fachlichen oder datentechnischen Hintergrund. Die Attribute nillable und xsi:nil erinnern an das Konzept der Nullwerte, wie es bei Datenbanksystemen gebräuchlich ist. Trotz dieser Ähnlichkeit gibt es aber einen entscheidenden Unterschied: In XML-Schema-Definitionen wird klar unterschieden zwischen einem nicht vorhandenen Element, einem nil-Element und einem Element mit leerem Inhalt. In Datenbanksystemen wird hingegen in der Regel sowohl das Nichtvorhandensein eines Elements als auch der Wert xsi:nil durch NULL gekennzeichnet. Eine Import- oder Export-Software, die XJustiz-Daten auf den Inhalt einer Datenbank abbildet, wird deshalb beim Import sowohl ein nicht vorhandenes Element als auch ein nil-Element in den Datenbankwert NULL umsetzen. Beim Export eines Feldes mit Inhalt NULL ist zu unterscheiden: Sofern das entsprechende Element auf XML-Seite optional ist (also minOccurs="0"), sollte es weggelassen werden. Ist es zwingend, muss es mit dem Attribut xsi:nil versehen werden. 75903285 XJustiz Version 1.2 Technische Dokumentation 25 c) Leerstrings Bei Elementen vom Typ xs:string kann ein „leerer“ Feldinhalt auch auf andere Weise übermittelt werden: Die Definition dieses Datentyps lässt es zu, dass als xs:stringWert auch eine Zeichenkette der Länge 0 übermittelt wird. Dadurch kann es vorkommen, dass selbst in Pflichtelementen (also Elementen, bei denen minOccurs nicht explizit definiert ist und deshalb den Wert 1 hat), die nicht als nillable deklariert sind, nur ein Leerstring übermittelt wird. <Natuerliche_Person> <Voller_Name> <nachname></nachname> </Voller_Name> <Natuerliche_Person> Abbildung 8: Übermittlung eines Leerstrings in einem Pflichtfeld Aus Gründen der Kompatibilität zum XML-Standard wurde darauf verzichtet, in XJustiz weitergehende Regeln für den Inhalt von xs:string-Werten zu definieren. Sofern die Zieldatenbank für die betreffenden Felder keine Leerstrings zulässt, muss das Importprogramm deshalb eigene Prüfroutinen aufweisen, um solche Datensätze abzufangen. Generell empfiehlt es sich, überall dort, wo geprüft wird, ob ein Element den Wert xsi:nil hat, zugleich zu prüfen, ob das Element aus einem Leerstring besteht. 4. Interne Referenzierung a) Ausgangspunkt Häufig kommt es vor, dass dieselbe Information an verschiedenen Stellen innerhalb desselben Instanzdokuments anzugeben ist. Typische Beispiele: ▪ Ein Rechtsanwalt ist Absender eines Dokuments und zugleich Prozessbevollmächtigter eines Prozessbeteiligten. ▪ Ein Prozessbeteiligter ist zugleich Beklagter und Geschäftsführer einer zusammen mit ihm verklagten Gesellschaft. 75903285 XJustiz Version 1.2 Technische Dokumentation 26 Um in solchen Fällen Redundanzen zu vermeiden, enthält das Grundmodul an einigen Stellen Verweisungsmechanismen, die ähnlich funktionieren wie Schlüsselbeziehungen in einer relationalen Datenbank. Dadurch brauchen die Personendaten eines Beteiligten, auf den in einem Instanzdokument mehrfach Bezug genommen wird, in diesem Instanzdokument nur einmal aufgeführt zu werden, und zwar im Element Beteiligung. An allen anderen Stellen des Dokuments, an denen dieser Beteiligte in Erscheinung tritt, genügt dann ein Verweis auf das Beteiligungs-Element, das die vollständigen Daten enthält. In dem oben gebildeten Beispiel ermöglicht dies folgende Vorgehensweise: ▪ Die Daten des Rechtsanwalts und der von ihm vertretenen Beteiligten werden als Elemente unter der Rubrik Beteiligung aufgeführt. Das Element Absender enthält dann lediglich einen Verweis auf das Beteiligten-Element des Rechtsanwalts. Für die Prozessvollmacht erfolgt die Referenzierung in anderer Richtung: Beim Anwalt wird vermerkt, dass er die Rolle des Prozessbevollmächtigten hat; in diesem Zusammenhang wird auf den (oder die) Beteiligten referenziert, die der Anwalt vertritt. ▪ Der Beklagte, der zugleich Geschäftsführer einer mitverklagten Gesellschaft ist, erhält zwei Rollen zugewiesen: zum einen die eines Beklagten, zum anderen die des Geschäftsführers, und zwar mit einem Verweis auf die von ihm vertretene Gesellschaft. b) Eingesetzte Werkzeuge Um Referenzierungen in der beschriebenen Art zu ermöglichen und zugleich zu gewährleisten, dass die in einem Instanzdokument enthaltenen Verweise zu einem eindeutigen Ziel führen, werden in XJustiz die in XML-Schema vorgesehenen Hilfsmittel Schlüssel-Eigenschaft, Fremdschlüsselbedingung und EindeutigkeitsEigenschaft verwendet. (1) Schlüssel-Eigenschaft XML-Schema ermöglicht es, eine Schlüssel-Eigenschaft zu definieren. Damit wird gewährleistet, dass in einer bestimmten Menge von Elementen eine bestimmte 75903285 XJustiz Version 1.2 Technische Dokumentation 27 Kombination nur ein einziges Mal vorkommt. Zur Definition einer solchen Eigenschaft dient der Befehl xs:key. Der Schlüssel muss innerhalb des Elements definiert werden, welches eindeutig gehalten werden soll, und zwar am Ende der Element-Definition. Zur Kennzeichnung der Elemente, aus denen der eindeutige Schlüssel bestehen soll, werden XPathAusdrücke verwendet. Dabei wird mit xs:selector eine Menge von Elementen spezifiziert, auf die der Schlüssel angewendet wird. Mit xs:field wird angegeben, aus welchen (Unter-)Elementen der Schlüssel besteht Im Grundmodul sind zwei solcher xs:key-Definitionen enthalten: ▪ Schluessel_Beteiligter_Rollennummer ▪ Schluessel_Gericht (a) Schluessel_Beteiligter_Rollennummer Dieser Schlüssel ist definiert durch die Rollennummer eines Beteiligten. <xs:key name="Schluessel_Beteiligter_Rollennummer"> <xs:selector xpath="tns:Verfahrensdaten/tns:Beteiligung/tns:Rolle" /> <xs:field xpath=" tns:Rollennummer" /> </xs:key> Abbildung 9: Schlüssel für Beteiligte und Rolle In der Regel wird ein Beteiligter nur eine Rolle im Verfahren haben. Dann ist der Verweis auf die Rollennummer gleichbedeutend mit einem Verweis auf den betreffenden Beteiligten. Wenn ein Beteiligter mehrere Rollen hat, kann exakt angegeben werden, auf welche dieser Rolle(n) Bezug genommen werden soll. Beispiel: Ein Rechtsanwalt ist in einem Verfahren Prozessbevollmächtigter einer Partei und zugleich gesetzlicher Vertreter einer anderen Partei. Wenn dieser Anwalt ein bestimmtes Dokument nur im Namen einer dieser Parteien einreicht, kann dies im Element Absender dadurch gekennzeichnet werden, dass nur auf diese eine Rollennummer referenziert wird. Reicht derselbe Anwalt ein Dokument im Namen aller von ihm vertretenen Parteien ein, können mehrere Elemente Absender gebildet 75903285 XJustiz Version 1.2 Technische Dokumentation 28 werden und darin auf alle vorhandenen Rollennummern des Rechtsanwalts verwiesen werden. (b) Schluessel_Gericht Dieser Schlüssel ermöglicht es, auf ein bestimmtes Gericht oder eine bestimmte Staatsanwaltschaft zu verweisen, die als Element in der Rubrik Verfahrensdaten/Instanzdaten angegeben ist. <xs:key name="Schluessel_Instanz"> <xs:selector xpath="tns:Verfahrensdaten/ tns:Instanzdaten/ " /> <xs:field xpath="tns:Instanznummer"/> </xs:key> Abbildung 10: Schlüssel für Gerichte und Staatsanwaltschaften (2) Fremdschlüsselbedingung Ein Verweis auf einen der definierten Schlüssel erfolgt mit Hilfe der Anweisung xs:keyref. Bei der Definition eines xs:keyref-Elements wird mit Hilfe des Attributs refer der Name des Schlüssels angegeben, auf den verwiesen werden soll. Mittels xs:selector und xs:path wird definiert, welche Elemente im verweisenden Objekt den Fremdschlüssel bilden. Ein Beispiel für einen solchen Verweis findet sich im Grundmodul beispielsweise zur Definition der Absender-Angabe: <xs:keyref name="Ref_Absender_Beteiligter_Rolle" refer="Schluessel_Beteiligter_Rollennummer"> <xs:selector xpath="tns:Sendungsdaten/ tns:Dokument/tns:Absender"/> <xs:field xpath="tns:Ref_Rollennummer" /> </xs:keyref> Abbildung 11: Fremdschlüsselbedingung für die Absenderangabe 75903285 XJustiz Version 1.2 Technische Dokumentation 29 In dem aufgeführten Beispiel wird definiert, dass der Inhalt des Elements Ref_Rollennummer in den Absenderangaben zu einem Dokument übereinstimmen muss mit den entsprechenden Angaben eines im Instanzdokument unter der Rubrik Beteiligung aufgeführten Verfahrensbeteiligten. Insgesamt enthält das Grundmodul sechs xs:keyref-Definitionen: (a) Ref_Beteiligter_Rolle_Beteiligter Diese Fremdschlüsselbedingung fordert, dass sich die Angabe, auf welchen anderen Beteiligten sich eine Rolle bezieht, mit den entsprechenden Angaben eines im Instanzdokument aufgeführten (anderen) Beteiligten deckt. Beispiel: Wenn bei einem Rechtsanwalt angegeben ist, dass er der Prozessbevollmächtigte des Klägers ist, muss es einen anderen Beteiligten mit der in Bezug genommenen Rollennummer geben. <xs:keyref name="Ref_Beteiligter_Rolle_Beteiligter" refer="Schluessel_Beteiligter_Rollennummer"> Abbildung 12: Fremdschlüsselbedingung für Beziehungen zwischen einzelnen Beteiligten (b) Ref_Absender_Beteiligter_Rolle Diese Fremdschlüsselbedingung wurde bereits oben erläutert. (c) Ref_Absender_Gericht Diese Fremdschlüsselbedingung Ref_Gerichtskennzahl in den fordert, dass der Absenderangaben Inhalt zu des einem Elements Dokument übereinstimmen muss mit der entsprechenden Angabe eines im Instanzdokument unter der Rubrik Instanzdaten aufgeführten Gerichts. 75903285 XJustiz Version 1.2 Technische Dokumentation 30 <xs:keyref name="Ref_Absender_Instanz" refer="Schluessel_Instanz"> <xs:selector xpath="tns:Sendungsdaten/tns:Dokument/tns:Absender"/> <xs:field xpath= tns:Ref_Instanznummer" /> </xs:keyref> Abbildung 13: Fremdschlüsselbedingung für die Absenderangabe von Gerichten und Staatsanwaltschaften (d) Ref_Empfaenger_Beteiligter_Rolle Diese Fremdschlüsselbedingung hat dieselbe Struktur wie die bereits erläuterte Ref_Absender_Beteiligter_Rolle. Der Fremdschlüssel setzt sich hier aus den Angaben zum Empfänger eines Dokuments zusammen. <xs:keyref name="Ref_Empfaenger_Beteiligter_Rolle" refer="Schluessel_Beteiligter_Rollennummer"> <xs:selector xpath="tns:Sendungsdaten/tns:Dokument/ tns:Empfaenger"/> <xs:field xpath="/tns:Ref_Rollennummer" /> </xs:keyref> Abbildung 14: Fremdschlüsselbedingung für die Empfängerangabe (e) Ref_Empfaenger_Gericht Diese Fremdschlüsselbedingung hat dieselbe Struktur wie die bereits erläuterte Ref_Absender_Gericht. Der Fremdschlüssel setzt sich hier aus den Angaben zu einem als Empfänger eines Dokuments angegebenen Gericht zusammen. <xs:keyref name="Ref_Empfaenger_Instanz" refer="Schluessel_Instanz"> <xs:selector xpath="tns:Sendungsdaten/tns:Dokument/ tns:Empfaenger"/> <xs:field xpath="tns:Ref_Instanznummer" /> </xs:keyref> Abbildung 15: Fremdschlüsselbedingung für die Empfängerangabe von Gerichten und Staatsanwaltschaften 75903285 XJustiz Version 1.2 Technische Dokumentation 31 (f) Ref_Termin_Beteiligter_Rolle Diese Fremdschlüsselbedingung fordert, dass der Inhalt des Elements Ref_Rollennummer in der Auflistung der Beteiligten, die an einem Termin teilnehmen, übereinstimmen muss mit den entsprechenden Angaben eines im Instanzdokument unter der Rubrik Beteiligung aufgeführten Verfahrensbeteiligten. <xs:keyref name="Ref_Termin_Beteiligter_Rolle" refer="Schluessel_Beteiligter_Rollennummer"> Abbildung 16: Fremdschlüsselbedingung für Ladung von Beteiligten zu einem Termin (3) Eindeutigkeits-Eigenschaft Ähnliche Funktionen wie die Anweisung xs:key erfüllt die Anweisung xs:unique. Wie bei xs:key wird mit xs:unique festgelegt, dass eine bestimmte Kombination von Elementen eindeutige Inhalten enthalten muss. Der Unterschied besteht darin, dass ein mit xs:key spezifiziertes Element in jedem Fall vorkommen muss. Eine Spezifikation mit xs:unique lässt dagegen offen, ob ein davon betroffenes Element vorkommt oder nicht. Für den Fall, dass das betroffene Element vorkommt – und nur für diesen Fall – legt xs:unique fest, dass es eindeutig sein muss. Im Grundmodul gibt es zwei xs:unique-Spezifikationen: (a) Beteiligtennummer Optional kann das Gericht eine eindeutige Beteiligten-ID bekanntgeben. In der Regel ist dies nicht erforderlich, weil die Funktion einer solchen ID schon durch das Element Rollennummer erfüllt wird. Deshalb ist das Element Beteiligten-ID optional. Wenn es verwendet wird, sorgt die Eindeutigkeits-Eigenschaft dafür, dass jede Beteiligtennummer nur einmal im Instanzdokument vorkommt. 75903285 XJustiz Version 1.2 Technische Dokumentation 32 <xs:unique name="Eindeutigkeit_Beteiligtennummer"> <xs:selector xpath="tns:Verfahrensdaten/tns:Beteiligung/ tns:Beteiligter"/> <xs:field xpath="tns:Beteiligtennummer"/> </xs:unique> Abbildung 17: Eindeutigkeit der Beteiligtennummer (b) Rollenbezeichnung und laufende Nummer Die Kombination aus Rollenbezeichnung und laufender Nummer eines Beteiligten muss eindeutig sein. Das heißt beispielsweise: Wenn es in einem Verfahren mehrere Kläger gibt, muss jedem von ihnen eine eindeutige laufende Nummer zugewiesen werden (typischerweise "Kläger 1", "Kläger 2" usw.). Gibt es in dem Verfahren nur einen Kläger, bedürfte zur Einhaltung der unique-Bedingung eigentlich keiner laufenden Nummer. Das Feld Nr ist aber als Pflichtfeld ausgestaltet, so dass im Ergebnis auch einer nur einmal vorkommenden Beteiligungsart eine Nummer zugeteilt werden muss. <xs:unique name="Eindeutigkeit_Rollenbezeichnung_Nummer"> <xs:selector xpath="tns:Verfahrensdaten/tns:Beteiligung/tns:Rolle" /> <xs:field xpath="tns:Rollenbezeichnung/tns:Bezeichnung" /> <xs:field xpath="tns:Nr" /> </xs:unique > Abbildung 18: Eindeutigkeit der Rollenbezeichnung c) Konsequenzen für die Erstellung der Instanzdokumente Bei der Erstellung von Instanzdokumenten müssen alle mit xs:key, xs:keyref und xs:unique definierten Regeln beachtet und eingehalten werden. Jede Software, die XJustiz-Instanzdokumente erzeugt, muss deshalb Routinen bereitstellen, die die Einhaltung dieser Regeln gewährleisten – sei es, indem Programmierwerkzeuge eingesetzt werden, die schon von Haus aus entsprechende Funktionen bieten, sei es, indem eigens solche Funktionen programmiert werden. 75903285 XJustiz Version 1.2 Technische Dokumentation 33 5. Erweiterung und Einschränkung Die XML-Schema-Sprache erlaubt es, aus bereits definierten Typen durch Erweiterung oder Einschränkung neue abgeleitete Typen zu definieren. Hierzu dienen die Anweisungen xs:restriction und xs:extension. a) Erweiterung Die Anweisung xs:extension ermöglicht die Ableitung durch Erweiterung. Dabei werden neue Elemente oder Attribute zu einem bestehenden Inhaltsmodell aufgenommen. Durch xs:extension hinzugefügte Elemente werden an die Sequenz des eingeerbten Inhaltsmodells angehängt. b) Einschränkung Die Anweisung xs:restriction dient der Ableitung durch Einschränkung. Die Einschränkung kann beispielsweise darin bestehen, dass weniger Werte zugelassen werden als im Basistyp. Die Menge der durch den neuen Typ repräsentierten Werte ist mithin eine Untermenge der durch den Basistyp beschriebenen Werte. In XJustiz wird xs:restriction in den Wertelisten verwendet. Dort wird durch den Einsatz der einschränkenden Facette enumeration der Datentyp xs:string eingeschränkt, indem nur die in der Aufzählung (enumeration) enthaltenen Werte für gültig erklärt werden. Beispiel: Aus dem im Grundmodul definierten Basistyp WLT_String wird in der Werteliste für das Element Familienstand ein neuer Typ WL_Familienstand definiert, der nur noch einige wenige Stringwerte als Inhalt zulässt. 75903285 XJustiz Version 1.2 Technische Dokumentation 34 <xs:complexType name="WL_Familienstand"> <xs:simpleContent> <xs:restriction base="WLT_String"> <xs:enumeration value="ledig" /> <xs:enumeration value="verheiratet" /> <xs:enumeration value="verpartnert" /> <xs:enumeration value="verwitwet" /> <xs:enumeration value="geschieden" /> <xs:enumeration value="Partnerschaft aufgelöst" /> <xs:enumeration value="unbekannt" /> <xs:attribute name="wl_version" type="xs:string" use="required" fixed="1.0" /> <xs:attribute name="wl_fassung" type="xs:string" use="optional" default="0" /> </xs:restriction> </xs:simpleContent> </xs:complexType> Abbildung 19: Definition des Typs WL_Familienstand 6. Versionierung Um ein Instanzdokument zuverlässig überprüfen zu können, muss klar sein, welches XML-Schema als Maßstab heranzuziehen ist. Dies kann zu Schwierigkeiten führen, sobald es von einem Schema mehrere Versionen gibt. Um dieses Problem zu lösen, wurde den XJustiz-Schemata folgendes Versionierungskonzept zu Grunde gelegt: a) Versionierung der Schema-Dateien Jede zu XJustiz gehörige XML-Schema-Datei erhält eine eigene Versionsnummer, die in einem dafür vorgesehenen Attribut version hinterlegt wird. (1) Bestandteile der Versionsnummer In der ersten Version von XJustiz hat die Versionsnummer bei allen Schema-Dateien den Wert 1.0.0. Im Rahmen der späteren Weiterentwicklung kann die Versionierung für jede einzelne Datei separat erfolgen. Derzeit steht das Versionsattribut auf 1.2.0. 75903285 XJustiz Version 1.2 Technische Dokumentation 35 <xs:schema ... version="1.2.0" ...> Abbildung 20: Angabe der Versionsnummer im Kopf jeder Schema-Datei Die drei Stellen der Versionsnummer haben folgende Bedeutung: Die erste Stelle (1.x.x) identifiziert die Haupt-Version. Sie wird nur dann heraufgesetzt, wenn das Design von XJustiz grundlegende strukturelle Änderungen oder Erweiterungen erfährt. Die zweite Stelle (x.0.x) identifiziert die Unter-Version. Diese Stelle wird heraufgesetzt, wenn Änderungen an der Datenstruktur vorgenommen werden, die das grundlegende Design unberührt lassen. Die dritte Stelle (x.x.0) ist für die Beseitigung von Fehlern und die Vornahme kleinerer Änderungen ohne Auswirkungen auf die Datenstruktur vorgesehen. (2) Angabe der Versionsnummer im Dateinamen Die ersten beiden Stellen der Versionsnummer sind zugleich Bestandteil des Dateinamens jeder XML-Schema-Datei. Beispiel: Die Version 1.0.0 des Grundmoduls hat den Dateinamen xj_0000_grunddatensatz_1_0.xsd. Dieser Dateinamen wird bei Versionen mit derselben Datenstruktur (z.B. 1.0.1, 1.0.2 usw.) beibehalten. Eine spätere Version 1.1 erhält dagegen den Dateinamen xj_0000_grunddatensatz_1_1.xsd. Die derzeitige Bezeichnung lautet xj_0000_grunddatensatz_1_2.xsd. Eine Änderung des Dateinamens beim Grundmodul hat zur Folge, dass von allen Fachmodulen und Wertelisten, die auf die neue Version zugreifen sollen, ebenfalls eine neue Version angelegt werden muss, in der die xs:include-Befehle an den neuen Dateinamen angepasst sind. (3) Verwaltung auf dem Server Alle Versionen von XJustiz sind im Internet dauerhaft unter der Adresse http://www.xjustiz.de abrufbar. Damit die Versionshistorie nachvollzogen werden 75903285 XJustiz Version 1.2 Technische Dokumentation 36 kann und damit auch ältere Versionen auf Dauer zur Verfügung stehen, wird die Ablage auf dem Server wie folgt eingerichtet: Im Hauptverzeichnis ist der jeweils letzte Stand aller Unterversionen (1.0, 1.1 usw.) zu finden. Das Verzeichnis archiv enthält ergänzend ein vollständiges Archiv aller veröffentlichten Versionen einschließlich aller Fehlerbereinigungen. Für jede Unterversion (1.0, 1.1 usw.) existiert ein Verzeichnis. Dieses wiederum enthält für jede Fehlerbereinigungs-Version (1.0.0, 1.0.1, 1.0.2 usw.) ein separates Unterverzeichnis. Insgesamt ergibt sich damit folgende Ablagestruktur: Abbildung 21: Ablagestruktur auf dem öffentlich zugänglichen Server b) Wiedergabe der Versionsnummer in Instanzdokumenten In den Instanzdokumenten wird die Version der zu Grunde liegenden Schemata an mehreren Stellen und auf mehrere logischen Ebenen wiedergegeben: 75903285 XJustiz Version 1.2 Technische Dokumentation 37 (1) Bezugnahme auf das Fachmodul Die wichtigste Angabe ist bereits im Kopf jedes Instanzdokuments im Attribut xsi:SchemaLocation enthalten. Wie bereits unter II.3 beschrieben, muss hier das Fachmodul angegeben werden, auf dem das Instanzdokument beruht. Über den hier angegebenen Dateinamen sind die Haupt- und die Unterversion eindeutig bestimmt, und zwar sowohl für das Fachmodul als auch für das von diesem eingebundene Grundmodul nebst Wertelisten. <XJustiz_Daten ... xsi:schemaLocation="http://www.xjustiz.de xj_0100_basis_1_2.xsd"> Abbildung 22: Verweis auf das Fachmodul im Instanzdokument (2) Versionsnummer des Elements Grunddaten In der Definition des Datentyps T_Grunddaten ist ein Attribut XJustizversion vorgesehen, in welchem nochmals die ersten beiden Stellen der Versionsnummer angegeben werden. Ein Instanzdokument ist nur gültig, wenn es dieses Attribut aufweist und wenn dessen Inhalt mit dem in der Schema-Datei festgelegten Wert übereinstimmt. <Grunddaten XJustizVersion="1.2"> Abbildung 23: Versions-Attribut des Elements Grunddaten (3) Versionsnummer der Wertelisten Alle Datentypen, die eine abschließende Werteliste vorsehen (also alle Datentypen mit Präfix WL_, vgl. oben II.2.b)) enthalten ein zwingendes Attribut wl_version und ein optionales Attribut wl_fassung. (a) Attribut wl_version Das Attribut wl_version enthält die ersten beiden Stellen der Versionsnummer. Maßgeblich ist dabei nicht die Versionsnummer des Grundmoduls, sondern die Versionsnummer der Schema-Datei, in der die Werteliste definiert ist. Diese kann von der Versionsnummer des Grundmoduls abweichen. 75903285 XJustiz Version 1.2 Jedes Technische Dokumentation Instanzdokument muss dieses Attribut 38 zwingend enthalten. Das Instanzdokument ist nur gültig, wenn der Inhalt des Attributs identisch ist mit dem in der Schema-Datei der Werteliste vorgegebenen Wert. <Sachgebiet xsi:type="WL_Sachgebiet" wl_version="1.0" wl_fassung="0">Zivilsachen</Sachgebiet> Abbildung 24: Versions- und Fassungs-Attribut in Wertelisten (b) Attribut wl_fassung Das Attribut wl_fassung enthält die dritte Stelle der Versionsnummer. Dieses Attribut ist optional. Ein Instanzdokument, das dieses Attribut nicht enthält oder hier eine Fassung angibt, die nicht existiert, wird vom XML-Parser deshalb nicht beanstandet. In der Praxis sollte dennoch stets die korrekte Ziffer angegeben werden. Die Unterscheidung zwischen wl_version und wl_fassung wurde gewählt, um bei der Verwendung von Wertelisten ein Restmaß an Flexibilität zu bewahren. Würde die Versionsnummer bis zur letzten Stelle fest vorgegeben, hieße dies, dass jede Ergänzung einer Werteliste – zum Beispiel das Einfügen eines neuen Staatennamens in die Werteliste für Staaten – alle Fachmodule, die auf diese Werteliste Bezug nehmen, ebenfalls angepasst werden müssten. Der hier gewählte Ansatz ermöglicht es dagegen, solche Einfügungen vorzunehmen, ohne dass eine neue XJustiz-(Unter-)Version erstellt werden muss, und dennoch stets die Information zu haben, welche Fassung einer Werteliste dem Instanzdokument zu Grunde liegt. 7. Parser Zur Prüfung, ob ein Instanzdokument den Regeln des zugehörigen XML-Schemas entspricht, wird ein so genannter Parser eingesetzt. Solche Parser sind StandardProdukte und werden von verschiedenen Herstellern am Markt angeboten. Bei der 75903285 XJustiz Version 1.2 Technische Dokumentation 39 Entwicklung von XJustiz wurde hierzu das Produkt XML Spy, Version 2004 release 2 eingesetzt. 75903285