XSD 复合类型指示器
Dengan indikator, kita dapat mengawasi cara penggunaan elemen dalam dokumen.
Indikator
Ada tujuh indikator:
Indikator urutan:
- Semua
- Pilihan
- Sequens
Indikator kemunculan:
- maxOccurs
- minOccurs
Indikator kumpulan:
- Nama kumpulan
- attributeGroup name
Penunjuk Order
Penunjuk Order digunakan untuk mendefinisikan urutan elemen.
Penunjuk All
<all> penunjuk menentukan elemen anak dapat muncul dengan urutan apapun, dan setiap elemen anak hanya dapat muncul sekali:
<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>
Keterangan:Ketika menggunakan penunjuk <all>, anda dapat mengatur <minOccurs> menjadi 0 atau 1, dan hanya dapat mengatur penunjuk <maxOccurs> menjadi 1 (akan dijelaskan <minOccurs> dan <maxOccurs> nanti).
Penunjuk Choice
<choice> penunjuk menentukan apakah elemen anak dapat muncul atau dapat muncul elemen anak lain (atau salah satu):
<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>
Petunjuk:Untuk mengatur penampilan elemen anak berulang bebas, atur <maxOccurs> (akan dijelaskan nanti) menjadi unbounded (tanpa batas).
Penunjuk Sequence
<sequence> menentukan urutan penampilan elemen anak:
<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>
Penunjuk Occurrence
Penunjuk Occurrence digunakan untuk mendefinisikan frekuensi penampilan suatu elemen.
Keterangan:Untuk semua penunjuk "Order" dan "Group" (any, all, choice, sequence, nama group serta referensi group), nilai default maxOccurs dan minOccurs adalah 1.
Penunjuk maxOccurs
<maxOccurs> penunjuk dapat menentukan jumlah maksimum penampilan suatu elemen:
<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>
Contoh di atas menunjukkan bahwa elemen anak "child_name" dapat muncul di dalam elemen "person" paling sedikit 1 kali (dengan nilai default minOccurs adalah 1), paling banyak 10 kali.
Penunjuk minOccurs
<minOccurs> penunjuk dapat menentukan jumlah minimum penampilan suatu elemen:
<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>
Contoh di atas menunjukkan bahwa elemen anak "child_name" dapat muncul di dalam elemen "person" paling sedikit 0 kali, paling banyak 10 kali.
Petunjuk:Jika anda ingin mengatur penampilan suatu elemen untuk tidak terbatas, gunakan deklarasi maxOccurs="unbounded":
Contoh yang sebenarnya:
Berkas XML bernama "Myfamily.xml":
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
Berkas XML di atas mengandung elemen utama bernama "persons" di dalamnya, kami mendefinisikan tiga elemen "person" di dalamnya. Setiap elemen "person" harus memiliki elemen "full_name", dan dapat mengandung hingga 5 elemen "child_name".
Ini adalah berkas schema "family.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?> <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 Group
Indikator Group digunakan untuk menentukan elemen batch yang relevan.
Grup elemen
Grup elemen diatur melalui deklarasi group:
<xs:group name="组名称"> ... </xs:group>
Anda mesti mengatur satu elemen all, choice atau sequence di dalam deklarasi group. Contoh di bawah ini mendefinisikan group yang dinamakan "persongroup", yang mendefinisikan suatu grup elemen yang harus muncul dengan urutan yang tepat:
<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>
Dalam pertengahan pengaturan group yang anda selesai, anda dapat merujuk ke dalam definisi lainnya:
<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>
Grup atribut
Grup atribut diatur melalui deklarasi attributeGroup:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Contoh di bawah ini mendefinisikan satu grup atribut yang dinamakan "personattrgroup":
<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>
Dalam pertengahan pengaturan atribut grup yang anda selesai, anda dapat merujuk ke dalam definisi lainnya seperti ini:
<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>