Latest web development tutorials

XML Schema องค์ประกอบที่ซับซ้อน

องค์ประกอบที่ซับซ้อนมีองค์ประกอบอื่น ๆ และ / หรือแอตทริบิวต์


H2> องค์ประกอบคอมโพสิตคืออะไร?

องค์ประกอบคอมโพสิตหมายถึงองค์ประกอบ XML ที่มีองค์ประกอบอื่น ๆ และ / หรือแอตทริบิวต์

มีสี่ประเภทขององค์ประกอบคอมโพสิต:

  • องค์ประกอบที่ว่างเปล่า
  • มันมีองค์ประกอบอื่น ๆ ของ
  • องค์ประกอบที่มีข้อความเท่านั้น
  • องค์ประกอบที่มีองค์ประกอบและข้อความ

หมายเหตุ: องค์ประกอบข้างต้นสามารถมีคุณลักษณะ!


ตัวอย่างขององค์ประกอบคอมโพสิต

องค์ประกอบคอมโพสิต "ผลิตภัณฑ์" เป็นที่ว่างเปล่า

<product pid="1345"/>

องค์ประกอบคอมโพสิต "ลูกจ้าง" มีองค์ประกอบอื่น ๆ เท่านั้น:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

องค์ประกอบ XML คอมเพล็กซ์ "อาหาร" ที่มีเฉพาะข้อความ:

<food type="dessert">Ice cream</food>

องค์ประกอบ XML คอมเพล็กซ์ "คำอธิบาย" มีองค์ประกอบและข้อความ:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


วิธีการกำหนดองค์ประกอบที่ซับซ้อน?

ดูองค์ประกอบ XML ที่ซับซ้อนนี้ "ลูกจ้าง" มีองค์ประกอบอื่น ๆ เท่านั้น:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

ในรูปแบบ XML Schema เรามีสองวิธีที่จะกำหนดองค์ประกอบที่ซับซ้อน:

1. ชื่อองค์ประกอบโดยตรงกับ "ลูกจ้าง" ประกาศองค์ประกอบเช่นนี้

<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>

หากคุณใช้วิธีการที่อธิบายข้างต้นเท่านั้น "ลูกจ้าง" สามารถใช้ชนิดที่ซับซ้อนที่ระบุไว้ โปรดทราบว่าองค์ประกอบของเด็ก "FirstName" และ "นามสกุล" ถูกล้อมรอบด้วยตัวบ่งชี้ <ลำดับ> ใน ซึ่งหมายความว่าองค์ประกอบของเด็กจะต้องปรากฏอยู่ในลำดับที่มีการประกาศ คุณจะได้ XSD ตัวชี้วัด การเรียนรู้เพิ่มเติมเกี่ยวกับตัวชี้วัดในส่วนนี้

2. "ลูกจ้าง" องค์ประกอบที่สามารถใช้แอตทริบิวต์ชนิดบทบาทของแอตทริบิวต์นี้คือการอ้างอิงถึงชื่อของประเภทที่ซับซ้อนที่จะใช้:

<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>