Ersetzungsgruppen sind ein Merkmal des XML-Schemas, das es
ermöglicht, ein Element in einer XML-Nachricht durch ein anderes zu ersetzen. Eine Ersetzungsgruppe
besteht aus einer Liste globaler Elemente, die an die Stelle eines anderen globalen Elements, das
so genannte Hauptelement treten können.
Eine Ersetzungsgruppe wird definiert, indem die Eigenschaft
substitutionGroup (Ersetzungsgruppe) für ein einzelnes
globales Element (das Mitgliedselement) festgelegt wird, so dass es auf ein anderes
globales Element (das Hauptelement) zeigt. Dadurch wird das Mitgliedselement zur
Ersetzungsgruppe des Hauptelements hinzugefügt.
Anmerkung: Wenn Sie Wörterbücher aus einer Nachrichtengruppe generieren und sie in
WebSphere Message Broker implementieren, lesen Sie den Abschnitt
Schemaeinschränkungen im Nachrichtenmodell
und dort vor allem den Text über Ersetzungsgruppen.
Tipp: Wenn Ihre Nachrichten nie als XML wiedergegeben werden oder Sie ein einfaches
Nachrichtenmodell einsetzen, wird empfohlen, statt Ersetzungsgruppen besser einen komplexen Typ
oder eine Gruppe, für die Zusammensetzung auf
Auswahl gesetzt ist, zu verwenden.
Elemente
- Hauptelemente
- Ein Hauptelement ist ein Element, das ersetzt werden kann. Beim Analysieren einer Nachricht
kann eines seiner Mitgliedselemente an die Stelle des Hauptelements treten, ohne dass ein
Gültigkeitsfehler verursacht wird.
- Abstrakte Elemente
- Ein abstraktes Element ist ein Hauptelement, das ersetzt werden muss. Dies wird durch das
Attribut 'abstract' des Elements angezeigt. In der Regel enthält die Ersetzungsgruppe von
abstrakten Elementen andere Elemente - ansonsten sind sie von geringem Nutzen. Wo immer ein
abstraktes Element in einer Nachrichtendefinition erscheint, muss an seine Stelle ein Mitglied der
zugehörigen Ersetzungsgruppe eingesetzt werden.
Attribute
- Attribut block für Elemente
- Das Attribut block für ein Element begrenzt die Gruppe
der globalen Elemente, durch die das Element ersetzt werden kann. Das Attribut
block kann eine beliebige Untermenge der Werte
restriction (Einschränkung),
extension (Erweiterung),
substitution (Ersetzung) oder
all (alle) annehmen.
- Wenn das Attribut block den Wert
restriction enthält, kann das Element nicht durch
ein Element, das auf einer Einschränkung des Typs des Elements basiert, ersetzt werden.
- Wenn das Attribut block den Wert
extension enthält, kann das Element nicht durch
ein Element, das auf einer Erweiterung des Typs des Elements basiert, ersetzt werden.
- Wenn das Attribut block den Wert
substitution enthält, kann das Element nicht durch
ein Element, das ein Mitglied der Ersetzungsgruppe des Elements ist, ersetzt werden.
- Wenn das Attribut block den Wert
all enthält, gelten alle oben genannten Begrenzungen.
- Attribut final für Elemente
- Das Attribut final für ein Element begrenzt die
Gruppe der globalen Elemente, die ein Mitglied der Ersetzungsgruppe des Elements sein können.
Das Attribut final kann einer beliebigen
Untermenge der Werte restriction
(Einschränkung), extension (Erweiterung)
oder all (Alle) entsprechen.
- Wenn das Attribut final den Wert
restriction enthält, kann ein Element, das auf
einer Einschränkung des Typs des Elements basiert, nicht in der Ersetzungsgruppe des Elements
enthalten sein.
- Wenn das Attribut final den Wert
extension enthält, kann ein Element, das auf
einer Erweiterung des Typs des Elements basiert, nicht in der Ersetzungsgruppe des Elements
enthalten sein.
- Wenn das Attribut final den Wert
all enthält, gelten beide oben genannten
Begrenzungen.
- Attribut block für komplexe Typen
- Das Attribut block für einen komplexen Typ begrenzt
die Gruppe der anderen Typen, durch die der komplexe Typ ersetzt werden kann. Das Attribut
block kann den Wert
restriction (Einschränkung),
extension (Erweiterung) oder
all (alle) annehmen. Die Werte haben
dieselbe Bedeutung wie für das Blockattribut eines Elements (siehe oben). Ein Element, das
Mitglied einer Ersetzungsgruppe ist, kann das Hauptelement nur dann ersetzen, wenn sein Typ mit dem
Blockattribut für den Typ des Hauptelements kompatibel ist.
- Standardwerte für Attribute block und
final
- Für die Attribute block und
final können auf der Ebene der Nachrichtendefinitionsdatei
Standardwerte festgelegt werden. Wenn für eines oder beide dieser Attribute ein Standardwert
festgelegt wurde und das relevante block- oder
final-Attribut nicht auf Objektebene festgelegt wurde,
wird für das betreffende Objekt die Standardeinstellung verwendet. Sie können die
Standardeinstellung auf Objektebene überschreiben.