يمكننا التحكم في كيفية العناصر لاستخدامها في وثائق مع المؤشرات.
مؤشرات
هناك سبعة مؤشرات:
المؤشرات أجل:
- 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>