เราสามารถควบคุมวิธีการที่องค์ประกอบที่จะใช้ในเอกสารที่มีตัวชี้วัด
ตัวชี้วัด
มีเจ็ดตัวชี้วัด:
ตัวชี้วัดที่สั่งซื้อ:
- All
- Choice
- Sequence
ตัวชี้วัดที่เกิดขึ้น:
- maxOccurs
- minOccurs
หุ้นกลุ่ม:
- Group name
- attributeGroup name
ตัวชี้วัดการสั่งซื้อสินค้า
ตัวชี้วัดการสั่งซื้อจะถูกใช้ในการกำหนดคำสั่งขององค์ประกอบ
ดัชนีทั้งหมด
<all> ตัวบ่งชี้ที่ระบุว่าองค์ประกอบของเด็กสามารถปรากฏในลำดับใด ๆ และที่แต่ละองค์ประกอบของเด็กจะต้องเกิดขึ้นเพียงครั้งเดียว:
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Note: เมื่อใช้ <all> ตัวบ่งชี้ที่คุณสามารถตั้งค่า <minOccurs> ตัวบ่งชี้ถึง 0 หรือ 1 และ <maxOccurs> ตัวบ่งชี้เท่านั้นที่สามารถตั้งค่าเป็น 1 (คน <minOccurs> และ <maxOccurs> จะมีการอธิบายในภายหลัง)
ทางเลือกที่ดัชนี
<choice> ตัวบ่งชี้ที่ระบุว่าทั้งองค์ประกอบของเด็กคนหนึ่งหรืออื่นสามารถเกิดขึ้น:
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
ลำดับดัชนี
<sequence> ตัวบ่งชี้ที่ระบุว่าองค์ประกอบของเด็กจะต้องปรากฏอยู่ในลำดับที่เฉพาะเจาะจง:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
ตัวชี้วัดที่เกิดขึ้น
ตัวชี้วัดที่เกิดขึ้นจะใช้ในการกำหนดวิธีการที่มักจะเป็นองค์ประกอบที่สามารถเกิดขึ้นได้
Note: สำหรับทั้งหมด "Order" และ "Group" ตัวชี้วัด (ใด ๆ ทั้งหมดทางเลือกลำดับชื่อกลุ่มและการอ้างอิงกลุ่ม) ค่าเริ่มต้นสำหรับ maxOccurs และ minOccurs 1
maxOccurs ดัชนี
<maxOccurs> ตัวบ่งชี้ที่ระบุจำนวนครั้งสูงสุดเป็นองค์ประกอบที่สามารถเกิดขึ้นได้:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>
ตัวอย่างข้างต้นแสดงให้เห็นว่า "child_name" องค์ประกอบที่สามารถเกิดขึ้นได้อย่างน้อยหนึ่งครั้ง (ค่าเริ่มต้นสำหรับ minOccurs คือ 1) และสูงสุดไม่เกินสิบครั้งใน "person" องค์ประกอบ
minOccurs ดัชนี
<minOccurs> ตัวบ่งชี้ที่ระบุจำนวนครั้งที่ต่ำสุดเป็นองค์ประกอบที่สามารถเกิดขึ้นได้:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
ตัวอย่างข้างต้นแสดงให้เห็นว่า "child_name" องค์ประกอบที่สามารถเกิดขึ้นได้ไม่ต่ำกว่าศูนย์ครั้งและสูงสุดไม่เกินสิบครั้งในส่วน "person" องค์ประกอบ
Tip: ในการอนุญาตให้เป็นองค์ประกอบที่จะปรากฏได้ไม่ จำกัด จำนวนครั้งที่ใช้ maxOccurs = คำสั่ง "มากมาย"
A working example:
ไฟล์ XML ที่เรียกว่า "Myfamily.xml" :
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Hege Refsnes</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>Tove Refsnes</full_name>
<child_name>Hege</child_name>
<child_name>Stale</child_name>
<child_name>Jim</child_name>
<child_name>Borge</child_name>
</person>
<person>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
ไฟล์ XML ข้างต้นมีองค์ประกอบหลักที่มีชื่อว่า "persons" ภายในองค์ประกอบรากนี้เราได้กำหนดไว้สาม "person" องค์ประกอบ แต่ละ "person" องค์ประกอบที่จะต้องมี "full_name" องค์ประกอบและมันสามารถมีได้ถึงห้า "child_name" องค์ประกอบ
นี่คือแฟ้มสคี "family.xsd" :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
ตัวชี้วัดกลุ่ม
หุ้นกลุ่มที่ใช้ในการกำหนดชุดขององค์ประกอบที่เกี่ยวข้อง
กลุ่มธาตุ
กลุ่มจะมีการกำหนดองค์ประกอบที่มีการประกาศกลุ่มเช่นนี้
<xs:group name="groupname">
...
</xs:group>
คุณต้องกำหนดทุกทางเลือกหรือองค์ประกอบลำดับภายในประกาศกลุ่ม ตัวอย่างต่อไปนี้กำหนดกลุ่มชื่อ "persongroup" ที่กำหนดกลุ่มขององค์ประกอบที่จะต้องเกิดขึ้นในลำดับที่แน่นอน:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
หลังจากที่คุณได้กำหนดกลุ่มคุณสามารถอ้างอิงได้ในความหมายอื่นเช่นนี้
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
แอตทริบิวต์กลุ่ม
กลุ่มแอตทริบิวต์ที่กำหนดไว้ด้วยประกาศ attributeGroup เช่นนี้
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
ตัวอย่างต่อไปนี้กำหนดกลุ่มแอตทริบิวต์ชื่อ "personattrgroup" :
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
หลังจากที่คุณได้กำหนดกลุ่มแอตทริบิวต์คุณสามารถอ้างอิงได้ในความหมายอื่นเช่นนี้
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>