XSD 复合元素
องค์ประกอบที่ผสมมีองค์ประกอบและ/หรือคุณสมบัติอื่น
องค์ประกอบที่ผสมคืออะไร?
องค์ประกอบที่ผสมหมายถึงองค์ประกอบ XML ที่มีองค์ประกอบอื่นและ/หรือคุณสมบัติ。
มีสี่ประเภทขององค์ประกอบที่ผสม:
- องค์ประกอบว่าง
- องค์ประกอบที่มีองค์ประกอบอื่น
- องค์ประกอบที่มีข้อความเท่านั้น
- องค์ประกอบที่มีองค์ประกอบและข้อความ
หมายเหตุ:องค์ประกอบดังกล่าวสามารถมีคุณสมบัติได้!
ตัวอย่างขององค์ประกอบที่ผสม
องค์ประกอบที่ผสม "product" ว่าง:
<product pid="1345"/>
องค์ประกอบที่ผสม "employee" มีองค์ประกอบอื่นเท่านั้น:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
องค์ประกอบที่ผสม "food" มีข้อความเท่านั้น:
<food type="dessert">Ice cream</food>
องค์ประกอบที่ผสม "description" มีองค์ประกอบและข้อความ:
<description> เกิดขึ้นเมื่อ <date lang="norwegian">03.03.99</date> .... </description>
ได้จะระบุองค์ประกอบที่ผสม?
โปรดดูองค์ประกอบ XML ที่ผสมนี้,"employee" ซึ่งมีองค์ประกอบอื่นเท่านั้น:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
ใน XML Schema มีสองวิธีที่ใช้ระบุองค์ประกอบที่ผสม:
1. โดยการตั้งชื่อองค์ประกอบนี้ สามารถประกาศองค์ประกอบ "employee" ได้โดยตรง ตามนี้:
<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>
หากคุณใช้วิธีที่เรียกไปแล้ว และมีเพียง "employee" ที่สามารถใช้ชนิดองค์ประกอบที่กำหนดไว้เท่านั้น โปรดจำแนกว่าฝายประกอบ "firstname" และ "lastname" ถูกเข้าใจว่าอยู่ในอุปกรณ์ <sequence> นี้ ซึ่งหมายความว่าฝายประกอบต้องมีรูปแบบที่ตามที่ถูกกำหนด อุปกรณ์นำทาง XSD บทนี้เรียนรู้เกี่ยวกับอุปกรณ์นำทาง XSD มากยิ่งขึ้น
2. องค์ประกอบ "employee" สามารถใช้ขอบเขตทางทฤษฎีบวกได้ ขอบเขตนี้ทำหน้าที่บอกชื่อของชนิดองค์ประกอบที่ต้องการใช้:
<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>
หากคุณใช้วิธีที่เรียกไปแล้ว หลายองค์ประกอบก็สามารถใช้ชนิดองค์ประกอบเดียวกันได้ ตัวอย่างเช่นนี้:
<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>
คุณก็สามารถเพิ่มอีกองค์ประกอบอยู่บนองค์ประกอบที่มีอยู่แล้วด้วยองค์ประกอบที่เป็นต้นแบบ แล้วเพิ่มองค์ประกอบบางองค์เช่นนี้:
<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>