Globale Komponenten
Globale Komponenten sind Komponenten, die als Children des obersten Elements xs:schema hinzugefügt werden, (während lokale Komponenten innerhalb von anderen Komponenten erstellt werden). Einige globale Komponenten, wie z.B. complexTypes, Elemente und Attribute können von anderen Komponenten im Schema referenziert werden.
Erstellen von globalen Komponenten in der Schema-Übersicht
Globale Komponenten werden normalerweise in der Schema-Übersicht erstellt und bearbeitet. Sie werden in der Schema-Übersicht mit Hilfe der Symbole Anhängen oder Einfügen hinzugefügt. Das Content Model einer globalen Komponente wird in der Content Model-Ansicht dieser Komponente erstellt und bearbeitet (falls die globale Komponente ein Content Model haben kann, siehe Tabelle unten). (Klicken Sie links vom Komponentennamen auf das Symbol Zur Content Model-Ansicht wechseln, um in die Content Model-Ansicht zu wechseln.)
Einige globale Komponenten werden bei ihrer Erstellung in der Schema-Übersicht auch zur Eingabehilfe "Komponenten" hinzugefügt. Wenn eine Komponente ein Content Model hat, wird dieses durch Doppelklick auf den Komponentennamen in der Eingabehilfe "Komponenten" zur Bearbeitung in der Content Model-Ansicht geöffnet.
Wenn die globale Komponente eine Typdefinition hat (simpleType oder complexType), gelangen Sie bei Auswahl des Kontextmenübefehls Gehe zu Typdefinition der Komponente zur Typdefinition. In Fall von vordefinierten simpleTypes wird ein Meldungsfeld mit Informateionen über den simpleType angezeigt.
Anmerkung: | Sie können einige globale Komponenten (Elemente, Attribute, simpleTypes, complexTypes und Model Groups) auch während der Bearbeitung in der Content Model-Ansicht erstellen. Klicken Sie dazu an einer beliebigen Stelle im Fenster auf die rechte Maustaste und wählen Sie den Befehl Neues Global | < Art der globalen Komponente >. |
Anmerkung: | Sie können ein lokales Element in der Content Model-Ansicht zu einem globalen Element - oder einem globalen complexType machen, wenn das Element als Child ein Element oder Attribut hat. Wählen Sie das lokale Element aus, rechtsklicken Sie in das Fenster und wählen Sie den Befehl Als global definieren | Element oder Als global definieren | Complex type. |
Globale Komponente | Position im Schema | Content Model |
include | Anfang | Nein |
import | Anfang | Nein |
redefine | Anfang | Nein |
override 1.1 | Anfang | Nein |
defaultOpenContent 1.1 | Nach Includes, Imports, Redefines Overrides; vor jedem anderen Element | Ja |
element | An beliebiger Stelle nach defOpenCont | Ja |
group | An beliebiger Stelle nach defOpenCont | Ja |
simpleType | An beliebiger Stelle nach defOpenCont | Nein |
complexType | An beliebiger Stelle nach defOpenCont | Ja |
attribute | An beliebiger Stelle nach defOpenCont | Nein |
attributeGroup | An beliebiger Stelle nach defOpenCont | Nein |
notation | An beliebiger Stelle nach defOpenCont | Nein |
annotation | An beliebiger Stelle nach defOpenCont | Nein |
Comment | An beliebiger Stelle | Nein |
Processing Instruction | An beliebiger Stelle | Nein |
Im Folgenden finden Sie die wichtigsten Punkte zur Bearbeitung dieser Komponenten in der Schema-Ansicht.
Includes, Imports, Redefines und Overrides
Mit Hilfe dieser vier globalen Komponenten können Sie andere Schemadokumente innerhalb des aktuellen Schemadokuments wiederverwenden.
•Mittels "Include" werden Dokumente wiederverwendet, die denselben Ziel-Namespace wie das aktuelle Dokument haben.
•Mittels "Import" werden Dokumente wiederverwendet, die einen anderen Ziel-Namespace als das aktuelle Dokument haben.
•"Redefine"/"Override" ist insofern ein Include-Typ, als er denselben Ziel-Namespace wie das aktuelle Dokument hat, jedoch werden damit Teile der inkludierten Schemas geändert. "Redefine" ist ein XSD 1.0-Feature und wird in XSD 1.1 nicht mehr verwendet. "Override" ist ein 1.1-Feature, das flexibler ist und in XSD 1.1 anstelle von "Redefine" tritt.
Alle vier Komponenten haben ein schemaLocation Attribut, das auf das Schema verweist, das wiederverwendet werden soll. Wenn Sie in der Schema-Ansicht auf das loc Feld dieser Komponenten doppelklicken, können Sie zur gewünschten Datei, die wiederverwendet werden soll, navigieren, und ihren Pfad relativ zum aktuellen Dokument definieren. Die import Komponente hat zusätzlich dazu ein namespace Attribut, das den Ziel-Namespace des importierten Schemas enthält.
Wenn ein Schema im aktuellen Schemadokument (mittels include, import, redefine oder override) wiederverwendet wird, werden seine globalen Komponenten, Namespaces und Identity Constraints in der Eingabehilfe "Komponenten" des aktuellen Dokuments angezeigt.
Redefines
In einer redefine Komponente können Sie complexTypes, simpleTypes, Model Groups und Attribute Groups ändern. Die umzudefinierende Komponente befindet sich im dem im Feld loc definierten Schema der redefine Komponente (in der Abbildung unten befinden sich die umzudefinierenden Komponenten im Schema ExpReport.xsd). Nachdem eine redefine Komponente hinzugefügt wurde, müssen Sie die umzudefinierende Komponente an einer Stelle zwischen der Zeile redefine und end of redefine in der Liste der globalen Komponenten hinzufügen (siehe Abbildung unten, in der die Komponenten New und emailType umdefiniert werden). Diese beiden Komponenten stammen aus dem Schema ExpReport.xsd und werden für das aktuelle Schema umdefiniert.
Um eine Komponente umzudefinieren, gehen Sie folgendermaßen vor:
1.Wählen Sie die Zeile end of redefine.
2.Klicken Sie links oben in der Schema-Übersicht auf das Einfügen-Symbol.
3.Wählen Sie die Art der zu definierenden Komponente aus (complex type, simple type, model group oder attribute group). Die Komponente wird innerhalb der redefine-Komponente hinzugefügt.
4.Geben Sie ihr denselben Namen wie die umzudefinierende Komponente. Die Komponente erhält dadurch alle Eigenschaften der Komponente aus dem wiederverwendeten Schema.
5.Definieren Sie die Komponente um, indem Sie sie auswählen und ihre Eigenschaften in den Eingabehilfen "Details" und "Facets" ändern oder indem Sie ihr Content Model in der Content Model-Ansicht ändern (falls die Komponente ein Content Model hat).
Anmerkung: | Sie können die umzudefinierenden Komponenten unter Umständen auch folgendermaßen einfügen: entweder von einer anderen Stelle in der Liste der globalen Komponenten oder mittels Drag-and-Drop oder Kopieren/Einfügen aus der Eingabehilfe "Komponenten". |
Umdefinierte Komponenten können von anderen Komponenten im Schema aus referenziert werden.
Overrides
In einem override Element können Sie die folgenden Komponenten definieren: complexTypes, simpleTypes, globale Elemente, globale Attribute, Model Groups, Attribute Groups und notations. Wenn eine dieser Komponenten in einem override Element definiert wird, so ersetzt diese Komponente im überschriebenen Schema alle Komponenten derselben Art, die denselben Namen wie die überschreibende Komponente haben. Das überschriebene Schema wird im loc Feld des Override-Elements definiert.
Override-Elemente unterscheiden sich insofern von Redefine-Elemente (siehe oben), als es sich hierbei um Komponenten handelt, die von Grund auf neu definiert werden und nicht auf einer wiederverwendeten Komponente basieren. Override-Komponenten werden in der Schema-Ansicht auf ähnliche Weise wie Redefine-Komponenten hinzugefügt. Fügen Sie die überschreibende Komponente oberhalb der Zeile end of override hinzu und definieren Sie anschließend ihre Eigenschaften. Siehe Abschnitt 'Redefine' weiter oben. Der Hauptunterschied zwischen Override und Redefine ist, dass eine zu einem Override-Element hinzugefügte Komponente nicht auf einer Komponente aus dem wiederverwendeten Schema basiert.
Default Open Content
Das Element defaultOpenContent ist neu in XSD 1.1 und definiert, dass ein oder mehrere nicht definierte Elemente zu jedem complexType mit mixed oder element-only Inhalt hinzugefügt werden können. Es ist dem Element openContent (ebenfalls neu in XSD 1.1) ähnlich, mit dem Unterschied, dass das Element defaultOpenContent im Gegensatz zum Element openContent, das auf einen einzigen complexType im Schema angewendet wird, auf alle complexTypes im Schema angewendet wird.
Das Element defaultOpenContent kommt nur einmal im Dokument vor (siehe Abbildung unten): nach Includes, Imports, Redefines und Overrides und vor der Definition von Komponenten. Es hat ein mode Attribut, das entweder den Wert interleave oder suffix erhalten kann. Die Standardeinstellung ist interleave.
Das Element defaultOpenContent hat ein Content Model, das Sie in der Content Model-Ansicht bearbeiten können. Nachdem es deklariert wurde, gilt das Element defaultOpenContent für alle complexTypes im Schema. In der Abbildung unten sehen Sie, dass defaultOpenContent automatisch auf die complexTypes OfficeType und Desc angewendet wurde.
Um das defaultOpenContent Element bei Anwendung auf einen bestimmten complexType außer Kraft zu setzen, fügen Sie ein openContent Child-Element zu diesem complexType hinzu. Zum Desc Element mit dem defaultOpenContent Element (siehe Abbildung oben) wurde in der Abbildung unten ein openContent Element hinzugefügt, das das defaultOpenContent Element außer Kraft setzt.
Globale Elemente (element)
In der Schema-Übersicht können Sie ein globales Element erstellen. Wenn das globale Element ein Content Model haben soll, wird dieses in der Content Model-Ansicht des globalen Elements definiert. Wenn das Element in einer dieser Ansichten ausgewählt ist, können Sie dafür auf den entsprechenden Registern des AAIDC-Bereichs Attribute, Assertions und Identity Constraints definieren. Facets und andere Eigenschaften können in den Eingabehilfen Facets und Details für dieses Element definiert werden. Globale Elemente können anschließend von complexTypes referenziert werden.
Model Groups (group)
In der Schema-Übersicht können Sie benannte Model Groups erstellen, die in complexTypes referenziert werden können. Mit Hilfe einer benannten Model Group (Element xs:group) können Sie ein wiederverwendbares Content Model vordefinieren. Es kann eine von drei Arten von Child Model Groups enthalten: eine sequence Group, eine choice Group oder eine all Group.
Durch Hinzufügen einer Group-Komponente, Benennen der Komponente und Definieren ihres Content Model in der Content Model-Ansicht können Sie in der Schema-Übersicht eine benannte Model Group erstellen. Die benannte Model Group kann anschließend zum Content Model eines complexType hinzugefügt werden.
Benannte simpleTypes (simpleType)
Sie können in der Schema-Übersicht benannte simpleTypes (siehe Abbildung unten) erstellen, die anschließend in Element- und Attributdeklarationen referenziert werden können.
In der Eingabehilfe "Details" wird der Inhalt des simpleType (restriction, list, union) und der entsprechende Typ, nämlich base type, item type bzw. member type, definiert. In der Abbildung unten ist der base type (Basistyp) der Restriction des simpleType xs:integer. Nähere Informationen dazu finden Sie im Abschnitt Eingabehilfe "Details". Um einen simpleType mittels Facets einzuschränken, verwenden Sie die Optionen in der Eingabehilfe "Facets".
Anmerkung: | Anonyme Typen können zu einem Element oder Attribut mit simple Content entweder in der Schema-Übersicht oder in der Content Model-Ansicht deklariert werden. Wenn Sie die Eigenschaft derivedBy (in der Eingabehilfe "Details") auf restriction, list oder union setzen, erstellen Sie innerhalb dieser Element- oder Attributdeklaration einen anonymen simpleType. In der Eingabehilfe "Facets" können Sie Restriction Facets und in der Eingabehilfe "Details" andere Eigenschaften definieren. |
Benannte complexTypes (complexType)
In der Schema-Übersicht können Sie benannte complexTypes erstellen, die anschließend in Elementdeklarationen referenziert werden können. Wenn der benannte complexType in einer der Ansichten ausgewählt ist, können Sie seine Attribute und Assertions auf den entsprechenden Registern des AAIDC-Bereichs definieren.
Ein complexType kann vier Arten von Inhalt haben (siehe Liste unten). Die verschiedenen Arten von Inhalt können in der Eingabehilfe "Details", wie unten beschrieben definiert werden. Falls der complexType ein Content Model haben kann, können Sie dieses bei Bedarf in der Content Model-Ansicht definieren.
•Simple content: Definieren Sie den Basistyp (base type) des simple content (siehe Abbildung unten). Das Attribut mixed (für mixed Content) muss den Wert false (Standardwert) haben; daher wird true in der Abbildung unten rot angezeigt. Es ist kein Content Model gestattet.
•Element-only content: Erstellen Sie im Content Model-Diagramm Child-Elemente. Es gibt keinen Basistyp.
•Mixed content: Das Attribut mixed muss auf true gesetzt werden. Überall innerhalb des Elements können in seinen Child Element Nodes Zeichen vorkommen. Die Zeichen haben keinen Datentyp, daher kann es auch keinen Basistyp geben (siehe Abbildung oben). Im Content Model-Diagramm können Child-Elemente erstellt werden.
•Empty content: Das Element enthält weder Zeichen noch Child-Elemente. Es darf keinn Basistyp definiert sein und mixed muss auf false gesetzt sein. Die Daten in empty-content Elementen sind normalerweise in Attributen gespeichert.
Anmerkung: Für alle vier Arten von Content können (im AAIDC-Bereich) Attribute und Assertions definiert werden.
Anmerkung: | Um innerhalb eines Elements anonyme complexTypes zu erstellen, wird in der Content Model-Ansicht ein Content Model für dieses Element erstellt. |
Globale Attribute und Attributgruppen (attribute, attributeGroup)
Globale Attribute und Attributgruppen werden in der Schema-Übersicht hinzugefügt.
•Die Eigenschaften eines globalen Attributs werden in der Eingabehilfe "Details" des Attributs definiert.
•Nachdem Sie eine globale Attributgruppe erstellt haben, können Sie auf folgende Weise Attribute zur Gruppe hinzufügen: (i) Wählen Sie die globale Attributgruppe in der Liste der globalen Komponenten aus; (ii) fügen Sie im Abschnitt "Attribute" des AAIDC-Bereichs Attribute hinzu und (iii) definieren Sie die Eigenschaften der einzelnen Attribute in der Eingabehilfe "Details" des ausgewählten Attributs.
Nachdem die globalen Attribute und Attributgruppen erstellt wurden, können sie in den Deklarationen von Elementen und complexTypes referenziert werden.
Notations (notation)
Notations sind immer global; es gibt keine lokalen Notations. Die Eigenschaften einer Notation werden in der Eingabehilfe "Details" der Notation definiert. Der Name der Notation kann direkt in der Liste der globalen Komponenten definiert werden. Alle Notations im Schema werden der Übersichtlichkeit halber in der Eingabehilfe "Komponenten" angezeigt.
Globale Annotationen
Globale Annotationen sind globale Komponenten und nicht dasselbe wie die für einige globalenKomponenten verfügbaren optionalen Annotationen. Sie können eine globale Annotation in ihrem Textfeld in der Schema-Übersicht oder im Dialogfeld "Annotation" bearbeiten (Abbildung unten). Dieses Dialogfeld wird durch Rechtsklick auf die globale Annotationskomponente und Auswahl des Befehls Alle Annotationsdaten aufgerufen.
Jedes Annotation-Element kann ein id Attribut und mehrere documentation und/oder appinfo Child-Elemente haben. documentation oder appinfo Elemente können durch Klicken auf die Schaltflächen Anhängen oder Einfügen links oben im Dialogfeld und Auswahl des Eintrags doc oder app aus der entsprechenden Auswahlliste hinzugefügt werden. Wählen Sie ein doc oder app Element im oberen Bereich des Dialogfelds aus und geben Sie seinen Inhalt im Bereich Inhalt ein. Wenn Sie im Inhalt eine neue Zeile erstellen möchten (und den Inhalt dadurch zu mehrzeiligem Inhalt machen möchten), drücken Sie die Eingabetaste. In der Abbildung oben wurde das documentation Element ausgewählt. Sie sehen, dass es Inhalt in zwei Zeilen enthält. Für jedes documentation oder appinfo Element können Sie auch ein optionales source und xml:lang Attribut eingeben.
In der Schema-Übersicht wird nur das erste documentation oder appinfo Element der globalen Annotation angezeigt und kann direkt in der Liste der globalen Komponenten bearbeitet werden. Wenn dieser Inhalt mehrzeilig ist, werden bei Positionierung des Cursors über dieses Element alle Zeilen in einem mehrzeiligen Popup-Feld angezeigt. Um den Inhalt anderer documentation und/oder appinfo Elemente anzuzeigen oder zu bearbeiten, rufen Sie das Dialogfeld "Annotation" für diese globale Annotation auf.
Anmerkung: | Die optionalen Annotationen, die für einige globale Komponenten zur Verfügung stehen, können ebenfalls auf genau die gleiche Weise wie oben beschrieben über das Dialogfeld "Annotation" bearbeitet werden. |
Kommentare und Processing Instructions
Kommentare und Processing Instructions (Verarbeitungsanweisungen) können an jeder beliebigen Stelle in der Liste der globalen Komponenten in der Schema-Übersicht, nicht aber in der Content Model-Ansicht, hinzugefügt werden. Wenn es innerhalb von simpleTypes oder complexTypes einen odere mehrere Kommentare oder Processing Instructions gibt, werden diese gesammelt und an das Ende des einschließenden Objekts verschoben. In solchen Fällen wird daher empfohlen, Annotationen anstelle von Kommentaren zu verwenden.