Penggantian Elemen XSD (Element Substitution)
- Halaman Sebelumnya XSD <anyAttribute>
- Halaman Berikutnya Contoh XSD
Dengan XML Schema, satu elemen dapat menggantikan elemen lain.
Penggantian Elemen
Kami akan berikan contoh: pengguna kami berasal dari Inggris dan Norwegia. Kami ingin mempunyai kemampuan untuk memungkinkan pengguna memilih untuk menggunakan nama elemen dalam bahasa Norwegia atau Inggris di dokumen XML.
Untuk memecahkan masalah ini, kami dapat mendefinisikan salah satu di skema XML: substitutionGroup.Pertama, kami mengumumkan elemen utama, kemudian kami akan mengumumkan elemen sekunder, yang dapat mengumumkan bahwa mereka dapat menggantikan elemen utama.
<xs:element name="name" type="xs:string"/> <xs:element name="navn"> substitutionGroup="name"/>
Dalam contoh di atas, elemen "name" adalah elemen utama, sedangkan elemen "navn" dapat menggantikan elemen "name".
Lihat bagian skema XML yang berikut:
<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 sah seperti ini (sesuai skema di atas):
<customer> <name>John Smith</name> </customer>
atau seperti ini:
<kunde> <navn>John Smith</navn> </kunde>
Mencegah penggantian elemen
Untuk mencegah elemen lain menggantikan elemen yang ditentukan, gunakan atribut block:
<xs:element name="name" type="xs:string"> block="substitution"/>
Lihat bagian skema XML yang berikut:
<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 sah seharusnya seperti ini (sesuai skema di atas):
<customer> <name>John Smith</name> </customer>
tetapi dokumen di bawah ini tidak sah lagi:
<kunde> <navn>John Smith</navn> </kunde>
Penggunaan substitutionGroup
Tipe elemen yang dapat diganti harus sama dengan tipe elemen utama, atau turun dari elemen utama. Jika tipe elemen yang dapat diganti sama dengan tipe elemen utama, maka Anda tidak perlu menentukan tipe elemen yang dapat diganti.
Perhatikan, semua elemen di dalam substitutionGroup (elemen utama dan elemen yang dapat diganti) harus dideklarasikan sebagai elemen global, atau hal itu tidak akan berfungsi!
Apa itu Elemen Global (Global Elements)?
Elemen Global adalah elemen yang langsung menjadi anak dari elemen "schema"! Elemen Lokal (Local elements) adalah elemen yang disemua di dalam elemen lain.
- Halaman Sebelumnya XSD <anyAttribute>
- Halaman Berikutnya Contoh XSD