XSD 复合元素
Elemen gabungan mengandung elemen lain serta/atau atribut.
Apa itu elemen gabungan?
Elemen gabungan merujuk pada 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> Hal ini terjadi pada <date lang="norwegian">03.03.99</date> .... </description>
Bagaimana cara mendefinisikan elemen gabungan?
Lihat elemen XML gabungan ini, "employee", yang hanya mengandung elemen lain:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Dalam XML Schema, ada dua cara untuk mendefinisikan elemen gabungan:
1. Dengan menamai elemen ini, Anda dapat mengumumkan elemen "employee" secara langsung, 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 tipe kompleks 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 Indikator XSD Bagian ini mengajarkan lebih banyak tentang penunjuk.
2. Elemen "employee" dapat menggunakan atribut type, yang berfungsi untuk merujuk kepada nama tipe kompleks 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, banyak elemen dapat menggunakan tipe kompleks 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 juga dapat menambahkan beberapa elemen di atas elemen kompleks 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>