tutorial pengembangan web terbaru
 

XSD Element Pergantian


Dengan XML Schemas, salah satu elemen dapat menggantikan unsur lain.


elemen Pergantian

Mari kita mengatakan bahwa kita memiliki pengguna dari dua negara yang berbeda: Inggris dan Norwegia. Kami ingin kemampuan untuk membiarkan pengguna memilih apakah ia ingin menggunakan nama elemen Norwegia atau nama elemen bahasa Inggris dalam dokumen XML.

Untuk mengatasi masalah ini, kita bisa mendefinisikan substitutionGroup dalam skema XML. Pertama, kita mendeklarasikan elemen kepala dan kemudian kita menyatakan unsur-unsur lain yang menyatakan bahwa mereka adalah disubstitusikan untuk elemen kepala.

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

Dalam contoh di atas, "name" elemen elemen kepala dan "navn" elemen disubstitusikan untuk "name" .

Lihatlah fragmen ini skema 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"/>

Sebuah dokumen XML yang valid (according to the schema above) bisa terlihat seperti ini:

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

atau seperti ini:

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

Memblokir Element Pergantian

Untuk mencegah unsur-unsur lain dari mengganti dengan elemen tertentu, gunakan block atribut:

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

Lihatlah fragmen ini skema 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"/>

Sebuah dokumen XML yang valid (according to the schema above) terlihat seperti ini:

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

TAPI INI TIDAK LAGI VALID:

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

menggunakan substitutionGroup

Jenis elemen disubstitusikan harus sama dengan, atau berasal dari, jenis unsur kepala. Jika jenis elemen disubstitusikan adalah sama dengan jenis elemen kepala Anda tidak perlu menentukan jenis elemen disubstitusikan.

Perhatikan bahwa semua elemen dalam substitutionGroup (unsur kepala dan elemen disubstitusikan) harus dinyatakan sebagai elemen global, selain itu tidak akan bekerja!


Apa Elements global?

Unsur-unsur global adalah elemen yang adalah anak-anak langsung dari "schema" elemen! unsur lokal adalah elemen bersarang di dalam unsur-unsur lain.