XSD Element Vervanging
Met XML-skemas kan een element 'n ander element vervang.
Elementvervanging
Kom ons sê dat ons gebruikers van twee verskillende lande het: Engeland en Noorweë. Ons wil graag die vermoë hê om die gebruiker te laat kies of hy of sy die Noorse elementname of die Engelse elementname in die XML-dokument wil gebruik.
Om hierdie probleem op te los, kan ons 'n substitusiegroep in die XML-skema definieer. Eerstens verklaar ons 'n hoofelement en dan verklaar ons die ander elemente wat sê dat hulle vervangbaar is vir die hoofelement.
<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>
In die voorbeeld hierbo is die "naam"-element die kopelement en die "naam"-element is vervangbaar vir "naam".
Kyk na hierdie fragment van 'n XML-skema:
<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"/>
'n Geldige XML-dokument (volgens die skema hierbo) kan soos volg lyk:
<customer>
<name>John Smith</name>
</customer>
of soos volg:
<kunde>
<navn>John Smith</navn>
</kunde>
Blokkeerelementvervanging
Om te verhoed dat ander elemente met 'n gespesifiseerde element vervang, gebruik die blokkenmerk:
<xs:element name="name" type="xs:string" block="substitution"/>
Kyk na hierdie fragment van 'n XML-skema:
<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"/>
'n Geldige XML-dokument (volgens die skema hierbo) lyk soos volg:
<customer>
<name>John Smith</name>
</customer>
MAAR DIT IS NIE MEER GELDIG NIE:
<kunde>
<navn>John Smith</navn>
</kunde>
Gebruik substitusiegroep
Die tipe van die vervangbare elemente moet dieselfde wees as, of afgelei van, die tipe van die kopelement. As die tipe van die vervangbare element dieselfde is as die tipe van die kopelement, hoef jy nie die tipe van die vervangbare element te spesifiseer nie.
Let daarop dat alle elemente in die substitusiegroep (die kopelement en die vervangbare elemente) as globale elemente verklaar moet word, anders sal dit nie werk nie!
Wat is globale elemente?
Globale elemente is elemente wat onmiddellike kinders van die "skema"-element is! Plaaslike elemente is elemente wat binne ander elemente geneste is.