Altova XMLSpy 2024 Professional Edition

Ein neuer simpleType (benannt oder anonym) wird durch Einschränkung des Basistyps (also eines bestehenden simpleType) des simpleType erstellt. Dies wird durch Hinzufügen von Facets zur Einschränkung der Werte des Basistyps erzielt. In der Schema-Ansicht können Sie die Facets eines simpleType über die Eingabehilfe "Facets" (siehe Abbildungen unten) mühelos grafisch bearbeiten. Die verfügbaren Facets sind auf den Registern der Eingabehilfe "Facets" folgendermaßen gegliedert.

 

Register

Verfügbare Facets

Facets

minInclusive, maxInclusive, minExclusive, maxExclusive, length, minLength, maxLength, totalDigits, fractionDigits, whiteSpace, explicitTimezone

Patterns

pattern

Enumerations

enumeration

Assertions

assertion

Beispiele

altova:exampleValues ist eine Annotation und kein Facet. Mit Hilfe dieser Annotation werden Beispielwerte in dem von XMLSpy anhand des XML-Schemas generierten XML-Instanzdokument generiert.

 

Die einzelnen Register werden in den folgenden Abschnitten beschrieben.

 

Auswählen des simpleType im Design

Ein simpleType (benannt oder anonym) kann in den folgenden Design-Umgebungen ausgewählt werden:

 

In der Schema-Übersicht (entweder in der Liste der globalen Komponenten oder auf dem Register "Attribute" unterhalb der Liste der globalen Komponenten) oder

In der Content Model-Ansicht (entweder im Diagramm oder auf dem Register "Attribute" unterhalb des Diagramms).

 

Wenn ein simpleType im Design in einer der oben aufgelisteten Design-Umgebungen ausgewählt wird, werden die anwendbaren Facets in der Eingabehilfe "Facets" angezeigt und können dort bearbeitet werden.

 

Das Register "Facets"

Auf dem Register "Facets" werden nur Facets, die für den im Design ausgewählten Typ verwendet werden können, angezeigt. Wenn z.B. der Typ xs:string eingeschränkt werden soll, werden nicht anwendbare Facets wie z.B. totalDigits nicht angezeigt.

 

Die vier Eingrenzungsfacets (minInclusive, maxInclusive, minExclusive, maxExclusive) können nur auf numerische Typen und Datums- und Uhrzeittypen und auf von diesen Typen abgeleitete Typen angewendet werden.

Die drei length-Facets (length, minLength, maxLength) können nur auf String-basierte Typen, die binären Typen und anyURI angewendet werden.

Das totalDigits Facet wird auf xs:decimal und Ganzzahltypen sowie auf alle davon abgeleiteten Typen angewendet. Das fractionDigits Facet kann nur auf xs:decimal angewendet werden.

EHFacetsFacetsEP

Um einen Wert einzugeben, wählen Sie entweder einen aus der Dropdown-Liste einer Auswahlliste aus (falls vorhanden) oder doppelklicken Sie in das Wertefeld und geben Sie einen Wert ein. Bei Eingabe eines ungültigen Werts werden die dadurch verursachten Konflikte rot angezeigt. Gültige Werte werden blau angezeigt. So können z.B. die Facets minInclusive und maxInclusive nicht gemeinsam verwendet werden; wenn daher ein Wert für das zweite dieser Facets eingegeben wird, werden die Werte beider Facets rot angezeigt.

 

Um ein fixed Facet (das Facet erhält einen Attributwert fixed="true") zu definieren, klicken Sie auf das Symbol des offenen Schlosses rechts vom Facet, damit statt dessen ein versperrtes Schloss angezeigt wird. In der Abbildung oben wurde das totalDigits Facet als "fixed Facet" definiert. Sie können auch mehrere Facets als "fixed" definieren. Um die Fixierung aufzuheben, klicken Sie auf das Symbol des geschlossenen Schlosses, um ein offenes Schloss anzuzeigen.

 

Das Register "Patterns"

Auf dem Register "Patterns" (Abbildung unten) können Sie ein oder mehrere pattern Facets zu einer Restriction  (Einschränkung) hinzufügen. Das Pattern (eines pattern Facet) wird mit der Syntax einer Regular Expression definiert. Mit dem Pattern in der Abbildung unten wird das Pattern von E-Mail-Adressen definiert.

EHFacetsPatternsEP

Wenn mehrere pattern Facets definiert werden, so muss der Wert der XML-Instanz mit einem der definierten Patterns übereinstimmen. So könnte z.B. ein Pattern zum Einschränken von Postleitzahlen zwei pattern Facets haben, je eines für US- und eines für EU-Postleitzahlen. Der Wert einer XML-Instanz muss somit mit einem dieser Patterns übereinstimmen, um gültig zu sein.

 

Fügen Sie durch Klicken auf das Anhängen- oder Einfügen-Symbol links oben ein pattern Facet hinzu und geben Sie anschließend eine Regular Expression zur Definition des gewünschten Patterns ein. Um ein pattern zu löschen, wählen Sie es aus und klicken Sie auf das Löschen-Symbol in der rechten oberen Ecke.

 

Das Register "Enumerations"

Auf dem Register "Enumerations" (Abbildung unten) können Sie ein oder mehrere enumeration Facets zu einer Restriction hinzufügen. Jedes enumeration Facet definiert einen gültigen Wert für den Typ. Gemeinsam definiert eine Gruppe von enumeration Facets einen Bereich zulässiger Werte. In der Abbildung unten definieren die enumeration Facets die zulässigen Größenwerte für die Restriction.

EHFacetsEnumerationsEP

Durch Klicken auf das Anhängen- oder Einfügen-Symbol in der linken oberen Ecke können Sie ein enumeration Facet hinzufügen und anschließend den enumeration Wert eingeben. Um ein enumeration Facet zu löschen, wählen Sie es aus und klicken Sie auf das Löschen-Symbol in der rechten oberen Ecke.

 

Das Register "Assertions"

Assertions sind ein XSD 1.1 Feature. Daher wird das Register "Assertions" nur im XSD 1.1-Modus angezeigt. Die auf dem Register "Assertions" der Eingabehilfe "Facets" angezeigten Assertion-Facets sind Assertions für simpleTypes - im Gegensatz zu Assertions für complexTypes (die in der Schema-Übersicht oder der Content Model-Übersicht, jedoch nicht in der Eingabehilfe "Facets" definiert und bearbeitet werden können).

 

Wenn ein simpleType (Element oder Attribut mit "simple Content") im Design ausgewählt wird, können Sie auf das Register "Assertions" (siehe Abbildung unten) wechseln und auf das Anhängen oder Einfügen-Symbol in der linken  oberen Ecke klicken, um dann den XPath 2.0-Ausdruck zur Definition der assertion einzugeben. Für den Wert  des simpleType muss im XPath-Ausdruck eine spezielle Variable namens \$value verwendet werden. (Beachten Sie, dass der normale self::node() Pfadschritt (bzw. die Abkürzung dafür durch einen Punkt '.') im XPath-Ausdruck nicht verwendet werden kann, da es keine Nachfahren, die überprüft werden sollen, gibt, sondern nur einen Wert.)

 

So überprüft z.B. der XPath-Ausdruck string-length(\$value) = 6 (siehe Abbildung unten), ob der Wert des simpleType sechs Zeichen hat. Wenn das Element oder Attribut im Instanzdokument sechs Zeichen hat, ist es gemäß der Assertion gültig.

EHFacetsAssertionsEP
Anmerkung:Syntaxfehler in XPath-Ausdrücken werden markiert, indem der Ausdruck rot angezeigt wird. Da der Datentyp allerdings erst zur Laufzeit ermittelt wird, werden Typ-Fehler bei der Eingabe des XPath-Ausdrucks nicht markiert. Achten Sie darauf, benötigte Typen zu konstruieren. Ein Beispiel für ein Typ-Konstrukt finden Sie im dritten XPath-Ausdruck in der Abbildung oben, der (unter der Voraussetzung, dass die Assertion für einen xs:string simpleType definiert wurde) einen String-Wert in eine Zahl konvertiert, bevor ein numerischer Vergleich durchgeführt wird.

 

Wie in der Abbildung oben gezeigt, können für einen einzigen simpleType mehrere Assertions definiert werden. In diesem Fall müssen alle Assertions zutreffen, damit das Element oder Attribut im Instanzdokument gültig ist. Die Assertions in der Abbildung oben geben an, dass der Wert des Instanzdokuments ein aus sechs Zeichen bestehender String sein muss, der mit den Buchstaben EU beginnt und dessen letzte vier Zeichen eine Zahl mit dem Wert 0000 bis 4999 sein muss. Um die Details einer Assertion zu bearbeiten, klicken Sie in der Eingabehilfe "Facets" mit der rechten Maustaste auf die Assertion und klicken Sie im daraufhin angezeigten Menü auf Details. Daraufhin wird das Fenster Assertion Details angezeigt (siehe Abbildung unten).

AssertionMessageXSD

Oft ist es nützlich, wenn z.B. mit der Definition einer Assertion auch eine Erläuterung dazu verfügbar ist, damit eine entsprechende Meldung angezeigt werden kann, wenn die Assertion bei der Validierung des XML-Instanzdokuments nicht erfüllt wird. Da in der XML Schema-Spezifikation keine derartige Meldung vorgesehen ist, können Sie in XMLSpy im Altova xml-schema-extensions Namespace https://www.altova.com/de/xml-schema-extensions (oder in jedem anderen Namespace) zusammen mit der Definition der Assertion eine Meldung definieren, die bei der Validierung des XML-Instanzdokuments verwendet werden soll. Zum Beispiel:

 

<xs:assert test="count(//MyNode) ge 1altova:message="Es muss mindestens ein MyNode-Element vorhanden sein"/> oder

<xs:assertion test="count(//MyNode) ge 1altova:message="Es muss mindestens ein MyNode-Element vorhanden sein"/>

 

Wenn die in der Assertion definierte Einschränkung nicht erfüllt wird, zeigt der Validierungsprozessor von XMLSpy zusammen mit der Validierungsfehlermeldung die mit der Assertion verknüpfte Erklärung als Meldung an. Der Validierungsprozessor gibt den Wert eines assert/@message Attributs oder eines assertion/@message Attributs unabhängig davon aus, in welchem Namespace sich das message Attribut befindet. Sie können in der Schema-Ansicht jedoch nur message Attribute bearbeiten, die sich im Altova xml-schema-extension Namespace befinden. Um message Attribute in anderen Namespaces zu bearbeiten, verwenden Sie die Textansicht.

 

 

Nähere Informationen dazu finden Sie unter Assertion-Meldungen.

 

Anmerkung:Erfahrungsgemäß empfiehlt es sich, wo dies möglich ist, andere Facets anstelle von Assertions zu verwenden. So könnte man z.B. die mit der ersten Assertion in der Abbildung definierte Einschränkung besser  mit dem length Facet (auf dem Register "Facets") definieren.

 

Das Register "Beispiele"

Auf dem Register "Beispiele" (Abbildung unten) können Sie Beispielwerte definieren, die bei der Generierung einer XML-Datei anhand des Schemas (Menübefehl DTD/Schema | XML-Beispieldatei erzeugen) verwendet werden können. Wenn ein Beispielwert ungültig ist, wird der Beispielwert zur Warnung orange angezeigt. Der erste Wert in der Abbildung unten ist ungültig, weil er nicht mit dem für E-Mails definierte pattern Facet übereinstimmt (siehe Register Patterns oben).

EHFacetsSamplesEP

Anmerkung:        Klicken Sie in der Symbolleiste auf die Schaltfläche Validierungswarnungen anzeigen icValWarnings, um Warnungen über ungültige Beispielwerte anzuzeigen. Durch einen ungültigen Beispielwert wird die XSDL-Datei nicht ungültig, wenn Sie in anderer Hinsicht gültig ist.

Beispielwerte werden in einem altova:example Annotation-Element, das sich im Namespace https://www.altova.com/de/xml-schema-extensions befindet, gespeichert. Fügen Sie durch Klicken auf das Anhängen- oder Einfügen-Symbol links oben und Eingabe des altova:example-Werts eine altova:example Annotation hinzu. Um die Annotation zu löschen, wählen Sie sie aus und klicken Sie in der rechten oberen Ecke auf das Löschen-Symbol.

 

© 2017-2023 Altova GmbH