XSD Element Substitution
- Previous Page XSD <anyAttribute>
- Next Page XSD Instance
Durch XML Schema kann ein Element ein anderes Element ersetzen.
Elementersatz
Lassen Sie uns ein Beispiel nennen: Unsere Benutzer kommen aus Großbritannien und Norwegen. Wir möchten in der Lage sein, den Benutzern zu ermöglichen, zwischen norwegischen und englischen Elementnamen in XML-Dokumenten zu wählen.
Um dieses Problem zu lösen, können wir in XML Schema eine definieren. substitutionGroupZunächst erklären wir den Hauptelement, dann erklären wir die Nebenlemente, die sie erklären können, dass sie den Hauptelement ersetzen können.
<xs:element name="name" type="xs:string"/> <xs:element name="navn"/> substitutionGroup="name"/>
Im obigen Beispiel ist das "name"-Element das Hauptelement, während das "navn"-Element das "name"-Element ersetzen kann.
Sehen Sie sich einen Teil eines XML-Schemas an:
<xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo"/> <xs:element name="kunde" substitutionGroup="customer"/>
Eine gültige XML-Dokumentation ähnelt diesem (basierend auf dem obigen Schema):
<customer> <name>John Smith</name> </customer>
oder ähnlich wie folgt:
<kunde> <navn>John Smith</navn> </kunde>
Verhindern Sie die Ersetzung von Elementen
Um zu verhindern, dass andere Elemente ein bestimmtes Element ersetzen, verwenden Sie das Attribut block:
<xs:element name="name" type="xs:string"> block="substitution"/>
Sehen Sie sich einen Teil eines XML-Schemas an:
<xs:element name="name" type="xs:string" block="substitution"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo" block="substitution"/> <xs:element name="kunde" substitutionGroup="customer"/>
Eine gültige XML-Dokumentation sollte ähnlich aussehen (basierend auf dem obigen Schema):
<customer> <name>John Smith</name> </customer>
Doch das folgende Dokument ist nicht mehr gültig:
<kunde> <navn>John Smith</navn> </kunde>
Verwenden Sie substitutionGroup
Der Typ des austauschbaren Elements muss dem des Hauptelements entsprechen oder von diesem abgeleitet sein. Wenn der Typ des austauschbaren Elements dem des Hauptelements entspricht, müssen Sie den Typ des austauschbaren Elements nicht festlegen.
Please note that all elements (main elements and substitutable elements) within the substitutionGroup must be declared as global elements, otherwise they will not work!
What are Global Elements (Global Elements)?
Global elements refer to the direct children of the "schema" element! Local elements (Local elements) refer to elements nested within other elements.
- Previous Page XSD <anyAttribute>
- Next Page XSD Instance