Elemen Kombinasi XSD

Elemen gabungan mengandung elemen lain serta/atau atribut.

Apa itu elemen gabungan?

Elemen gabungan merujuk kepada elemen XML yang mengandung elemen lain serta/atau atribut.

Terdapat empat jenis elemen gabungan:

  • Elemen kosong
  • Elemen yang mengandung elemen lain
  • Elemen yang hanya mengandung teks
  • Elemen yang mengandung elemen dan teks

Keterangan:Elemen di atas dapat mengandung atribut!

Contoh elemen gabungan

Elemen gabungan, "product", kosong:

<product pid="1345"/>

Elemen gabungan, "employee", hanya mengandung elemen lain:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

Elemen gabungan, "food", hanya mengandung teks:

<food type="dessert">Ice cream</food>

Elemen gabungan, "description", mengandung elemen dan teks:

<description>
Peristiwa ini terjadi pada <date lang="norwegian">03.03.99</date> ....
</description>

Bagaimana hendak memdefinikan elemen gabungan?

Lihat elemen gabungan XML ini, "employee", hanya berisi elemen lain:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

Dalam XML Schema, ada dua cara untuk mendefinisikan elemen gabungan:

1. Dengan menamakan elemen ini, anda dapat mengumumkan elemen "employee" seperti ini:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Jika anda menggunakan metode yang dijelaskan di atas, hanya "employee" yang boleh menggunakan jenis gabungan yang diatur. Perhatikan bahwa elemen anak, "firstname" dan "lastname", diselengkapkan dalam penunjuk <sequence>. Ini berarti elemen anak harus muncul dalam urutan yang diumumkan. Anda akan menemukan Penunjuk XSD Bagian ini mengajarkan lebih banyak tentang penunjuk.

2. Elemen "employee" boleh digunakan untuk atribut type, yang berfungsi untuk merujuk kepada nama jenis gabungan yang digunakan:

<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Jika anda menggunakan metode yang dijelaskan di atas, beberapa elemen dapat menggunakan jenis gabungan yang sama, seperti ini:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Anda boleh menambahkan beberapa elemen di atas elemen gabungan yang sudah ada, seperti ini:

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>