element complexType XML Schema

definisi dan penggunaan

complexType element mendefinisikan tipe kompleks. Element tipe kompleks adalah XML element yang mengandung element lain dan/atau atribut.

informasi element

kali muncul tidak terbatas dalam arsitektur; sekali dalam element.
element parent element、redefine、schema
konten annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute

gramatika

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|daftar dari (ekstensi|batasan))
final=(#all|daftar dari (ekstensi|batasan))
attributes yang mana
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((atribut|grupAtribut)*,anyAttribute?))))
</complexType>

(? Simbol deklarasi dalam elemen complexType, elemen dapat muncul nol atau satu kali, * simbol deklarasi elemen dapat muncul nol atau beberapa kali.)

Atribut

id

Pilihan. Menentukan ID unik elemen ini.

name

Pilihan. Menentukan nama elemen.

abstract

Pilihan. Menentukan apakah tipe kompleks dapat digunakan di dokumen instansia. Jika nilai ini adalah true, elemen tidak dapat menggunakan tipe kompleks langsung, melainkan harus menggunakan tipe kompleks turunan. Nilai defaultnya adalah false.

mixed

Pilihan. Menentukan apakah data karakter dapat muncul di antara elemen anak tipe kompleks ini. Nilai defaultnya adalah false.

  • Jika elemen simpleContent adalah elemen anak, properti mixed tidak diijinkan.
  • Jika elemen complexContent adalah elemen anak, properti mixed ini dapat di-override oleh properti mixed elemen complexContent.

block

Pilihan. Mencegah penggunaan tipe kompleks yang memiliki tipe turunan yang ditentukan untuk menggantikan tipe kompleks ini. Nilai ini dapat mengandung #all atau daftar, daftar ini adalah bagian dari ekstensi atau batasan:

  • extension - Mencegah penggunaan tipe kompleks turunan yang diambil melalui ekstensi untuk menggantikan tipe kompleks ini.
  • restriction - Mencegah penggunaan tipe kompleks turunan yang diambil melalui batasan untuk menggantikan tipe kompleks ini.
  • #all - Mencegah penggunaan semua tipe kompleks turunan untuk menggantikan tipe kompleks ini.

final

Pilihan. Mencegah penggunaan tipe kompleks yang diambil dari elemen complexType ini. Nilai ini dapat mengandung #all atau daftar, daftar ini adalah bagian dari ekstensi atau batasan.

  • extension - Mencegah derivasi melalui ekspansi.
  • restriction - Mencegah derivasi melalui batasan.
  • #all - Mencegah semua derivasi (ekspansi dan batasan).

attributes yang mana

Pilihan. Tentukan properti lain yang memiliki ruang nama non-schema.

Contoh

Contoh 1

Contoh di bawah ini memiliki elemen kompleks bernama "note":

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

Contoh 2

Contoh di bawah ini mengandung tipe kompleks "fullpersoninfo" yang memperluas tipe yang diwarisi melalui tiga elemen tambahan (address, city dan country), turun dari tipe kompleks lainnya "personinfo":

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

在上面的例子中,上面的 "employee" 元素必须按顺序包含以下元素:"firstname"、"lastname"、"address"、"city" 以及 "country"。