Indikator Tipe Kombinasi XSD

Dengan indikator, kami dapat mengawasi cara penggunaan elemen dalam dokumen.

Indikator

Ada tujuh indikator:

Indikator Order:

  • Semua
  • Pilihan
  • Sequence

Indikator Occurrence:

  • maxOccurs
  • minOccurs

Indikator Group:

  • Group name
  • attributeGroup name

Indikator Order

Indikator Order digunakan untuk mendefinisikan urutan elemen.

Indikator All

<all> indikator menentukan elemen anak dapat muncul dengan urutan yang berbeda, dan setiap elemen anak harus 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 indikator <all>, dapat menata <minOccurs> menjadi 0 atau 1, dan hanya dapat menata indikator <maxOccurs> menjadi 1 (akan disebutkan lebih lanjut tentang <minOccurs> dan <maxOccurs>).

Indikator Choice

<choice> indikator menentukan elemen anak yang dapat muncul atau dapat muncul elemen anak lainnya (atau yang 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>

Petunjuk:Untuk mengatur penampilan elemen anak berangkat berapapun kali, dapat mengatur <maxOccurs> (akan disebutkan nanti) menjadi unbounded (tidak terbatas).

Indikator Sequence

<sequence> menentukan urutan penampilan elemen anak harus mengikuti urutan khusus:

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

Indikator Occurrence

Indikator Occurrence digunakan untuk mendefinisikan frekuensi penampilan elemen.

Keterangan:Untuk semua indikator "Order" dan "Group" (any, all, choice, sequence, nama group serta referensi group), nilai default maxOccurs dan minOccurs adalah 1.

Indikator maxOccurs

<maxOccurs> indikator dapat menentukan jumlah paling banyak kali penampilan elemen yang akan muncul:

<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 "child_name" dapat muncul di dalam elemen "person" paling sedikit muncul sekali (dengan nilai default minOccurs adalah 1), dan paling banyak 10 kali.

Indikator minOccurs

<minOccurs> indikator dapat menentukan jumlah paling sedikit kali penampilan elemen yang akan muncul:

<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 "child_name" dapat muncul di dalam elemen "person" paling sedikit 0 kali dan paling banyak 10 kali.

Petunjuk:Untuk membuat kemunculan elemen 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 ini mengandung elemen utama bernama "persons". Dalam elemen utama ini, kami mendefinisikan tiga elemen "person". Setiap elemen "person" harus memiliki elemen "full_name", dan dapat mengandung sampai 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>

Pemindai Group

Pemindai Group digunakan untuk menetapkan elemen yang berhubungan dalam batch.

Grup elemen

Grup elemen ditetapkan melalui deklarasi group:

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

Anda harus menetapkan elemen all, choice, atau sequence di dalam deklarasi group. Contoh di bawah ini menetapkan group yang dinamai "persongroup", yang menetapkan 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>

Setelah Anda menetapkan definisi group, Anda dapat mengutamakan dia 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 ditetapkan melalui deklarasi attributeGroup:

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

Contoh di bawah ini mendefinisikan grup atribut yang dinamai "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 selesai menetapkan grup atribut, Anda dapat mengutamakan dia 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>