XSD - phần tử phức hợp
- Trang trước XSD - hạn chế
- Trang tiếp theo XSD - phần tử trống
Phần tử phức hợp chứa các phần tử khác và/hoặc thuộc tính.
Phần tử phức hợp là gì?
Phần tử phức hợp là phần tử XML chứa các phần tử khác và/hoặc thuộc tính.
Có bốn loại phần tử phức hợp:
- Phần tử trống
- Chỉ chứa các phần tử khác
- Chỉ chứa văn bản
- Phần tử chứa các phần tử và văn bản
Chú ý:Các phần tử trên đều có thể chứa thuộc tính!
Ví dụ về phần tử phức hợp
Phần tử phức hợp, "product", là trống:
<product pid="1345"/>
Phần tử phức hợp, "employee", chỉ chứa các phần tử khác:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Phần tử phức hợp, "food", chỉ chứa văn bản:
<food type="dessert">Ice cream</food>
Phần tử phức hợp, "description", chứa các phần tử và văn bản:
<description> Đó là vào ngày <date lang="norwegian">03.03.99</date> .... </description>
Làm thế nào để định nghĩa phần tử phức hợp?
Hãy xem phần tử XML phức hợp này, "employee", chỉ chứa các phần tử khác:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Trong XML Schema, chúng ta có hai cách để định nghĩa phần tử phức hợp:
1. Bằng cách đặt tên cho phần tử này, bạn có thể trực tiếp khai báo phần tử "employee", như sau:
<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>
Nếu bạn sử dụng phương pháp được mô tả ở trên, chỉ có "employee" mới có thể sử dụng loại kết hợp được quy định. Lưu ý rằng các yếu tố con, "firstname" và "lastname", được bao bọc trong chỉ thị <sequence>. Điều này có nghĩa là các yếu tố con phải xuất hiện theo thứ tự được xác định. Bạn sẽ Chỉ thị XSD Học thêm về các chỉ thị.
2. Yếu tố "employee" có thể sử dụng thuộc tính type, thuộc tính này có tác dụng tham chiếu đến tên loại kết hợp cần sử dụng:
<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>
Nếu bạn đã sử dụng phương pháp được mô tả ở trên, thì một số yếu tố có thể sử dụng cùng một loại kết hợp, giống như thế này:
<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>
Bạn cũng có thể thêm các yếu tố vào phần tử kết hợp đã có, dựa trên một phần tử kết hợp nào đó, giống như thế này:
<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>
- Trang trước XSD - hạn chế
- Trang tiếp theo XSD - phần tử trống