XSD indikatorlari
Indikatorlar yordamida elementlar hujjatlarda QANDAY ishlatilishini boshqarishimiz mumkin.
Indikatorlar
Yettita indikator mavjud:
Tartib indikatorlari:
- All
- Choice
- Sequence
Takrorlanish indikatorlari:
- maxOccurs
- minOccurs
Guruh indikatorlari:
- Group nomi
- attributeGroup nomi
Tartib indikatorlari
Tartib indikatorlari elementlarning tartibini aniqlash uchun ishlatiladi.
All indikatori
<all> indikatori bola elementlar istalgan tartibda kelishi mumkinligini va har bir bola element faqat bir marta kelishi kerakligini belgilaydi:
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>Eslatma: <all> indikatoridan foydalanganda <minOccurs> indikatorini 0 yoki 1 ga o‘rnatishingiz mumkin, <maxOccurs> indikatorini esa faqat 1 ga o‘rnatish mumkin (<minOccurs> va <maxOccurs> keyinroq tavsiflanadi).
Choice indikatori
<choice> indikatori yo bir bola element, yo boshqasi kelishi mumkinligini belgilaydi:
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>Sequence indikatori
<sequence> indikatori bola elementlar ma’lum bir tartibda kelishi kerakligini belgilaydi:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>Takrorlanish indikatorlari
Takrorlanish indikatorlari element necha marta kelishi mumkinligini aniqlash uchun ishlatiladi.
Eslatma: Barcha "Order" (tartib) va "Group" (guruh) indikatorlari (any, all, choice, sequence, group name va group reference) uchun maxOccurs va minOccurs’ning standart qiymati 1 ga teng.
maxOccurs indikatori
<maxOccurs> indikatori element ko‘pi bilan necha marta kelishi mumkinligini belgilaydi:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>Yuqoridagi misol "child_name" elementi "person" elementida kamida bir marta (minOccurs’ning standart qiymati 1) va ko‘pi bilan o‘n marta kelishi mumkinligini bildiradi.
minOccurs indikatori
<minOccurs> indikatori element kamida necha marta kelishi mumkinligini belgilaydi:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>Yuqoridagi misol "child_name" elementi "person" elementida kamida nol marta va ko‘pi bilan o‘n marta kelishi mumkinligini bildiradi.
Maslahat: Element cheksiz marta kelishiga ruxsat berish uchun maxOccurs="unbounded" ko‘rsatmasidan foydalaning:
Ishlaydigan misol:
"Myfamily.xml" nomli XML fayl:
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Hege Refsnes</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>Tove Refsnes</full_name>
<child_name>Hege</child_name>
<child_name>Stale</child_name>
<child_name>Jim</child_name>
<child_name>Borge</child_name>
</person>
<person>
<full_name>Stale Refsnes</full_name>
</person>
</persons>Yuqoridagi XML fayl "persons" nomli ildiz elementni o‘z ichiga oladi. Bu ildiz element ichida uchta "person" elementini aniqlaganmiz. Har bir "person" elementi "full_name" elementini o‘z ichiga olishi shart va beshtagacha "child_name" elementini o‘z ichiga olishi mumkin.
Mana "family.xsd" sxema fayli:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>Guruh indikatorlari
Guruh indikatorlari o‘zaro bog‘liq element to‘plamlarini aniqlash uchun ishlatiladi.
Element guruhlari
Element guruhlari group e’loni bilan quyidagicha aniqlanadi:
<xs:group name="groupname">
...
</xs:group>group e’loni ichida all, choice yoki sequence elementini aniqlashingiz kerak. Quyidagi misol aniq ketma-ketlikda kelishi kerak bo‘lgan elementlar guruhini belgilaydigan "persongroup" nomli guruhni aniqlaydi:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>Guruhni aniqlaganingizdan so‘ng, unga boshqa ta’rifda quyidagicha havola qilishingiz mumkin:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>Atribut guruhlari
Atribut guruhlari attributeGroup e’loni bilan quyidagicha aniqlanadi:
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>Quyidagi misol "personattrgroup" nomli atribut guruhini aniqlaydi:
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>Atribut guruhini aniqlaganingizdan so‘ng, unga boshqa ta’rifda quyidagicha havola qilishingiz mumkin:
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
