XML Schema องค์ประกอบที่ซับซ้อน
องค์ประกอบที่ซับซ้อนมีองค์ประกอบอื่น ๆ และ / หรือแอตทริบิวต์
H2> องค์ประกอบคอมโพสิตคืออะไร?
องค์ประกอบคอมโพสิตหมายถึงองค์ประกอบ XML ที่มีองค์ประกอบอื่น ๆ และ / หรือแอตทริบิวต์
มีสี่ประเภทขององค์ประกอบคอมโพสิต:
- องค์ประกอบที่ว่างเปล่า
- มันมีองค์ประกอบอื่น ๆ ของ
- องค์ประกอบที่มีข้อความเท่านั้น
- องค์ประกอบที่มีองค์ประกอบและข้อความ
หมายเหตุ: องค์ประกอบข้างต้นสามารถมีคุณลักษณะ!
ตัวอย่างขององค์ประกอบคอมโพสิต
องค์ประกอบคอมโพสิต "ผลิตภัณฑ์" เป็นที่ว่างเปล่า
องค์ประกอบคอมโพสิต "ลูกจ้าง" มีองค์ประกอบอื่น ๆ เท่านั้น:
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
องค์ประกอบ XML คอมเพล็กซ์ "อาหาร" ที่มีเฉพาะข้อความ:
องค์ประกอบ XML คอมเพล็กซ์ "คำอธิบาย" มีองค์ประกอบและข้อความ:
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
วิธีการกำหนดองค์ประกอบที่ซับซ้อน?
ดูองค์ประกอบ XML ที่ซับซ้อนนี้ "ลูกจ้าง" มีองค์ประกอบอื่น ๆ เท่านั้น:
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
ในรูปแบบ XML Schema เรามีสองวิธีที่จะกำหนดองค์ประกอบที่ซับซ้อน:
1. ชื่อองค์ประกอบโดยตรงกับ "ลูกจ้าง" ประกาศองค์ประกอบเช่นนี้
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
หากคุณใช้วิธีการที่อธิบายข้างต้นเท่านั้น "ลูกจ้าง" สามารถใช้ชนิดที่ซับซ้อนที่ระบุไว้ โปรดทราบว่าองค์ประกอบของเด็ก "FirstName" และ "นามสกุล" ถูกล้อมรอบด้วยตัวบ่งชี้ <ลำดับ> ใน ซึ่งหมายความว่าองค์ประกอบของเด็กจะต้องปรากฏอยู่ในลำดับที่มีการประกาศ คุณจะได้ XSD ตัวชี้วัด การเรียนรู้เพิ่มเติมเกี่ยวกับตัวชี้วัดในส่วนนี้
2. "ลูกจ้าง" องค์ประกอบที่สามารถใช้แอตทริบิวต์ชนิดบทบาทของแอตทริบิวต์นี้คือการอ้างอิงถึงชื่อของประเภทที่ซับซ้อนที่จะใช้:
<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="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: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>