Indikator Tipe Kombinasi XSD

Dengan indikator, kita dapat mengendalikan cara penggunaan elemen dalam dokumen.

Indikator

Ada tujuh indikator:

Indikator urutan:

  • All
  • Choice
  • Sequence

Indikator kemunculan:

  • maxOccurs
  • minOccurs

Indikator kelompok:

  • Nama kelompok
  • attributeGroup name

Penunjuk Order

Penunjuk Order digunakan untuk mendefinisikan urutan elemen.

Penunjuk All

<all> penunjuk menentukan penampilan elemen anak dapat berada di 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 menetapkan <minOccurs> menjadi 0 atau 1, dan hanya dapat menetapkan penunjuk <maxOccurs> menjadi 1 (akan dijelaskan <minOccurs> dan <maxOccurs> nanti).

Penunjuk Choice

<choice> penunjuk menentukan penampilan suatu elemen anak atau penampilan elemen anak lainnya (atau salah satu atau yang lain):

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

Pemberitahuan:Untuk mengatur penampilan elemen anak berapa kali saja, 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 paling banyak 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 elemen "person" paling sedikit 1 kali (dengan nilai default minOccurs adalah 1), paling banyak 10 kali.

Penunjuk minOccurs

<minOccurs> penunjuk dapat menentukan jumlah paling sedikit 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 elemen "person" paling sedikit 0 kali, paling banyak 10 kali.

Pemberitahuan:Untuk membuat kemunculan suatu elemen tidak terbatas, gunakan deklarasi maxOccurs="unbounded":

Contoh yang nyata:}

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". 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 mendefinisikan elemen grup yang relevan.

Kelompok elemen

Kelompok elemen dapat didefiniskan melalui deklarasi group:

<xs:group name="组名称">
  ...
</xs:group>

Anda harus mendefiniskan elemen all, choice, atau sequence di dalam deklarasi group. Contoh di bawah ini mendefinisikan group dengan nama "persongroup" yang mendefiniskan kelompok 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>

Setelah Anda menyelesaikan definisi group, Anda dapat mengutipnya di 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 dapat didefiniskan melalui deklarasi attributeGroup:

<xs:attributeGroup name="组名称">
  ...
</xs:attributeGroup>

Contoh di bawah ini mendefinisikan grup atribut dengan nama "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>

Setelah Anda menyelesaikan definisi grup atribut, Anda dapat mengutipnya di 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>