Latest web development tutorials

Menggantikan elemen XML Schema

Dengan XML Schema, elemen bisa diganti dengan unsur lain.


elemen diganti

Mari kita menggambarkan: pelanggan kami dari Inggris dan Norwegia. Kami ingin memiliki kemampuan untuk membiarkan pengguna memilih untuk menggunakan nama-nama unsur Norwegia dalam dokumen XML atau nama Inggris dari elemen.

Untuk mengatasi masalah ini, kita dapat mendefinisikan substitutionGroup dalam skema XML. Pertama, kita mendeklarasikan elemen utama, maka kita akan mendeklarasikan elemen minor, elemen-elemen ini dapat dinyatakan setelah mereka mampu menggantikan unsur utama.

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

Dalam contoh di atas, "nama" elemen adalah elemen utama, "navn" elemen dapat menggantikan "nama" elemen.

Mempertimbangkan skema XML fragmen:

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

dokumen XML yang valid seperti ini (menurut skema di atas):

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

Atau sesuatu seperti ini:

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


Ganti berhenti elemen

Untuk mencegah unsur-unsur lain mengganti elemen yang ditentukan, menggunakan sifat blok:

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

Melihat skema XML fragmen:

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

dokumen XML yang valid akan terlihat seperti ini (menurut skema di atas):

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

Namun, dokumen berikut tidak lagi sah:

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


Gunakan substitutionGroup

elemen diganti harus menjadi unsur utama dari jenis yang sama, atau berasal dari unsur utama. Jika jenis dapat menggantikan unsur unsur-unsur utama dari jenis yang sama, Anda tidak akan harus menentukan jenis elemen dapat diganti.

Harap dicatat, substitutionGroup semua elemen dalam (elemen primer dan elemen diganti) harus dinyatakan sebagai elemen global, selain itu tidak akan bekerja!


Apa elemen global (global Elements)?

elemen global yang mengacu pada elemen anak langsung dari "skema" elemen! unsur lokal (unsur lokal) mengacu pada unsur-unsur bersarang di dalam unsur-unsur lain.