أحدث البرامج التعليمية وتطوير الشبكة
 

مؤشرات XSD


يمكننا التحكم في كيفية العناصر لاستخدامها في وثائق مع المؤشرات.


مؤشرات

هناك سبعة مؤشرات:

المؤشرات أجل:

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