Altova XMLSpy 2024 Professional Edition

Bei Einschränkung eines complexType mittels Restriction werden Teile des Content Models des Basistyps im abgeleiteten Typ neu geschrieben. Dies kann verwirrend sein, wenn es sich um ein komplexes Content Model handelt, da es beim Editieren des abgeleiteten Typs oft nicht einfach ist, sich genau zu erinnern, wie das Content Model des Basistyps aussieht.

 

Mit Hilfe von Smart Restrictions werden die beiden Content Models in der grafischen Ansicht des abgeleiteten Content Model kombiniert und in Zusammenhang gesetzt. Im abgeleiteten complexType sehen Sie alle Partikel des Basis-complexType und in welcher Beziehung sie zum abgeleiteten Typ stehen. Außerdem bieten Smart Restrictions visuelle Anhaltspunkte und zeigen alle Möglichkeiten, wie der Basistyp mittels Restriction eingeschränkt werden kann, wodurch es einfacher wird, den abgeleiteten Typ korrekt einzuschränken.

 

So aktivieren Sie die Option "Smart Restrictions":

Klicken Sie auf das Symbol "Smart Restrictions" ic_smart_res.

 

 

Im folgenden Beispiel sehen Sie, wie sich Smart Restrictions auswirken.

Der folgende complexType ist der Basis-Typ, der in diesem Beispiel verwendet wird:

base_complexType

Der complexType "derived" wird folgendermaßen vom "Base" Type abgeleitet:

1.Erstellen Sie im Schema einen neuen complexType und nennen Sie ihn "derived".

2.Wählen Sie in der Eingabehilfe "Details" den Eintrag "base" aus der Dropdown-Liste base aus und den Eintrag "restriction" aus der Dropdown-Liste derivedBy.

derive_detailsEntHelper

Wenn die Option "Smart Restrictions" aktiviert ist, so sieht der neue abgeleitete Typ folgendermaßen aus:

derived_complexType

Beachten Sie die folgenden Steuerelemente, mit denen Sie den abgeleiteten Typ in diesem Beispiel durch Restriction einschränken können:

Mit Hilfe des Symbols ic_checkbox können Sie Elemente aus dem abgeleiteten Typ entfernen, die sich im Basis-Typ befinden. Hier wurde elem1 gelöscht. Um es erneut hinzuzufügen, klicken Sie auf dieses Symbol ic_plussign.

derived_elem_deleted

Klicken Sie auf den Abwärtspfeil ic_down_arrow neben dem "Choice"-Kompositor, um die folgende Liste aufzurufen, über die Sie die Model Group "Choice" in eine Model Group "Sequence" ändern können:

model_group_restriction
Sie können auch Wildcards auf dieselbe Art ändern - siehe Beispiel:
derived_wildcard
Ein ausführliche Liste darüber, welche Partikel durch welche anderen Partikel ersetzt werden können, finden Sie in der XML-Schema-Spezifikation.

 

 

Klicken Sie auf das folgende Symbol ic_change_minoccur, um die Anzahl der "Occurrences" der Model Group zu ändern. Durch Klicken auf das +-Zeichen über der 1 können Sie die Mindestanzahl der Occurrences erhöhen, durch Klicken auf das Minus-Zeichen unterhalb von "4" können Sie die Maximalanzahl der Occurrences verringern. Diese Steuerelemente werden angezeigt, wenn es sich beim Occurrence-Bereich um einen realen Bereich (z.B. 2-5) handelt und nicht um einen bestimmten Wert (z.B. 4-4). Sie werden auch angezeigt, wenn der Occurrence-Bereich falsch ist.

derived_change_minoccur
Hier sehen Sie, dass die Minimum Occurrence für dieses Element in 2 geändert wurde. Beachten Sie, dass die Model Group nun einen blauen Hintergrund aufweist, was bedeutet, dass sie nicht mehr mit der Model Group im Base complexType identisch ist. Außerdem wird der Occurrence-Bereich der Model Group im Basiselement nun in Klammern angezeigt.

Sie können die Datentypen von Attributen oder Elementen ändern, wenn es sich beim neuen Datentyp um eine gültige Restriction des in der XML Schema-Spezifikation definierten Basis-Typs handelt. So können Sie z.B. den Datentyp von elem3 im Datentyp "derived" von Decimal in Integer ändern. Das Element wird danach mit blauem Hintergrund angezeigt, um hervorzuheben, dass es nicht mit dem Element im Basis-Typ identisch ist. Der Typ, den das Element im Basis-Typ hat, wird in Klammern angezeigt:

 

derived_change_datatype

In diesem Beispiel sehen Sie Attribute, deren Datentypen im abgeleiteten complexType durch Restriction eingeschränkt wurden.

derived_attrs

Smart Restrictions informieren Sie auch über überflüssige Vorkommen (pointless occurrences) im Content Model. Ein "überflüssiges Vorkommen" wird z.B. dann angezeigt, wenn eine im Content Model vorhandene Sequenz unnötig ist. In diesem Beispiel sehen Sie ein solches "überflüssiges Vorkommen":

pointless_occurrence
Anmerkung: Überflüssige Vorkommen werden nur angezeigt, wenn das Content Model einen Fehler enthält. In manchen Fällen enthält ein Content Model ein "überflüssiges Vorkommen" ist aber trotzdem gültig. In diesen Fällen wird das überflüssige Vorkommen nicht explizit angezeigt, um nicht zu Verwirrung zu führen.

 

Nähere Informationen über "überflüssige Vorkommen" (Pointless occurrences) finden Sie in der XML-Schema-Spezifikation.

 

© 2017-2023 Altova GmbH