Definieren von Schemaregeln

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerhandbuch und Referenz > DTDs und XML Schemas > Schemaregeln >

Definieren von Schemaregeln

Eine Schemaregeldatei kann zur Bearbeitung im Schemaregel-Editor (Abbildung unten) geöffnet werden. Anschließend können Sie die Schemaregeln in dieser Schemaregeldatei erstellen, bearbeiten und löschen. Um eine Schemaregeldatei im Schemaregel-Editor zu öffnen, gehen Sie folgendermaßen vor:

 

1.Wählen Sie die Schemaregeln in der Liste der Schemaregeln im Fenster "Info" aus.
2.Klicken Sie auf die Schaltfläche "Kontextmenü" ContextMenuButton dieser Regeldatei.
3.Wählen Sie nun im angezeigten Kontextmenü den Befehl "Regel bearbeiten".

SchemaRuleEditorOview

Das Dialogfeld "Schemaregel-Editor" hat zwei Bereiche:

 

Einen Bereich "Regeln" (im oberen Bereich des Editors), in dem Sie Regeln hinzufügen und löschen können. Durch Klicken auf die Schaltfläche Anhängen oder Einfügen in der linken oberen Ecke des Bereichs können Sie eine leere Zeile für eine Regel anhängen bzw. einfügen. Um eine Regel zu löschen, wählen Sie sie aus und klicken Sie rechts oben im Bereich auf die Schaltfläche Löschen. Jede Regel in diesem Bereich hat einen Namen, einen beschreibenden Text und einen Schweregrad (bei einem Verstoß gegen die Regel, kann festgelegt werden, dass bei der Validierung ein Fehler oder eine Warnmeldung zurückgegeben wird).
einem Bereich "Regel" (im unteren Bereich des Editors). In diesem Bereich werden die Einzelheiten zu der Regel, die im oberen Bereich "Regeln" ausgewählt wurde, angezeigt. Hier können Sie die Einzelheiten der Regel bearbeiten. Nähere Informationen zum Definieren von Regeln finden Sie weiter unten im Abschnitt "Definieren einer Regel".

 

Wenn Sie die Regeln in einer Schemaregeldatei bearbeitet haben, klicken Sie auf Speichern, um die Regeln in der Schemaregeldatei zu speichern.

 

Definieren einer Regel

Um eine Regel zu definieren oder zu bearbeiten, wählen Sie die Regel in der Liste im oberen Bereich "Regeln" aus. Die Definition der Regel wird im Bereich "Regel" angezeigt, wo sie auch bearbeitet werden kann. In der Abbildung unten sehen Sie eine Regel, die folgendermaßen definiert werden kann: Wenn ein complexType eine Erweiterung eines simpleType ist, muss er ein Child der Art AttributeGroup haben.

SchemaRuleEditorDefinition

Validierungsbedingungen und Filterbedingungen:

 

Jede Regel enthält Validierungsbedingungen und Filterbedingungen (siehe erste Spalte in der Abbildung oben).
Alle Filterbedingungen müssen "true" sein, damit die Validierungsbedingung überprüft werden kann.
Jede Bedingung (ob Validierungsbedingung oder Filterbedingung) besteht aus einer oder mehreren Bedingungsgruppen, wobei jede Bedingungsgruppe eine oder mehrere Bedingungen enthält. Die Validierungsbedingung in der Abbildung oben enthält eine Bedingungsgruppe mit einer Bedingung und die Filterbedingung enthält drei Bedingungsgruppen mit je einer Bedingung. Die Filterbedingung in der Abbildung unten enthält drei Bedingungsgruppen: Die erste enthält zwei Bedingungen, die zweite drei und die dritte eine.

SchemaRuleEdCondGrps1

Jede einzelne Bedingung kann durch Aktivieren des Kontrollkästchens Not (links neben der Bedingung) negiert werden.
In einer Bedingungsgruppe geben die logischen Verbindungen and oder or an, ob alle Bedingungen in der Gruppe oder nur eine Bedingung in der Bedingungsgruppe "true" sein muss, damit die gesamte Bedingungsgruppe als "true" ausgewertet wird. Auf der Benutzeroberfläche befinden sich diese logischen Operatoren innerhalb zweier Spalten mit logischen Operatoren.
Jede einzelne Bedingungsgruppe kann durch Aktivieren des Kontrollkästchens Not (links neben dem logischen Operator  der Bedingungsgruppe) negiert werden.
Der äußere logische Konnektor and oder or gibt an, ob alle Bedingungsgruppen in der Gruppe (Validierungsbedingung oder Filterbedingung) oder nur eine Bedingungsgruppe "true" sein muss, damit die gesamte Gruppe (Validierung oder Filter) als "true" ausgewertet wird.
Logische Konnektoren können durch Auswahl der entsprechenden Option in der Auswahlliste für den äußeren logischen Konnektor (den Konnektor der Bedingungsgruppe) geändert werden. Die Werte der inneren logischen Konnektoren (der Konnektoren für die Bedingungen innerhalb einer Bedingungsgruppe) werden alle auf den dem äußeren logischen Konnektor entgegengesetzten Wert gesetzt.
Eine Bedingungsgruppe oder Bedingung kann auf folgende Arten an die ausgewählte Bedingung angehängt oder in diese eingefügt werden: Wählen Sie die Bedingung aus und klicken Sie auf die Schaltfläche Anhängen bzw. Einfügen (links oben im Bereich). Wählen Sie anschließend das Gewünschte aus dem Menü aus (Bedingungsgruppe oder Bedingung). (siehe Abbildung unten).

SchemaRuleEditorAppendInsert

 

Arten von Bedingungen

Eine Bedingung kann einer von drei Gruppen angehören (siehe Abbildung unten):

 

der Art "Komponente" (die Arten, die in der Dropdown-Liste mit Component beginnen; siehe Abbildung unten)
der Art "Eigenschaft" (Property Value)
einer Kombination von Komponenten- und Eigenschaftsarten (Arten mit Property und Component im Namen)

SchemaRuleEditorSubConditionsKind

Die Art der Unterbedingung wird aus der Dropdown-Liste in der Spalte Bedingung der Bedingung ausgewählt (Abbildung oben). Jede der drei Gruppen von Bedingungen wird im Folgenden beschrieben.

 

Unterbedingungen der Art "Komponente"

Bei Unterbedingungen der Art "Komponente" (Arten, die mit Component beginnen) muss die Komponente anschließend in der Spalte Komponente (siehe Abbildung unten) definiert werden. Die Komponente wird aus der Dropdown-Liste im Komponentenfeld einer Unterbedingung ausgewählt. Da für Bedingungen der Art "Komponente" kein anderes Feld (Eigenschaft, Comparator Wert) definiert sein muss, sind alle anderen Felder  ausgegraut.

SchemaRuleEditorSubCondComp

In der Abbildung oben definiert die Filterbedingung, dass die Regel sich auf Komponenten der Art Schema bezieht. Wenn in der Validierungsbedingung definiert ist, dass die Komponente ein Child der Art Notation haben muss, so lautet die komplette Regel dass: eine Elementkomponente ein Child der Art Notation haben muss. Wenn bei der Validierungsbedingung die Option NOT aktiviert ist, so würde die Regel lauten: Eine Elementkomponente darf kein Child der Art Notation haben.

 

Bedingungen der Art "Eigenschaft"

Die Bedingung der Art "Eigenschaft" ist PropertyValue (siehe Abbildung unten). Bei dieser Art von Bedingung wird der Charakter einer Eigenschaft definiert. Daher müssen in diesem Fall die Spalten Eigenschaft und Comparator und optional dazu auch die Spalte Wert ausgefüllt werden. In der Spalte Komponente ist kein Eintrag erforderlich, daher ist die Spalte ausgegraut. Eigenschaften, die in den Dropdown-Listen der Spalte Eigenschaft aufgelistet sind, enthalten nicht nur XML-Attribute (wie z.B. default und maxOccurs) sondern auch die logischen Eigenschaften von Komponenten (wie z.B. derivedBy).

SchemaRuleEditorSubCondProp

In der Abbildung oben sehen Sie eine Regel, in der die Eigenschaft Model einen Wert hat, der gleich All ist, und der (über das Kontrollkästchen NOT) negiert ist. Zusammen mit dem Filter der Komponente Model Group besagt diese Regel ganz einfach, dass ein Schema keine xsd:all Elemente enthalten darf.

 

Anmerkung:Beachten Sie bitte die folgenden Punkte:

 

Wenn Sie den Comparator IsQNameEqualTo verwenden, muss der entsprechende Wert in folgender Form geschrieben sein: {URI}localName. Der Wert könnte z.B.: {http://www.w3.org/2001/XMLSchema}NOTATION lauten.
Die Eigenschaft default kann vorhanden und leer sein (<element name default=""/>) oder auch fehlen (<element name/>).

 

Bedingungen, in denen die Arten "Komponente" und "Art" kombiniert sind

Bedingungen, die aus einer Kombination der Arten "Komponente" und "Eigenschaft" bestehen sind:

 

ComponentHasChildOfKindWithPropertyValue: Definiert die Art der Komponente eines Child-Elements und einen Eigenschaftswert dieses Child-Elements.
PropertyResolvesToComponentOfKind: Eine Eigenschaft ist definiert, die zu einer Komponentenart aufgelöst wird. Die Spalten Comparator und Value sind leer.

 

Negieren einer Bedingung

Eine Bedingung wird durch Aktivieren des Kontrollkästchens NOT direkt links von der Bedingung (innere Not-Kontrollkästchen) negiert. Eine Bedingungsgruppe wird durch Aktivieren des Not-Kontrollkästchens links vom logischen Konnektor für Bedingungen in dieser Bedingungsgruppe negiert.

 


© 2019 Altova GmbH