Entwicklung
Die Weiterentwicklung des XIHK-Standards erfolgt nach folgenden Regeln:
Sprache
Die Sprache im Kontext von XIHK ist Deutsch. Dies schließt insbesondere alle Tags und Attribute der Schema-Dateien ein.
Dokumentation
Dokumentation
Alle Dienstschnittstellen sind über WSDL beschrieben.
Ablageort von Schemadateien
Ablageort von Schemadateien
Ablageort für die Schemadateien ist
http://www.xihk.de/Informationsmodell_und_Services/XIHK_Informationsmodell/
Aufbau der XIHK-Schemastruktur
Aufbau der XIHK-Schemastruktur
Die Basis einer jeden XIHK-Schemastruktur baut auf den folgenden Schemadateien auf:
- Die Datei xihkAttributModell.xsd definiert Attributtypen. Diese bestehen ausschließlich aus SimpleType-Definitionen, die auf Standard XSD-Simpletypes aufbauen.
- Die Datei xihkEntitaetModell.xsd definiert Fachobjekttypen. Diese bestehen ausschließlich aus ComplexType-Definitionen, die vollständig auf den selbstdefinierten Attributtypen aufbauen.
- Die Datei xihkBeziehungModell.xsd definiert die Beziehungen der Fachobjekte untereinander. Diese bestehen ausschließlich aus ComplexType-Definitionen, die vollständig auf den definierten Fachobjekttypen aufbauen.
Jede o.a. XSD-Datei importiert ggfs. die XSD-Datei auf der sie aufbaut. Für komplexere XIHK-Datenstrukturen bildet somit die Datei xihkBeziehungModell.xsd den Ausgangspunkt für WSDL-Definitionen von Services im XIHK-Umfeld. Da ggfs. servicespezifische Anpassungen bzw. Ergänzungen möglich sind, gibt es zu jeder WSDL-Datei eine weitere XSD-Datei, die sogenannte servicespezifische Schema-Datei. Diese darf auch xihkEntitaetModell bzw. xihkAttributModell importieren.
Die Attribut-, Entitäten- und die Beziehungstypen bilden zusammen die Basis für XIHK-Dokumente. Das XIHK-Dokument WSDL ist die eigentliche Service-Definition und damit außenwirksam. Es bedient sich der Fachtypen, die sich der atomaren Typen bedienen über den Schema-Import-Mechanismus, z.B. referenziert ein XIHK-Dokument die Fachobjekt-Typen wie folgt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xihk="http://www.xIHK.de/basis/2007a/"
xmlns="http://www.xIHK.de/Service/Suche/2007b/"
targetNamespace="http://www.xIHK.de/Service/Suche/2007b/"
elementFormDefault="qualified">
<xs:import namespace="http://www.xIHK.de/basis/2007a/"
schemaLocation="Fachtypen.xsd" />
...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xihk="http://www.xIHK.de/basis/2007a/"
xmlns="http://www.xIHK.de/Service/Suche/2007b/"
targetNamespace="http://www.xIHK.de/Service/Suche/2007b/"
elementFormDefault="qualified">
<xs:import namespace="http://www.xIHK.de/basis/2007a/"
schemaLocation="Fachtypen.xsd" />
...
Definition von Schema-Typen
- Typen werden immer separat definiert und z.B. nicht innerhalb von Elementen anonym definiert.
-
Namen von ComplexType-Definitionen
- enden mit dem Postfix Typ
- beginnen mit einem Großbuchstaben.
- neue Wörter im Namen des ComplexType werden ohne Trennzeichen mit einem Großbuchstaben beginnend angehängt, z.B. PersonInFirmaTyp.
-
Namen von SimpleType-Definitionen
- haben kein spezielles Postfix
- beginnen mit Kleinbuchstaben
- neue Wörter im Namen des SimpleType werden ohne Trennzeichen mit einem Großbuchstaben beginnend angehängt, z.B. behinderungKennzeichen
Typen zu Fachobjekten sind Tag-Orientiert (nicht Attribut-Orientiert). Beispiel:
<xs:complexType name="VerweisEntitaetTyp">
<xs:annotation>
<xs:documentation>Verweis auf externe Systeme.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Wert" type="xihka:keytab" minOccurs="0">
<xs:annotation>
<xs:documentation>Verweis auf ein externes System.</xs:documentation>
<xs:appinfo>
<xihka:extension>
<xihka:keytab>1703</xihka:keytab>
</xihka:extension>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
Attribut-Typen zu Schlüsseltabellen
Fallweise wird entschieden zu welcher der nachfolgenden Kategorien eine Schlüsseltabelle gehört:
Fallweise wird entschieden zu welcher der nachfolgenden Kategorien eine Schlüsseltabelle gehört:
- 'Weltweit' aktzeptierte Schlüsseltabellen (zentrale Schlüsseltabellen): der Wertebereich dieser Typen wird nicht explizit aufgelistet, d.h. es wird der Key-Wert der Schlüsseltabelle übergeben. Die zugehörige Schlüsseltabelle wird innerhalb des appInfo-Bereichs der Typ-Definition über xihk:tabelle definiert. Beispiel:
...
<xs:element name="Wert" type="xihka:keytab" minOccurs="0">
<xs:annotation>
<xs:documentation>Verweis auf ein externes System.</xs:documentation>
<xs:appinfo>
<xihka:extension>
<xihka:keytab>1703</xihka:keytab>
</xihka:extension>
</xs:appinfo>
</xs:annotation>
</xs:element>
... - Kammerindividuelle Schlüsseltabellen werden mit einem menschlich lesbaren Text übergeben. Beispiel:
...
<xs:element name="Kennezeichen" type="xihka:bemerkung" minOccurs="0">
<xs:annotation>
<xs:documentation>Bezeichner für das Kennzeichen. Die GfI liefert den Kurztext aus der durch den
Bereich festgelegten kammerindividuellen Schlüsseltabelle.</xs:documentation>
</xs:annotation>
</xs:element>
... - Mischtabellen werden reduziert auf den zentral vorgegebenen Schlüsselbestand. Kammerindividuelle Ergänzungen werden nicht unterstützt. Beispiel:
...
<xs:element name="Verwendungszweck" type="xihka:keytab" minOccurs="0">
<xs:annotation>
<xs:documentation>Der Verwendungszweck der Anschrift. Es werden nur die zentral vorgegebenen
Verwendungszwecke unterstützt. Kammerindividuelle Einträge sind nicht gültig.</xs:documentation>
<xs:appinfo>
<xihka:extension>
<xihka:keytab>1090</xihka:keytab>
</xihka:extension>
</xs:appinfo>
</xs:annotation>
</xs:element>
...
XIHK-Service Definition
Werden Aggregationen verschiedener Typen als (Teil von) Eingabe- oder Ausgabestrukturen benötigt, so sollen diese in der Schema-Datei der Webservice-spezifischen Typen als eigener ComplexType definiert werden. Von anonymen Typen wird ausdrücklich kein Gebrauch gemacht.
Werden Aggregationen verschiedener Typen als (Teil von) Eingabe- oder Ausgabestrukturen benötigt, so sollen diese in der Schema-Datei der Webservice-spezifischen Typen als eigener ComplexType definiert werden. Von anonymen Typen wird ausdrücklich kein Gebrauch gemacht.
Das unten genannte Beispiel zeigt die Aggregation SperrErgebnisTyp, die als eigener ComplexType für die Ausgabestruktur verwendet wird.
<xs:complexType name="SperrErgebnisTyp">
<xs:sequence>
<xs:element name="konto" type="xihkb:JuristischePerson" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Von den Juristischen Personen wird nur die Identnummer zurueckgegeben.
Die Rueckgabe erfolgt indextreu zur Anfrage.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="meldungen" type="xihktt:Meldung" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:sequence>
<xs:element name="konto" type="xihkb:JuristischePerson" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Von den Juristischen Personen wird nur die Identnummer zurueckgegeben.
Die Rueckgabe erfolgt indextreu zur Anfrage.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="meldungen" type="xihktt:Meldung" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="AktualisiereMahnsperreResponse">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="ergebnis" type="tns:SperrErgebnisTyp" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="ergebnis" type="tns:SperrErgebnisTyp" />
</xs:sequence>
</xs:complexType>
</xs:element>
Versionierung
Die Versionierung wird im Version-Attribut des Schema-Tags angegeben und wird in jeder XIHK-Schema-Schicht separat verwaltet. Die Qualifizierung der Version erfolgt über den Namespace. Im o.g. Beispiel ist die Version für die Basistypen 2008a und für den Dienst 2008b.
Die Versionierung wird im Version-Attribut des Schema-Tags angegeben und wird in jeder XIHK-Schema-Schicht separat verwaltet. Die Qualifizierung der Version erfolgt über den Namespace. Im o.g. Beispiel ist die Version für die Basistypen 2008a und für den Dienst 2008b.