Indikator XML Schema
Dengan indikator, kita dapat mengontrol penggunaan unsur-unsur dalam modus dokumen.
indikator
Ada tujuh indikator:
Indikator Order:
- semua
- pilihan
- urutan
Indikator terjadinya:
- maxOccurs
- minOccurs
Kelompok indikator:
- nama grup
- nama attributeGroup
indikator rangka
Indikator rangka yang digunakan untuk menentukan urutan elemen.
semua indikator
<Semua> indikator sesuai dengan ketentuan sub-elemen dapat muncul dalam urutan apapun, dan setiap elemen anak harus muncul sekali:
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Catatan: Bila menggunakan <semua> indikator, Anda dapat menempatkan <minOccurs> diatur ke 0 atau 1, tetapi hanya <maxOccurs> indikator diatur ke 1 (kemudian menjelaskan <minOccurs> dan <maxOccurs>).
pilihan Indicator
<Penghargaan> indikator menyediakan untuk sub-elemen terjadi atau dapat terjadi elemen anak lain (atau yang lain):
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
urutan Indicator
<Urutan> elemen anak harus ditentukan dalam urutan tertentu:
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
indikator terjadinya
indikator terjadinya digunakan untuk menentukan frekuensi elemen terjadi.
Catatan: Untuk semua "Order" dan "Grup" indikator (apapun, semua, pilihan, urut , nama grup dan kelompok referensi), yang maxOccurs dan minOccurs default adalah 1.
indikator maxOccurs
<MaxOccurs> indikator dapat menentukan jumlah maksimum kali elemen dapat terjadi:
<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>
Contoh di atas menunjukkan bahwa anak elemen "CHILD_NAME" mungkin muncul dalam setidaknya "orang" elemen sekali (di mana nilai default dari minOccurs adalah 1), muncul paling banyak 10 kali.
indikator minOccurs
<MinOccurs> indikator mungkin memerlukan jumlah minimum kali elemen dapat terjadi:
<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>
Contoh di atas menunjukkan bahwa anak elemen "CHILD_NAME" mungkin ada minimal 0 di "orang" elemen, muncul paling banyak 10 kali.
Tip: Untuk membuat jumlah kejadian dari suatu unsur tidak terbatas, gunakan maxOccurs = "tak terbatas" pernyataan ini:
Sebuah contoh praktis:
Disebut "Myfamily.xml" file XML:
<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>
Di atas file XML ini berisi elemen root bernama "orang" dari. Dalam elemen akar ini, kita telah mendefinisikan tiga "orang" elemen. Setiap "orang" elemen harus berisi "FULL_NAME" elemen, tetapi mungkin berisi hingga 5 "CHILD_NAME" elemen.
Ini adalah skema file "family.xsd":
<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>
indikator kelompok
Indikator Group untuk beberapa batch elemen yang terkait dengan definisi.
elemen Grup
kelompok elemen yang didefinisikan oleh kelompok menyatakan:
...
</xs:group>
Anda harus menentukan sebuah pernyataan dalam kelompok semua, pilihan atau urutan elemen. Contoh berikut mendefinisikan kelompok bernama "persongroup", yang mendefinisikan satu set elemen yang harus hadir sesuai dengan urutan yang tepat:
<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>
Setelah Anda telah didefinisikan kelompok selesai, Anda dapat merujuk ke dalam definisi lain dari:
<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>
kelompok properti
Atribut kelompok didefinisikan oleh pernyataan attributeGroup:
...
</xs:attributeGroup>
Contoh berikut mendefinisikan kelompok properti bernama "personattrgroup" dari:
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
Setelah Anda telah menetapkan satu set lengkap atribut, Anda dapat referensi itu dalam definisi lain, seperti:
<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>