Ultimele tutoriale de dezvoltare web
 

XSD Element Schimbare


Cu schemele XML, un element poate substitui un alt element.


Element Schimbare

Să presupunem că avem utilizatori din două țări diferite: Anglia și Norvegia. Ne-ar dori abilitatea de a lăsa utilizatorul alege dacă el sau ea ar dori să utilizeze numele elementelor norvegiană sau numele elementelor limba engleză în documentul XML.

Pentru a rezolva această problemă, am putea defini o substitutionGroup în schema XML. În primul rând, declarăm un element de cap și apoi declarăm celelalte elemente care afirmă că acestea sunt substituibile pentru elementul cap.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

In exemplul de mai sus, "name" element este elementul central și "navn" element este substituibile "name" .

Uită-te la acest fragment dintr-o schemă XML:

<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"/>

Un document XML valid (according to the schema above) de (according to the schema above) ar putea arata astfel:

<customer>
  <name>John Smith</name>
</customer>

sau ca aceasta:

<kunde>
  <navn>John Smith</navn>
</kunde>

Blocarea Element Schimbare

Pentru a preveni alte elemente din substituirea cu un element specificat, folosiți block atribut:

<xs:element name="name" type="xs:string" block="substitution"/>

Uită-te la acest fragment dintr-o schemă XML:

<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"/>

Un document XML valid (according to the schema above) de (according to the schema above) arată astfel:

<customer>
  <name>John Smith</name>
</customer>

Dar acest lucru este nu mai este valabil:

<kunde>
  <navn>John Smith</navn>
</kunde>

Utilizarea substitutionGroup

Tipul elementelor substituibile trebuie să fie aceeași ca și, sau derivate din, tipul elementului cap. În cazul în care tipul elementului substituibil este același cu tipul elementului cap nu va trebui să specificați tipul elementului substituibile.

Rețineți că toate elementele din substitutionGroup (elementul cap și elementele de substituție) trebuie să fie declarate ca elemente globale, în caz contrar nu va funcționa!


Care sunt elementele globale?

Elementele globale sunt elemente care sunt copii imediate ale "schema" elementul! elemente locale sunt elemente imbricate în alte elemente.