XSD almashtirish


XML sxemalarida bir element boshqa element o‘rnini bosishi mumkin.


ULASHISH

Elementni almashtirish

Aytaylik, bizda ikki xil mamlakatdan — Angliya va Norvegiyadan foydalanuvchilar bor. Biz foydalanuvchiga XML hujjatda norveg tilidagi element nomlaridan yoki ingliz tilidagi element nomlaridan foydalanishni tanlash imkonini bermoqchimiz.

Bu muammoni hal qilish uchun XML sxemasida substitutionGroup aniqlashimiz mumkin. Avval bosh elementni e’lon qilamiz, so‘ngra bosh element o‘rnini bosa olishini bildiruvchi boshqa elementlarni e’lon qilamiz.

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

Yuqoridagi misolda "name" elementi — bosh element, "navn" elementi esa "name" o‘rnini bosa oladi.

XML sxemasining ushbu fragmentiga qarang:

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

Yaroqli XML hujjat (yuqoridagi sxemaga ko‘ra) quyidagicha ko‘rinishi mumkin:

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

yoki quyidagicha:

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


Elementni almashtirishni bloklash

Boshqa elementlar belgilangan element o‘rnini bosishining oldini olish uchun block atributidan foydalaning:

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

XML sxemasining ushbu fragmentiga qarang:

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

Yaroqli XML hujjat (yuqoridagi sxemaga ko‘ra) quyidagicha ko‘rinadi:

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

LEKIN BU ENDI YAROQLI EMAS:

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

substitutionGroup’dan foydalanish

O‘rnini bosuvchi elementlarning tipi bosh element tipi bilan bir xil yoki undan hosil qilingan bo‘lishi kerak. Agar o‘rnini bosuvchi element tipi bosh element tipi bilan bir xil bo‘lsa, o‘rnini bosuvchi element tipini ko‘rsatishingiz shart emas.

E’tibor bering, substitutionGroup’dagi barcha elementlar (bosh element va o‘rnini bosuvchi elementlar) global elementlar sifatida e’lon qilinishi kerak, aks holda bu ishlamaydi!


Global elementlar nima?

Global elementlar — "schema" elementining bevosita bolalari bo‘lgan elementlar! Lokal elementlar — boshqa elementlar ichiga joylashtirilgan elementlar.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!