XSD 复合元素
Elemen kompleks mengandung elemen lain serta/atau atribut.
Apa itu elemen kompleks?
Elemen kompleks adalah elemen XML yang mengandung elemen lain serta/atau atribut.
Terdapat empat jenis elemen kompleks:
- 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 kompleks
Elemen kompleks, "product", kosong:
<product pid="1345"/>
Elemen kompleks, "employee", hanya mengandung elemen lain:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Elemen kompleks, "food", hanya mengandung teks:
<food type="dessert">Ice cream</food>
Elemen kompleks, "description", mengandung elemen dan teks:
<description> Hal ini terjadi pada <date lang="norwegian">03.03.99</date> .... </description>
Bagaimana mendefinisikan elemen kompleks?
Lihat elemen XML kompleks ini, "employee", hanya mengandung elemen lain:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Dalam XML Schema, ada dua cara untuk mendefinisikan elemen kompleks:
1. Dengan menamakan elemen ini, langsung dapat menyetujui 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 dapat menggunakan jenis gabungan yang ditentukan. 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 menggunakan 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 hal 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 menambah beberapa elemen di atas elemen gabungan yang sudah ada, seperti hal 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>