
Ein Datentyp ist ein Interface-Objekt, das die Struktur von Daten in Message-Typen im ES Repository definiert. Sie enthalten Elemente und Eigenschaften für die Typ-Definition. Datentypen werden in der XML Schema Definition Language (XSDL) definiert.
Es gibt folgende unterschiedliche Klassifikationen von Datentypen im ES Repository:
Core-Datentypen und aggregierte Datentypen
In der Spezifikation XML Naming and Design Rules des United Nations for Trade Facilitation and Electronic Business (UN/CEFACT XML NDR) wird beschrieben, wie syntaxfreie Komponenten, die nach ISO 15000-5 Core Components Technical Specification (CCTS) entwickelt worden sind, systematisch in XML Schema und XML-Instanzen dargestellt werden. Die Definition von Core-Datentypen und aggregierten Datentypen richtet sich nach diesen Standards. Der Datentyp-Editor bietet zusätzlich zu den Sprachelementen von XML-Schema auf CCTS abgestimmte Attribute für die Definition dieser Datentypen an. Diese können in der weiteren Verwendung des Datentyps ausgewertet werden. In Kombination mit einem Vereinheitlichungs- und Standardisierungsprozess erleichtert dies beispielsweise die Entwicklung unternehmensübergreifender Prozesse oder die Entwicklung von Benutzungsoberflächen.
Frei modellierter Datentyp
Frei modellierte Datentypen unterstützen nur Sprachelemente von XML-Schema.
Message-Typen im ES Repository können auf frei modellierte Datentypen, auf Core-Datentypen und auf aggregierte Datentypen verweisen.
XML Schema ist unabhängig von der gewählten Klassifikation die Grundlage zur Beschreibung von Datentypen. Die folgenden Abschnitte beschreiben einige Grundlagen hierzu.
XSD-Datentypkategorien
XML-Schema unterscheidet folgende Datentypkategorien:
|
Kategorie |
Bedeutung |
Beispiele |
|
Built-In Type |
Eingebaute Datentypen sind im Sprachumfang von XML Schema enthalten und verwenden den Präfix xsd . (Deren Unterscheidung in primitive und abgeleitete Datentypen ist bei der Definition von Datentypen nicht von Bedeutung.) XML Schema definiert für jeden eingebauten Datentyp auch einen Wertebereich. |
xsd:string xsd:decimal xsd:integer |
|
Simple Type |
Einfache Datentypen verfeinern eingebaute Datentypen, zum Beispiel indem die Länge eines Strings begrenzt wird oder ein spezifischer Wertebereich vorgegeben wird. Sie enthalten wie die eingebauten Datentypen keine weiteren Elemente. |
<simpleType name=germanPhoneNumber base=string> <pattern value=?\d{4}?/?\d{6} /> </simpleType> |
|
Komplexer Typ |
Datentypen, die weitere Elemente und Attribute enthalten können. Elemente und Attribute können wiederum auf eingebaute, einfache, komplexe oder globale Datentypen verweisen. Durch diese Möglichkeit können große komplexe Datentypen mit Hilfe von kleineren komplexen Datentypen aufgebaut werden. |
<complexType name=person> <element name=firstname type=string /> <element name=lastname type=string /> </complexType> |
|
Komplexer Typ mit SimpleContent |
Komplexe Typen mit simpleContent beschreiben einen Datentyp, dessen Wurzelelement einen textuellen XSD-Typ hat (beispielsweise xsd:string), der aber ansonsten nur Attribute und keine Unterelemente hat. |
Elemente und Attribute
Um komplexe Datentypen in XML Schema zu beschreiben verwenden Sie Elemente und Attribute:
|
Knotentyp |
Verwendung |
Beispiel-Instanz |
|
Element |
Aufbau von strukturierten Datentypen. Elemente, die einen Typ haben, können keine Unterelemente enthalten. |
<myElem> <f1> Wert von f1 </f1> <f2> Wert von f2 </f2> </myElem> |
|
Attribut |
Ergänzung von Elementen um Attribute. Attribute können generell keine Unterknoten haben. |
<myElem myAttr = Attribut-Wert > Element-Wert </myElem> |
Der Unterschied zwischen Elementen und Attributen ist der, dass Attribute keine Unterknoten haben können und dass dasselbe Attribut nicht mehrfach in einem Element verwendet werden kann.
Mehrfach auftretende Elemente
XML Schema kennt keine Tabellen, erlaubt aber statt dessen die Definition von Elementen, die mehrfach in einem Schema auftreten können (maxOccurs=unbounded). Je nach Zielsprache generiert die Proxy-Generierung entweder einen Tabellentyp mit einer Struktur für den Zeilentyp (ABAP) oder Klassen für den Zugriff mit Hilfe einer Liste (Java).
Facetten
Mit Hilfe von Facetten können Sie den Wertebereich eines Datentyps im XML-Schema auf eine bestimmte Teilmenge einschränken. Dadurch können Sie genau feststellen, welcher Wert in einem bestimmten Fall für einen einfachen Datentyp, ein Element oder ein Attribut erwartet wird. Beispiel:
Eine Telefonnummer (Anwendung eines Patterns auf einen String)
Eine Auswahl an zulässigen Werten, zum Beispiel zur Klassifizierung der Beförderungsklasse bei einem Flug (Anwendung einer Enumeration)
Weitere Informationen: XSD-Editor (frei modellierte Datentypen)
Referenzierbarkeit von Datentypen
Sie können Datentypen geschachtelt aufbauen, indem Sie von einem komplexen Datentyp andere Datentypen referenzieren. Allerdings muss dabei gewährleistet sein, dass referenzierender und referenzierter Datentyp zusammen ausgeliefert werden, da sonst ein Teil der Datentyp-Definition fehlen würde. Aus diesem Grund gibt es folgende Beschränkungen für die Verwendung von Datentypen (weitere Informationen: Objektverweise):
|
Kategorie |
Lässt sich referenzieren in |
|---|---|
|
Built-In Type |
Alle Software-Komponentenversionen |
|
Simple Type |
der gleichen oder unterliegenden Software-Komponentenversion wie der referierende frei modellierte Datentyp. |
|
Komplexer Typ |
der gleichen oder unterliegenden Software-Komponentenversionen wie der referierende frei modellierte Datentyp. |
|
Core-Datentyp |
der gleichen oder unterliegenden Software-Komponentenversion wie der referierende aggregierte Datentyp. |
|
Aggregierter Datentyp |
der gleichen oder unterliegenden Software-Komponentenversion wie der referierende aggregierte Datentyp. |
Sie können Datentypen nicht rekursiv aufbauen, das heißt, Referenzen vom Typ als auch transitive Referenzen vom Typ sind nicht erlaubt.