Bei dieser Umsetzung wird aus einem UML-Paket, das als Quelle dient, durch eine Umwandlung der entsprechenden Klassen im Paket in Schema-Elemente ein XML-Schema generiert. Das generierte Schema wird in einem Ordner mit der Bezeichnung schema in dem Projekt gespeichert, das Sie als Umsetzungsziel angeben. Die Datei mit dem Schema wird mit dem Namen des Pakets und der Erweiterung .xsd bezeichnet.
Wenn das jeweilige UML-Paket z. B. mit dem Namen PurchaseOrder bezeichnet wird und das Paket eine Klasse mit dem Namen Address enthält, wird nach einer Umsetzung mit diesem Paket als Quelle das folgende XML-Schema generiert.
Wenn Sie ein UML-Modell (mit mindestens einem Paket) als Quelle wählen, wird bei dieser Umsetzung für jedes Paket des Modells, das das Stereotyp <<XSDProfile::schema>> oder das Schlüsselwort schema aufweist, ein XML-Schema generiert. Wenn Sie den Wert für die Umsetzungseigenschaft Process unmarked packages auf true setzen, wird bei der Umsetzung für jedes Paket ein XML-Schema generiert.
Zum Softwarepaket gehören eine Reihe von UML-Beispielmodellen, die Sie als Quelle für die UML-in-XSD-Umsetzung verwenden können. Nach der Installation der UML-in-XSD-Umsetzung müssen Sie die Beispiele aus dem Installationsverzeichnis in Ihren Arbeitsbereich kopieren. Wenn Sie die Software z. B. im Verzeichnis 'RSA/eclipse' installiert haben, befinden sich die Beispiele im Ordner 'RSA/eclipse/plugins/com.ibm.xtools.transform.samples.uml2.xsd/examples'. So kopieren Sie die Beispiele in Ihren Arbeitsbereich:
HINWEIS: Beim Öffnen eines Beispielmodells wird u. U. in einem Dialogfenster darauf hingewiesen, dass das Modell eine veraltete Version des Profils 'XSDProfile' verwendet und Sie eine Migration zum neuen Profil vornehmen können. Klicken Sie in diesem Fall auf Ja, um die Migration zur neuen Version des Profils vorzunehmen.
So führen Sie die Umsetzung aus:
Führen Sie bei Bedarf folgende Schritte aus:
Diese Schritte sind notwendig, wenn Sie ein UML-Modell eines komplexeren XML-Schemas erstellen möchten. Weitere Informationen zum Modellieren von XML-Schemas in UML können Sie dem Abschnitt XML-Schema in UML modellieren: Bewährte Verfahren entnehmen.
Bei der Umsetzung werden die XSD-Schemadateien generiert und im angegebenen Projekt in einem Ordner mit dem Namen schema gespeichert. Das generierte Schema können Sie sich in einer Navigatorsicht ansehen.
Sie können ein UML-Modell auch mit Hilfe eines XSD-Schablonenmodells erstellen. Diese Vorgehensweise hat den Vorteil, dass die erforderliche Modellbibliothek XSD-Datentypen bereits importiert ist und das XSD-Profil auf das/die Paket(e) angewendet wird.
Bei der Umsetzung werden die XSD-Schemadateien generiert und im angegebenen Projekt in einem
Ordner mit dem Namen schema
gespeichert.
Das generierte Schema können
Sie sich in einer Navigatorsicht ansehen.
Bei dieser Umsetzung werden UML-Modelle mit mindestens einem UML-Paket als Quelle akzeptiert.
Bei dieser Umsetzung kann ein Projekt als Ziel angegeben werden.
Bei dieser Umsetzung werden folgende Umsetzungseigenschaften definiert:
Eigenschaft | Beschreibung |
Zielnamespace | Der Zielnamespace für das bei der Umsetzung generierte Schema. Zulässige Werte für diese Eigenschaft sind Zeichenfolgen, z. B. http://www.ibm.com/SampleXSDTransformation. |
Präfix des Zielnamespace | Das Präfix für den Zielnamespace des bei der Umsetzung generierten Schemas. Zulässige Werte für diese Eigenschaft sind Zeichenfolgen, z. B. sxt. |
UML-Klasse ohne Stereotyp oder Schlüsselwort verarbeiten |
Diese Eigenschaft gibt an, ob bei der Umsetzung UML-Klassen verarbeitet werden, denen kein Stereotyp oder Schlüsselwort zugeordnet ist. Zulässige Werte für diese Eigenschaft sind wahr und falsch. Standardmäßig ist der Wert dieser Eigenschaft auf wahr gesetzt, und es werden bei der Umsetzung alle Klassen in einem Paket der höchsten Ebene verarbeitet. (Verschachtelte Pakete werden bei der Umsetzung zurzeit nicht bearbeitet.) Wenn Sie die Umsetzung nicht auf alle Klassen eines Pakets anwenden müssen, müssen Sie den Wert dieser Eigenschaft auf falsch setzen, und auf die Klassen, die umgesetzt werden sollen, die entsprechenden Stereotype des Profils XSDProfile oder die entsprechenden Schlüsselwörter anwenden. |
UML-Paket ohne Stereotyp oder Schlüsselwort verarbeiten |
Diese Eigenschaft bestimmt, ob bei der Umsetzung UML-Pakete verarbeitet werden, denen kein Stereotyp oder Schlüsselwort zugeordnet ist. Zulässige Werte für diese Eigenschaft sind wahr und falsch. Standardmäßig ist der Wert dieser Eigenschaft auf wahr gesetzt, und es werden bei der Umsetzung alle Pakete der höchsten Ebene verarbeitet. (Verschachtelte Pakete werden bei der Umsetzung zurzeit nicht bearbeitet.) Wenn Sie die Umsetzung nicht auf alle Pakete der höchsten Ebene eines Modells anwenden müssen, müssen Sie den Wert auf falsch setzen, und das entsprechende Stereotyp <<schema>> des Profils XSDProfile oder das Schlüsselwort schema auf alle Pakete anwenden, die umgesetzt werden sollen. |
Verschachtelte Klasse implizit in anonymen Typ konvertieren |
Diese Eigenschaft bestimmt, ob eine verschachtelte Klasse bei der Umsetzung in einen anonymen Typ konvertiert wird, wenn keine explizite Assoziation zwischen der Verschachtelungsklasse und der verschachtelten Klasse vorliegt. Zulässige Werte für diese Eigenschaft sind wahr und falsch. Standardmäßig ist der Wert dieser Eigenschaft auf falsch gesetzt, und verschachtelte Klassen werden bei der Umsetzung nur in anonyme Typen konvertiert, wenn eine Assoziation zur Verschachtelungsklasse vorliegt. Ist der Wert dieser Eigenschaft auf wahr gesetzt, werden alle verschachtelten Klassen in anonyme Typen konvertiert. Dabei entsprechen die XSD-Typen den verschachtelten Klassen, die die Elemente enthalten, deren Typen diese anonymen Typen sind. Wenn Sie eine implizite Generierung des anonymen Typs konfigurieren, indem Sie den Wert dieser Eigenschaft auf wahr setzen, sind verschiedene Einschränkungen zu beachten. Diese Einstellung sollte deshalb nur in seltenen Fällen verwendet werden. |
Bei der von der UML-in-XSD-Umsetzung unterstützten Modellierung von komplexeren XML-Schemas in UML wird zum Abbilden der XML-Schemaelemente eine kleine Untergruppe von UML-Konstrukten verwendet. Diese Untergruppe enthält folgende UML-Elemente: Klasse, Eigenschaft, Generalisierung, Assoziation und Abhängigkeit. Zum Abbilden von XML-Schemaelementen wie einfacher Typ, komplexer Typ, Attribut und Element, wiederverwendbare Gruppen etc. mit Hilfe dieser Untergruppe müssen Sie das XSD-Profil auf das UML-Quellenmodell anwenden und das Modell mit Hilfe der Stereotype des Profils auszeichnen und die Eigenschaften der Stereotype auf die entsprechenden Werte setzen.
Das folgende Klassendiagramm veranschaulicht das UML-Modell des XSD-Profils.
Die nachfolgende Tabelle enthält Erläuterungen zu den Stereotypen und ihren Eigenschaften.
Stereotyp | Erweiterung der Metaklasse | Eigenschaften | Erläuterungen |
annotation | Kommentar |
kind language source |
Der Kommentar wird in eine Anwendungsinformations- oder eine Dokumentationsanmerkung konvertiert. Die Eigenschaft kind bestimmt die Art der Anmerkung: documentation oder appinfo. Die Eigenschaften language und source geben die Sprache an, in der das Dokument verfasst ist, und entsprechend die Quelle für weitere Dokumentationen. |
attribute | Eigenschaft (der Klasse) |
form use |
Die UML-Eigenschaft wird in ein Attribut in einem komplexen Typ oder eine Attributgruppe konvertiert, wenn der Typ ein einfacher Typ und die Multiplizität [0..1] ist. Die Stereotypeigenschaft form legt fest, ob der Attributname im Instanzdokument qualifiziert sein muss. Zulässige Werte sind Qualifiziert, Nicht qualifiziert oder Standard. Ist der Wert auf Standard gesetzt, wird der Standardwert attributeFormDefault von schema verwendet, der standardmäßig den Wert Nicht qualifiziert annimmt. Die Eigenschaft use legt fest, ob das Attribut optional oder erforderlich ist. Zulässige Werte sind Optional, Untersagt oder Erforderlich. Standardmäßig nimmt diese Eigenschaft den Wert Optional an. Der Wert Untersagt wird bei der aktuellen Implementierung ignoriert. |
attributeGroup | Klasse | Die Klasse wird in eine Attributgruppe konvertiert. | |
complexType | Klasse |
anonymous block final modelGroup maxOccurs minOccurs mixed |
Die Klasse wird in einen komplexen Typ konvertiert. Die Eigenschaft anonymous legt fest, ob eine Typendeklaration als komplexer Typ der höchsten Ebene im Schema erstellt wird. Zulässige Werte für diese Eigenschaft sind true oder false. Ist der Wert auf true gesetzt, wird keine Typendeklaration generiert und Verweise auf diese Klasse werden in eine Attribut- oder Elementdeklaration mit 'anonymous' als Attribut- bzw. Elementtyp konvertiert. Diese Eigenschaft nimmt standardmäßig den Wert false an. Die Eigenschaft block legt fest, ob die Typensubstitution blockiert werden soll. Zulässige Werte: #all, extension, restriction oder eine durch Leerzeichen getrennte Liste von extension und restriction. Der Wert #all verhindert eine Substitution des jeweiligen Typs durch abgeleitete Typen, extension verhindert eine Substitution des jeweiligen Typs durch Erweiterungen dieses Typs, und restriction verhindert eine Substitution des jeweiligen Typs durch Einschränkungen dieses Typs. Die Liste "extension restriction" bewirkt dasselbe wie #all. Ist die Eigenschaft block nicht angegeben, nimmt die Eigenschaft standardmäßig den Wert blockDefault von schema an. Die Eigenschaft final legt fest, ob andere Typen von diesem Typ abgeleitet werden können. Zulässige Werte sind #all oder eine Liste von (extension oder restriction). Ist diese Eigenschaft auf #all gesetzt, ist keine Ableitung möglich. Eine gezieltere Steuerung ist möglich, indem der Wert auf eine durch Leerzeichen getrennte Liste des Schlüsselworts restriction oder extension gesetzt wird. Standardmäßig nimmt diese Eigenschaft den Wert finalDefault von schema an. Die Eigenschaft modelGroup gibt das Inhaltsmodell des Typs an. Zulässige Werte für modelGroup sind Alle, Auswahl oder Sequenz. Der Standardwert ist Sequenz. Einschränkung: Ist die Eigenschaft modelGroup auf Alle gesetzt, muss die Eigenschaft anonymous auf false gesetzt sein. Andernfalls tritt eine ungültige Integritätsbedingung auf. Die Werte für minOccurs und maxOccurs geben an, wie oft die Gruppe Sequenz und die Gruppe Auswahl im komplexen Typ mindestens bzw. höchstens vorkommen können. Bei einer Modellgruppe mit dem Wert Alle muss maxOccurs auf 1 und minOccurs auf 0 oder 1 gesetzt sein. Die Boolesche Eigenschaft mixed gibt an, ob beim komplexen Typ ein gemischter Inhalt zulässig ist. Diese Eigenschaft nimmt standardmäßig den Wert false an. |
element | Eigenschaft (der Klasse) |
block final form nillable |
Die Eigenschaft wird in ein Element konvertiert. Die Eigenschaft final kann nur auf globale Elemente angewendet werden, nicht auf lokale. Diese Eigenschaft legt fest, ob andere Typen aus dem jeweiligen Typ abgeleitet werden können. Zulässige Werte für diese Eigenschaft sind #all oder eine Liste von (extension | restriction). Ist diese Eigenschaft auf #all gesetzt, ist keine Ableitung möglich. Eine gezieltere Steuerung ist möglich, indem der Wert auf eine durch Leerzeichen getrennte Liste des Schlüsselworts restriction oder extension gesetzt wird. Standardmäßig nimmt diese Eigenschaft den Wert finalDefault von schema an. Die Stereotypeigenschaft form legt fest, ob der Elementname im Instanzdokument qualifiziert sein muss. Zulässige Werte sind Qualifiziert, Nicht qualifiziert oder Standard. Ist der Wert auf Standard gesetzt, wird der Standardwert elementFormDefault von schema verwendet, der standardmäßig den Wert Nicht qualifiziert annimmt. Die Boolesche Eigenschaft nillable legt fest, ob xsi:nil in der Instanz des jeweiligen Elements verwendet werden kann. Diese Eigenschaft nimmt standardmäßig den Wert false an. |
enumeration | Klasse | anonymous |
Die Klasse wird in eine XSD-Aufzählung konvertiert, wenn die Klasse eine Generalisierungsbeziehung zu einer anderen Klasse aufweist, die einen einfachen Typ darstellt. Die Eigenschaft anonymous legt fest, ob eine Typendeklaration als einfacher Typ der höchsten Ebene mit Aufzählungsfacetten im Schema erstellt wird. Zulässige Werte für diese Eigenschaft sind true oder false. Ist der Wert auf true gesetzt, wird keine Typendeklaration generiert und Referenzen auf diese Klasse werden in eine Attribut- oder Elementdeklaration mit 'anonymous' als Attribut- bzw. Elementtyp konvertiert. Diese Eigenschaft nimmt standardmäßig den Wert false an. |
global | Klasse | |
Eine Klasse mit diesem Stereotyp wird in eine Element- bzw. Attributdeklaration der höchsten Ebene konvertiert. Die Klasse darf nur eine einzige Eigenschaft aufweisen. Weist die Eigenschaft das Stereotyp oder Schlüsselwort <<attribute>> auf, wird die Klasse in ein Attribut der höchsten Ebene konvertiert. Andernfalls wird daraus ein Element der höchsten Ebene. Der Element- bzw. Attributname entspricht dem Namen der Eigenschaft, und der Typ ist der Typ der Eigenschaft. |
listOf | Abhängigkeit | Der Client der Abhängigkeit wird in eine XSD-Liste konvertiert, deren Elementtyp der Supplier der Abhängigkeit ist. Zwischen zwei Klassen, die jeweils einen einfachen Typ darstellen, kann nur eine einzige derartige Abhängigkeit vorliegen. | |
modelGroup | Klasse |
anonymous modelGroup |
Die Klasse wird in eine wiederverwendbare benannte Modellgruppe mit dem Inhaltsmodell Sequenz konvertiert. Die Eigenschaft anonymous legt fest, ob eine Gruppendeklaration der höchsten Ebene im Schema erstellt wird. Zulässige Werte für diese Eigenschaft sind true oder false. Ist diese Eigenschaft auf true gesetzt, wird keine Gruppendeklaration generiert und Referenzen auf diese Klasse werden in eine verschachtelte Modellgruppe konvertiert. Ist der Wert auf 'false' gesetzt, werden Referenzen auf die Klasse in Modellgruppenreferenzen konvertiert. Diese Eigenschaft nimmt standardmäßig den Wert false an. Die Eigenschaft modelGroup bestimmt das Inhaltsmodell der Gruppe. Zulässige Werte für modelGroup sind Alle, Auswahl oder Sequenz. Der Standardwert ist Sequenz. Einschränkung : Ist die Eigenschaft modelGroup auf Alle gesetzt, muss die Eigenschaft anonymous auf false gesetzt sein. Andernfalls tritt eine ungültige Integritätsbedingung auf. |
schema | Paket |
attributeFormDefault blockDefault elementFormDefault finalDefault targetNamespace targetNamespacePrefix |
Das Paket und der Paketinhalt werden in ein XSD-Schema konvertiert. Der Paketname wird zum Namen des Schemas (der Datei). Die Eigenschaft attributeFormDefault gibt an, ob lokale Attributdeklarationen qualifizierte Namen verwenden sollten. Zulässige Werte für diese Eigenschaft sind Qualifiziert oder Nicht qualifiziert. Der Standardwert ist Nicht qualifiziert. Die Eigenschaft blockDefault definiert den Standardwert für das Attribut block für komplexe Typendeklarationen und Elementdeklarationen. Das Attribut block legt fest, ob die Element- oder Typensubstitution blockiert werden soll. Zulässige Werte: #all oder eine durch Leerzeichen getrennte Liste von (extension, restriction und/oder substitution).
Die Eigenschaft elementFormDefault
gibt an, ob bei lokalen Elementdeklarationen qualifizierte Namen verwendet werden
sollen.
Zulässige Werte für diese Eigenschaft sind
Qualifiziert
oder
Nicht qualifiziert.
Der Standardwert ist
Nicht qualifiziert. Die Eigenschaft finalDefault bestimmt den Standardwert für das Attribut final in Typendeklarationen für den komplexen/einfachen Typ und Elementdeklarationen. Das Attribut final bestimmt, ob eine Typenableitung verhindert werden soll. Zulässige Werte: #all oder eine durch Leerzeichen getrennte Liste von (extension, restriction, substitution, list und/oder union). Wenn Sie die Werte für targetNamespace und targetNamespacePrefix definieren, setzen diese Werte die von Ihnen möglicherweise definierten Werte für die entsprechenden Umsetzungseigenschaften (Zielnamespace und Präfix des Zielnamespace) außer Kraft. |
simpleType | Klasse |
anonymous final fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace |
Die Klasse wird in einen einfachen Typ konvertiert, wenn sie über eine Generalisierung für einen integrierten XSD-Datentyp, einen anderen einfachen Typ oder einen XSD-Aufzählungstyp verfügt. Zulässige Werte für die Eigenschaft anonymous sind true oder false. Ist diese Eigenschaft auf 'true' gesetzt, wird die Klasse wie ein der anonyme Typ behandelt, und es wird keine Typendeklaration der höchsten Ebene generiert. Die Eigenschaft final legt fest, ob andere Typen von diesem Typ abgeleitet werden können. Zulässige Werte sind #all oder eine Liste von (extension, restriction, list oder union). Ist diese Eigenschaft auf #all gesetzt, ist keine Ableitung möglich. Eine gezieltere Steuerung ist möglich, indem der Wert auf eine durch Leerzeichen getrennte Liste des Schlüsselworts restriction, extension, list oder union gesetzt wird. Die weiteren Eigenschaften stellen die vom XSD-Schema definierten Facetten dar. Mit diesen Facetten können Sie gültige Wertebereiche definieren, die Länge und Genauigkeit der Werte einschränken, reguläre Ausdrücke angeben, denen gültige Werte entsprechen müssen, oder die Verarbeitung von Leerzeichen bei einfachen Typen definieren, die durch Einschränkungen aus integrierten XSD-Typen abgeleitet werden. Weitere Informationen hierzu können Sie der Tabelle Bedeutung der Facetten entnehmen. Es können nicht alle Facetten auf alle einfachen Typen angewendet werden. Für einfache Typen, die aus string, normalizedString oder token abgeleitet sind, können beispielsweise nur die Facetten length, minLength, maxLength, pattern und whitespace verwendet werden. Weitere Informationen hierzu können Sie der Tabelle Einfache Typen und anwendbare Facetten entnehmen. |
unionOf | Abhängigkeit | Der Client der Abhängigkeit wird in eine XSD-Union konvertiert, in der der Supplier der Abhängigkeit enthalten ist. Eine Klasse, die einen einfachen Typ darstellt, kann mehrere derartige Abhängigkeiten zu verschiedenen Klassen (einfacher Typ) aufweisen. | |
wildcard | Eigenschaft (der Klasse) | processContents namespace |
Die UML-Eigenschaft wird in ein Element "wildcard" konvertiert. Wenn die Eigenschaft über das Schlüsselwort, neben wildcard und attribute oder das Stereotyp <<attribute>> verfügt, wird sie in ein Attribut "wildcard" konvertiert. Die Eigenschaft processContents legt fest, wie streng die beim Ersetzen verwendeten Attribute bzw. Elemente geprüft werden. Ist diese Eigenschaft auf skip gesetzt, wird vom Schemaprozessor keine Prüfung durchgeführt. Bei dem Wert lax prüft der Schemaprozessor Attribute bzw. Elemente, für die Deklaration vorliegen, und löst bei ungültigen Werten eine Fehlermeldung aus. Bei dem Wert strict versucht der Schemaprozessor ein dem Namespace zugeordnetes Schemadokument zu finden und prüft alle Attribute bzw. Elemente. Diese Eigenschaft nimmt standardmäßig den Wert strict an. Die Eigenschaft namespace gibt den/die Namespace(s) an, in dem/denen sich die beim Ersetzen verwendeten Attribute bzw. Elemente möglicherweise befinden. Zulässige Werte sind (##any, ##other, Liste von anyURI, ##targetNamespace und/oder ##local). Ist diese Eigenschaft auf ##any gesetzt, können sich die beim Ersetzen verwendeten Elemente bzw. Attribute in einem beliebigen oder keinem Namespace befinden. Bei dem Wert ##other müssen sich die beim Ersetzen verwendeten Elemente bzw. Attribute in einem Namespace befinden. Dabei kann es sich um einen beliebigen Namespace handeln, der nicht dem Zielnamespace des Dokuments entspricht. Ist für das Schemadokument kein Zielnamespace definiert, können sich die beim Ersetzen verwendeten Elemente bzw. Attribute in einem beliebigen Namespace befinden, Attribute bzw. Elemente ohne Namespace sind nicht zulässig. Darüber hinaus besteht die Möglichkeit, die Eigenschaft auf eine durch Leerzeichen getrennte Werteliste mit allen folgenden Elementen oder einer beliebigen Auswahl der folgenden Elementen zu setzen: ##targetNamespace, #local oder bestimmte Namespaces. ##targetNamespace gibt an, dass sich die beim Ersetzen verwendeten Elemente bzw. Attribute im Zielnamespace des Schemadokuments befinden können, und ##local gibt an, dass die Elemente bzw. Attribute ohne Namespace beim Ersetzen verwendet werden können. |
Wenn die Elemente bei dem von Ihnen modellierten Schema nicht detailliert angegeben werden müssen, empfiehlt sich unter Umständen, an Stelle von Stereotypen Schlüsselwörter zu verwenden. Die von der UML-in-XSD-Umsetzung unterstützten Schlüsselwörter werden in der folgenden Tabelle erläutert.
Schlüsselwort | Gültig für UML-Element | Erläuterungen |
annotation | Kommentar | Der Kommentar wird in eine Anmerkung "appinfo" oder eine Anmerkung "documentation" konvertiert. |
attribute | Eigenschaft (der Klasse) | Die Eigenschaft wird in ein Attribut in einem komplexen Typ umgesetzt, wenn die Multiplizität der Eigenschaft [0..1] ist. |
attributeGroup | Klasse | Die Klasse wird in eine Attributgruppe konvertiert. |
complexType | Klasse | Die Klasse wird in einen komplexen Typ konvertiert. |
element | Eigenschaft | Die Eigenschaft wird in ein Element eines komplexen Typs konvertiert. |
enumeration | Klasse | Die Klasse wird in eine XSD-Aufzählung konvertiert, wenn die Klasse eine Generalisierungsbeziehung zu einer anderen Klasse aufweist, die einen einfachen Typ darstellt. |
global | Klasse |
Eine Klasse mit diesem Schlüsselwort wird in eine Element- bzw. Attributdeklaration der höchsten Ebene konvertiert. Die Klasse darf nur eine einzige Eigenschaft aufweisen. Verfügt die Eigenschaft über das Stereotyp <<attribute>> oder das Schlüsselwort attribute, wird die Klasse in ein Attribut der höchsten Ebene konvertiert. Andernfalls wird daraus ein Element der höchsten Ebene. Der Element- bzw. Attributname wird vom Namen der Eigenschaft abgeleitet, der Typ vom Typ der Eigenschaft. |
listOf | Abhängigkeit zwischen zwei Klassen, die jeweils einen einfachen Typ darstellen. | Der Client der Abhängigkeit wird in eine XSD-Liste konvertiert, deren Elementtyp der Supplier der Abhängigkeit ist. Zwischen zwei Klassen, die jeweils einen einfachen Typ darstellen, kann nur eine einzige derartige Abhängigkeit vorliegen. |
modelGroup | Klasse | Die Klasse wird in eine wiederverwendbare benannte Modellgruppe mit dem Inhaltsmodell Sequenz konvertiert. |
schema | Paket |
Das Paket und der Paketinhalt werden in ein XSD-Schema konvertiert. Der Paketname wird zum Namen des Schemas (der Datei). Wenn Sie das Schlüsselwort schema verwenden, müssen Sie den Zielnamespace und das Präfix für den Zielnamespace festlegen, indem Sie die Umsetzungseigenschaften Zielnamespace und Präfix des Zielnamespace jeweils auf den entsprechenden Wert setzen. |
simpleType | Klasse | Die Klasse wird in einen einfachen Typ konvertiert, wenn sie über eine Generalisierung für einen integrierten XSD-Datentyp oder einen anderen einfachen Typ verfügt. |
unionOf | Abhängigkeit zwischen zwei Klassen, die jeweils einen einfachen Typ darstellen. | Der Client der Abhängigkeit wird in eine XSD-Union konvertiert, in der der Supplier der Abhängigkeit enthalten ist. Eine Klasse, die einen einfachen Typ darstellt, kann mehrere derartige Abhängigkeiten zu verschiedenen Klassen (einfacher Typ) aufweisen. |
wildcard | Eigenschaft |
Die UML-Eigenschaft wird in ein Element "wildcard" konvertiert. Wenn die Eigenschaft neben dem Schlüsselwort wildcard über das Schlüsselwort attribute verfügt, wird sie in ein Attribut "wildcard" konvertiert. |
Die Empfehlung für XML-Schemata beinhaltet 44 einfache Typen. Diese einfachen Typen stellen gängige Datentypen wie Zeichenfolgen, Zahlen, Datums- und Zeitangaben dar und beinhalten auch Typen für die in XML 1.0 verwendeten Attributtypen. XSD stellt darüber hinaus zwölf Facetten für Einschränkungen bereit, mit denen Sie gültige Wertebereiche für einfache Typen angeben, die Länge und Genauigkeit der zugehörigen Werte einschränken, eine Liste gültiger Werte angeben oder reguläre Ausdrücke angeben können, denen gültige Werte entsprechen müssen.
Sie können neue einfache Typen aus den integrierten Typen oder anderen einfachen Typen ableiten, indem Sie die zulässigen Werte mit Hilfe von Facetten auf die entsprechenden Werte beschränken. Dazu müssen Sie über eine Repräsentation der integrierten Typen verfügen, die bei den UML-Modellen verfügbar sind.
Die integrierten einfachen Typen sind als Klassen modelliert und stehen über die Modellbibliothek XSD-Datentypen zur Verfügung. Sie müssen die Bibliothek XSD-Datentypen in Ihr Modell importieren, um auf diese Typen zugreifen zu können. Klicken Sie zum Importieren der Modellbibliothek 'XSD-Datentypen' im Modellexplorer mit der rechten Maustaste auf das Modell selbst (das Stammmodell), wählen Sie Modellbibliothek importieren... aus und in der daraufhin angezeigten Dropdown-Liste XSD-Datentypen.
Zum Definieren neuer einfacher Typen (benutzerdefinierter einfacher Typen) müssen Sie von den entsprechenden Klassen im Modell 'XSD-Datentypen' ausgehen und die Werte der definierten Typen mit Hilfe der Eigenschaften des Stereotyps <<simpleType>> einschränken. Dazu ein Beispiel:
Sie können den Höchstwert für Quantity auf 100 begrenzen, indem Sie die Eigenschaft maxInclusive von <<simpleType>> auf 100 setzen.
Der Vorteil der Modellierung eines XML-Schemas in UML ist es, dass man eine visuelle Darstellung des jeweiligen XML-Schemas erstellen und das Schema anschließend mit einer UML-in-XSD-Umsetzung generieren kann. Analysen haben ergeben, dass die Grundfunktionalität eines XML-Schemas weitestgehend mit UML-Modellelementen abgebildet werden kann. Die folgende Tabelle zeigt einen Teilbereich der Assoziationen zwischen den UML-Konzepten und den entsprechenden XSD-Konzepten (XML Schema Definition).
UML-Konzept | XML-Schemakonzept |
Paket | Einzelner Namespace mit Präfix |
Klasse | Typen und wiederverwendbare Gruppen
|
Aufzählung | Einschränkung für eine XSD-Zeichenfolge (einfacher Typ) mit Aufzählungsfacetten, die den UML-Aufzählungsliteralen entsprechen. Beachten Sie, dass sich dies von den Vorgängen bei einer UML-Klasse unterscheidet, auf die das Stereotyp <<enumeration>> aus dem XSD-Profil angewendet wird. Die Verwendung eines UML-Klassenstereotyps ermöglicht das Generieren wesentlich allgemeinerer XSD-Aufzählungen. |
Eigenschaften einer Klasse | Elemente und Attribute eines komplexen Typs |
Assoziation (Aggregation) | Untergeordnetes Element eines übergeordneten Elements (komplexer Typ) |
Generalisierung | Typableitung
|
Objektidentität | Benutzerdefinierte Schlüsselfelder oder ein expliziter Identitätsmechanismus (noch nicht implementiert) |
UML-Element | XSD-Element | Erläuterungen |
Paket mit dem Stereotyp <<schema>> | Schema mit Zielnamespace und dem zugehörigen Präfix | In einem Paket enthaltene Inhalte generieren ein Schema in einer
Datei mit der Erweiterung
.xsd. Der Name der Schemadatei stimmt mit dem
Paketnamen überein. Die Eigenschaften des Stereotyps <<schema>>, attributeFormDefault und elementFormDefault, können für die Angabe der Attribute attributeFormDefault und elementFormDefault für das generierte Schema verwendet werden. Wenn Sie das Schlüsselwort schema an Stelle des Stereotyps verwenden, sollten Sie den Zielnamespace und das zugehörige Präfix festlegen, indem Sie die entsprechenden Werte für die Umsetzungseigenschaften Zielnamespace und Präfix des Zielnamespace angeben. |
UML-Element | XSD-Element | Erläuterungen |
Klasse mit dem Stereotyp <<complexType>> | Komplexer Typ | Wenn für die Stereotypeigenschaft modelGroup keiner der zulässigen Werte (Alle, Auswahl oder Sequenz) definiert wird, wird der komplexe Typ mit der Modellgruppe Sequenz generiert. |
Klasse mit dem Schlüsselwort complexType | Komplexer Typ | Der komplexe Typ wird mit der Modellgruppe Sequenz generiert. |
Klasse ohne Schlüsselwort und Stereotyp | Komplexer Typ | Ein komplexer Typ wird nur generiert, wenn der Wert der Umsetzungseigenschaft Process unmarked class auf true gesetzt ist. Andernfalls wird die Klasse ignoriert. Wird ein komplexer Typ generiert, wird die Modellgruppe dieses Typs auf Sequenz gesetzt. |
Eigenschaft | Element des komplexen Typs | |
Eigenschaft mit dem Stereotyp <<attribute>> oder dem Schlüsselwort attribute | Attribut des komplexen Typs |
Die Eigenschaft wird nur in ein Attribut konvertiert, wenn es sich bei der Eigenschaft um einen einfachen Typ handelt und die Multiplizität [0..1] ist. Andernfalls wird die Eigenschaft in ein Element konvertiert. Wenn Sie einen Standardwert bereitstellen, wird die Eigenschaft in ein optionales Attribut mit Standardwert konvertiert. Wenn Sie einen Schreibschutz für die Eigenschaft definieren und einen Standardwert bereitstellen, wird die Eigenschaft in ein Attribut konvertiert, dessen Wert auf den Standardwert festgelegt ist. In beiden Fällen müssen Sie die Multiplizität der Eigenschaft auf [0..1] setzen. Sie können die Eigenschaft use des Stereotyps <<attribute>> verwenden, um anzugeben, ob ein optionales Attribut oder ein erforderliches Attribut generiert werden soll. Wenn Sie den Wert für use auf Erforderlich setzen, einen Standardwert bereitstellen und einen Schreibschutz für die Eigenschaft definieren, werden der Standardwert und die Angabe für den Lesezugriff ignoriert. |
UML-Element | XSD-Element | Erläuterungen |
Eine Klasse mit dem Stereotyp <<global>> oder dem Schlüsselwort global mit einer einzigen Eigenschaft. | Globales Element bzw. Attribut (höchste Ebene) |
Die Klasse darf nur eine einzige Eigenschaft aufweisen. Verfügt die Eigenschaft über das Stereotyp <<attribute>> oder das Schlüsselwort attribute, wird die Klasse in ein Attribut der höchsten Ebene konvertiert. Andernfalls wird sie zu einem Element der höchsten Ebene. Der Element- bzw. Attributname wird vom Namen der Eigenschaft abgeleitet, der Typ vom Typ der Eigenschaft. |
UML-Element | XSD-Element | Erläuterungen |
Generalisierungsbeziehungen zwischen Klassen, auf die das Stereotyp <<global>> angewendet wird. | Eine Substitutionsgruppe, die aus den globalen Elementen zusammengesetzt ist, die durch die Klasse mit <<global>>-Stereotypen dargestellt werden. | Um eine Substitutionsgruppe aus globalen Elementen zu formen, müssen Ihre Typen (Klassen) selbst in einer funktional entsprechenden Generalisierungsbeziehung stehen. |
Im unten stehenden Beispiel ist das globale Element "dress" der Kopf der Substitutionsgruppe, und die globalen Elemente "shirt" und "trouser" sind die Mitglieder. Beachten Sie, dass sich die Typen dieser Elemente in einer Generalisierungsbeziehung befinden, die zur Generalisierungsbeziehung zwischen den globalen Elementen äquivalent ist.
UML-Element | XSD-Element | Erläuterungen |
Klasse mit dem Stereotyp <<simpleType>> oder dem Schlüsselwort simpleType |
Benutzerdefinierter einfacher Typ. Einschränkung zu einem integrierten einfachen Typ oder einem anderen benutzerdefinierten einfachen Typ |
Die Klasse muss über eine Generalisierungsbeziehung zu einem integrierten einfachen Typ, einem anderen benutzerdefinierten einfachen Typ oder einem XSD-Aufzählungstyp verfügen. |
UML-Element | XSD-Element | Erläuterungen |
Klasse mit dem Stereotyp <<enumeration>> oder dem Schlüsselwort enumeration | XSD-Aufzählung. Einfacher Typ mit definierter Aufzählungsfacette. |
Die Klasse muss über eine Generalisierungsbeziehung zu einem integrierten einfachen Typ oder einem anderen benutzerdefinierten einfachen Typ verfügen. |
UML-Element | XSD-Element | Erläuterungen |
UML-Aufzählung | XSD-Aufzählung, einfacher Typ mit dem Basistyp für die Einschränkung 'xsd:string' und definierter Aufzählungsfacette. | Eine Generalisierung zu einem anderen einfachen Typ ist nicht erforderlich. |
UML-Element | XSD-Element | Erläuterungen |
Klasse mit dem Stereotyp <<modelGroup>> | Benannte Modellgruppe | Ist die Stereotypeigenschaft modelGroup nicht auf einen der zulässigen Werte (Alle, Auswahl oder Sequenz) gesetzt, wird die Modellgruppe mit der Modellgruppe Sequenz generiert. |
Klasse mit dem Schlüsselwort modelGroup | Benannte Modellgruppe | Die benannte Modellgruppe wird mit der Modellgruppe Sequenz generiert. |
Klasse mit dem Stereotyp <<attributeGroup>> oder dem Schlüsselwort attributeGroup | Attributgruppe | Die einzelnen Eigenschaften der Klasse werden in Elemente der
Attributgruppe konvertiert, sofern sie einen Typ aufweisen, der in einen einfachen Typ
konvertiert werden kann und die Multiplizität [0..1] hat.
Eigenschaften, die diese Bedingungen nicht erfüllen, werden ignoriert. Da die Eigenschaften nur in XSD-Attribute konvertiert werden können, ist es nicht unbedingt notwendig, das Stereotyp <<attribute>> auf die Eigenschaften anzuwenden. Wenn Sie jedoch zusätzliche Eigenschaften (z. B. Erforderlich, form etc.) für die Attribute angeben möchten, müssen Sie das Stereotyp <<attribute>> anwenden und die Eigenschaften des Stereotyps auf die entsprechenden Werte setzen. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A wird von einer anderen Klasse B abgeleitet. | Ein komplexer Typ B, der eine komplexe Inhaltserweiterung des komplexen Typs A darstellt |
Klasse A und Klasse B können über das Stereotyp <<complexType>> oder das Schlüsselwort complexType verfügen. Weder Klasse A noch Klasse B kann über die Modellgruppe oder das Inhaltsmodell 'Alle' verfügen. Versuche, Klassen mit Modellgruppe 'Alle' zu erweitern, führen zu ungültigen Integritätsbedingungen. Klasse B darf weder über das Stereotyp <<modelGroup>>bzw. <<attributeGroup>> noch über das Schlüsselwort modelGroup bzw. attributeGroup verfügen. Dies heißt mit anderen Worten, dass ein komplexer Typ keine Modellgruppe oder Attributgruppe erweitern kann. |
Klasse A wird von einer anderen Klasse B mit dem Stereotyp <<simpleType>> oder dem Schlüsselwort simpleType abgeleitet. |
Ein komplexer Typ B, der eine einfache Inhaltserweiterung eines einfachen Typs darstellt. Die Eigenschaften von Klasse B werden zu Attributen der einfachen Inhaltserweiterung. |
Ableitungen von einfachen Typen sind sinnvoll, wenn es darum geht, Attribute hinzuzufügen. Daher muss der Typ einer Eigenschaft der Klasse B ein einfacher Typ sein, die Multiplizität sollte [0..1] sein. Andernfalls führt das Modell zu einer ungültigen Integritätsbedingung. |
UML-Element | XSD-Element | Erläuterungen |
Assoziation (gerichtete oder kombinierte Aggregation) Klasse A -> Klasse B | Element in komplexem Typ A des Typs 'komplexer Typ B' | Der Elementname wird durch den Rollennamen am Assoziationsende bestimmt. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A enthält mindestens eine Eigenschaft vom Typ der Klasse B. | Element in komplexem Typ A des Typs 'komplexer Typ B' | Der Elementname wird durch den Namen der Eigenschaft bestimmt. |
UML-Element | XSD-Element | Erläuterungen |
Assoziation (gerichtete oder kombinierte Aggregation) von Klasse A zu Klasse B mit dem Stereotyp <<modelGroup>>. Klasse A -> Klasse C mit Stereotyp <<attributeGroup>> |
Modellgruppenreferenz in komplexem Typ A Attributgruppenreferenz in komplexem Typ A |
|
Assoziation (gerichtete oder kombinierte Aggregation) von Klasse A mit dem Stereotyp <<modelGroup>> zu Klasse B, ebenfalls mit dem Stereotyp <<modelGroup>>. | Ein Modellgruppenverweis in der Modellgruppe, dargestellt durch Klasse A. | |
Assoziation (gerichtete oder kombinierte Aggregation) von Klasse A mit dem Stereotyp <<attributeGroup>> zu Klasse B, ebenfalls mit dem Stereotyp <<attributeGroup>>. | Ein Attributgruppenverweis in der Attributgruppe, dargestellt durch Klasse A. |
UML-Element | XSD-Element | Erläuterungen |
Abhängigkeit mit dem Stereotyp <<listOf>> oder dem Schlüsselwort listOf zwischen zwei einfachen Typen | Listentyp (List). Der Client der Abhängigkeit wird in einen einfachen Typ konvertiert, der eine Liste mit dem Supplier der Abhängigkeit darstellt. |
Bei Client und Supplier der Abhängigkeit muss es sich um einen einfachen Typ handeln, und es darf nur eine einzige <<listOf>>-Abhängigkeit zwischen ihnen vorliegen. Zwischen den beiden Klassen darf keine andere Beziehung vorliegen. |
Abhängigkeit mit dem Stereotyp <<unionOf>> oder dem Schlüsselwort unionOf zwischen einem Client mit einfachem Typ und einem oder mehreren Supplier(s). | Uniontyp (Union).
Der Client der Abhängigkeit wird in einen einfachen Typ konvertiert, der eine Union der Suppliers der Abhängigkeit darstellt. |
Bei Client und Suppliers muss es sich um einfache Typen handeln, und es können mehrere Abhängigkeiten <<unionOf>> zwischen ihnen vorliegen. Zwischen den Klassen darf keine andere Beziehung vorliegen. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A mit dem Stereotyp <<complexType>> und der Stereotypeigenschaft anonymous = true; auf Klasse A verweist eine andere Klasse B, die einen komplexen Typ darstellt. |
Klasse A wird in einen anonymen komplexen Typ konvertiert. Die Referenz wird in ein Attribut oder Element im komplexen Typ (repräsentiert durch Klasse B) konvertiert. Der Elementtyp bzw. Attributtyp wird durch diesen anonymen Typ definiert. |
Der Element- bzw. Attributname wird durch den Rollennamen am Assoziationsende bzw. den Eigenschaftsnamen bestimmt. Da Klasse A als anonym angegeben ist, wird für diese Klasse keine Deklaration eines komplexen Typs höchster Ebene generiert. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A mit dem Stereotyp <<simpleType>> und der Stereotypeigenschaft anonymous = true; auf Klasse A verweist eine andere Klasse B, die einen komplexen Typ darstellt. |
Klasse A wird in einen anonymen einfachen Typ konvertiert. Die Referenz wird in ein Attribut oder Element im komplexen Typ (repräsentiert durch Klasse B) konvertiert. Der Elementtyp bzw. Attributtyp wird durch diesen anonymen Typ definiert. |
Der Element- bzw. Attributname wird durch den Rollennamen am Assoziationsende bzw. den Eigenschaftsnamen bestimmt. Da Klasse A als anonym angegeben ist, wird für diese Klasse keine Deklaration eines einfachen Typs höchster Ebene generiert. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A mit dem Stereotyp <<enumeration>> und der Stereotypeigenschaft anonymous = true; auf Klasse A verweist eine andere Klasse B, die einen komplexen Typ darstellt. |
Klasse A wird in eine anonyme Aufzählung konvertiert. Die Referenz wird in ein Attribut oder Element im komplexen Typ (repräsentiert durch Klasse B) konvertiert. Der Elementtyp bzw. Attributtyp wird durch diesen anonymen Typ definiert. |
Der Element- bzw. Attributname wird durch den Rollennamen am Assoziationsende bzw. den Eigenschaftsnamen bestimmt. Da Klasse A als anonym definiert ist, wird für diese Klasse keine Deklaration eines einfachen Typs höchster Ebene mit Aufzählungsfacette generiert. |
UML-Element | XSD-Element | Erläuterungen |
Assoziation (gerichtete oder kombinierte Aggregation) zwischen Klasse A und Klasse B mit dem Stereotyp <<modelGroup>> und dem Eigenschaftswert anonymous = true |
Ein komplexer Typ für Klasse A, der die Modellgruppe der durch Klasse B repräsentierten benannten Modellgruppe enthält. |
Diese Zuordnung ist nur gültig, wenn weder A noch B das Inhaltsmodell Alle aufweisen. |
Assoziation (gerichtete oder kombinierte Aggregation) zwischen einer Klasse A mit dem Stereotyp <<modelGroup>> und einer Klasse B mit dem Stereotyp <<modelGroup>> und dem Eigenschaftswert anonymous = true | Eine benannte Modellgruppe, die Klasse A repräsentiert und die Modellgruppe der durch Klasse B repräsentierten benannten Modellgruppe enthält | Diese Zuordnung ist nur gültig, wenn weder A noch B das Inhaltsmodell Alle aufweisen. |
Die oben angegebene Referenz zu Modellgruppen kann auch mit Klasseneigenschaften modelliert werden.
UML-Element | XSD-Element | Erläuterungen |
Klasse A, die eine Eigenschaft enthält, deren Typ Klasse B mit dem Stereotyp <<modelGroup>> und dem Eigenschaftswert anonymous = true ist. | Ein komplexer Typ für Klasse A, der die Modellgruppe der durch Klasse B repräsentierten benannten Modellgruppe enthält | Diese Zuordnung ist nur gültig, wenn weder A noch B das Inhaltsmodell Alle aufweisen. |
Klasse A mit dem Stereotyp <<modelGroup>>, die eine Eigenschaft enthält, deren Typ Klasse B mit dem Stereotyp <<modelGroup>> und dem Eigenschaftswert anonymous = true ist. | Eine benannte Modellgruppe, die Klasse A repräsentiert und die Modellgruppe der durch Klasse B repräsentierten benannten Modellgruppe enthält | Diese Zuordnung ist nur gültig, wenn weder A noch B das Inhaltsmodell Alle aufweisen. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A, die eine verschachtelte Klasse B enthält, und eine Assoziation zwischen A und B aufweist. | Element in komplexem Typ A eines anonymen Typs B. |
Zwischen der Verschachtelungsklasse und der verschachtelten Klasse muss eine Assoziation vorliegen. Dieselbe Schemakomponente erhält man, wenn Klasse A an Stelle einer Assoziation eine Eigenschaft von Typ B enthält. |
UML-Element | XSD-Element | Erläuterungen |
Klasse A, die eine verschachtelte Klasse B mit dem Stereotyp <<simpleType>> enthält oder dem Schlüsselwort simpleType und eine Assoziation zwischen A und B aufweist. | Element in komplexem Typ A mit dem anonymen einfachen Typ B. |
Zwischen der Verschachtelungsklasse und der verschachtelten Klasse muss eine Assoziation vorliegen. Dieselbe Schemakomponente erhält man, wenn Klasse A an Stelle einer Assoziation eine Eigenschaft von Typ B enthält. |
UML-Element | XSD-Element | Erläuterungen |
Kommentar | Anmerkung | Ein Kommentar in einem UML-Element wird in eine XSD-Dokumentationsanmerkung konvertiert. |
Kommentar mit dem Stereotyp <<annotation>> |
Anmerkung | Der Typ der Anmerkung (documentation oder
appinfo ) hängt vom Wert der Eigenschaft kind
des Stereotyps <<annotation>> ab. Ein Element
documentation wird erstellt, wenn der Wert von kind
Dokumentation ist. Ein Element appinfo
wird erstellt, wenn der Wert Anwendungsinformation ist.
Der Standardwert von kind
ist Dokumentation . |
UML-Element | XSD-Element | Erläuterungen |
Eigenschaft
mit dem Stereotyp <<wildcard>> oder dem Schlüsselwort wildcard . |
Element "wildcard" im umschließenden komplexen Typ oder einer Modellgruppe | Die Namespaces, in denen sich die beim Ersetzen verwendeten Elemente befinden;
die Definition davon, wie genau die beim Ersetzen verwendeten Elemente überprüft werden, legen die Eigenschaften
namespace und processContents mit dem Stereotyp
<<wildcard>> fest. |
UML-Element | XSD-Element | Erläuterungen |
Eigenschaft mit den Stereotypen
<<attribute>> und <<wildcard>>
oder Schlüsselwörtern, Attributen und Platzhalterzeichen. |
Attribut "wildcard" im umschließenden komplexen Typ oder einer Attributgruppe | Die Namespaces, in denen sich die beim Ersetzen verwendeten Elemente befinden;
die Definition davon, wie genau die beim Ersetzen verwendeten Attribute überprüft werden, legen die Eigenschaften
namespace und processContents mit dem
Stereotyp <<wildcard>> fest. |
Der Vorteil der Modellierung eines XML-Schemas in UML ist es, dass man eine visuelle Darstellung des jeweiligen XML-Schemas erstellen und das Schema anschließend mit einer UML-in-XSD-Umsetzung generieren kann. Im Normalfall enthalten Modelle sowohl Elemente, die XSD-Elemente darstellen, als auch Elemente, die nicht unter XSD fallen. Es empfiehlt sich, beim Erstellen eines derartigen Modells die folgenden Richtlinien zu beachten.
Bei dieser Umsetzung sind zurzeit noch keine Regeln zum Generieren folgender XSD-Elemente implementiert:
Facetten | Bedeutung |
fractionDigits | Die Anzahl der Nachkommastellen muss kleiner-gleich x sein. |
length | Die Wertlänge muss x entsprechen. |
maxExclusive | Der Wert muss kleiner als x sein. |
maxInclusive | Der Wert muss kleiner-gleich x sein. |
maxLength | Die Wertlänge muss kleiner-gleich x sein. |
minExclusive | Der Wert muss größer als x sein. |
minInclusive | Der Wert muss größer-gleich x sein. |
minLength | Die Wertlänge muss größer-gleich x sein. |
pattern | x ist einer der regulären Ausdrücke, denen der Wert entsprechen darf. |
totalDigits | Die Anzahl der signifikanten Ziffern muss kleiner-gleich x sein. |
whitespace | In Abhängigkeit von x werden Leerzeichen vom Schemaprozessor beibehalten, ersetzt oder ausgeblendet. |
In der nachfolgenden Tabelle werden die integrierten Datentypen und die anwendbaren Facetten aufgelistet. Dabei ist zu beachten, dass die W3C-Empfehlung enumeration als Facette aufführt, während enumeration in dieser Tabelle nicht enthalten ist. Im vorliegenden Dokument wird enumeration mit Hilfe einer Klasse mit dem Stereotyp <<enumeration>> oder mit Hilfe einer UML-Aufzählung dargestellt.
Datentypen (Basistyp für Einschränkung) | Anwendbare Facetten |
ENTITY, ID, IDREF |
length, maxlength, minlength 'whitespace' ist auf Ausblenden festgelegt. 'pattern' ist [\i-[:]][\c-[:]]* |
IDREFS |
length, maxlength, pattern 'minlength' ist '1'. 'whitespace' ist auf Ausblenden festgelegt. |
Name |
length, maxlength, minlength 'whitespace' ist auf Ausblenden festgelegt. 'pattern' ist \i\c*. |
NCName |
length, maxlength, minlength 'whitespace' ist auf Ausblenden festgelegt. 'pattern' ist [\i-[:]][\c-[:]]*. |
NMTOKEN |
length, maxlength, minlength 'whitespace' ist auf Ausblenden festgelegt. 'pattern' ist \c+ |
NMTOKENS |
length, maxlength 'minlength' ist '1'. 'whitespace' ist auf Ausblenden festgelegt. |
NOTATION |
length, maxlength, minlength, pattern 'whitespace' ist auf Ausblenden festgelegt. |
QNAME |
length, maxlength, minlength, pattern 'whitespace' ist auf Ausblenden festgelegt. |
anyURI, base64Binary, hexBinary |
length, maxlength, minlength, pattern 'whitespace' ist auf Ausblenden festgelegt. |
language |
length, maxlength, minlength 'whitespace' ist auf Ausblenden festgelegt. 'pattern' ist ([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})* |
float, double |
maxExclusive, maxInclusive, minExclusive, minExclusive, pattern 'whitespace' ist auf Ausblenden festgelegt. |
decimal | maxExclusive, maxInclusive, minExclusive, minExclusive, fractionDigits, totalDigits, pattern 'whitespace' ist auf Ausblenden festgelegt. |
Ganzzahlige Datentypen (integer,
byte, int, long, negativeInteger, nonNegativeInteger,
nonPositiveInteger, positiveInteger, unsignedByte, unsignedInt,
unsignedLong,unsignedShort) |
maxExclusive, maxInclusive, minExclusive, minExclusive, totalDigits, pattern 'fractionDigits' ist festgelegt auf den Wert '0'. 'whitespace' ist auf Ausblenden festgelegt. |
Datums- und Zeitdatentypen (date, time,
dateTime,
gYear,gYearMonth, gMonth, gMonthDay, gDay, duration) |
maxExclusive, maxInclusive, minExclusive, minExclusive, pattern 'whitespace' ist auf Ausblenden festgelegt. |
string, normalizedString, token | length, maxLength, minLength, pattern 'whitespace' ist auf Beibehalten für 'string', Ersetzen für 'normalizedString' und Ausblenden für 'token' festgelegt. |