مؤشر نوع المركبة XSD

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

المؤشر

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

مؤشر الترتيب:

  • كلها
  • اختيار
  • ترتيب

مؤشر تكرار المرة:

  • maxOccurs
  • minOccurs

مؤشر المجموعة:

  • اسم المجموعة
  • attributeGroup name

مؤشر Order

مؤشر Order يستخدم لتعريف ترتيب العناصر.

مؤشر All

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

التعليق:عند استخدام <all> مؤشر، يمكنك تعيين <minOccurs> إلى 0 أو 1، بينما يجب تعيين مؤشر <maxOccurs> فقط إلى 1 (سيتم شرح <minOccurs> و <maxOccurs> لاحقًا).

مؤشر choice

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

تلميح:لإعداد ظهور العناصر الفرعية في أي عدد من الحالات، يمكنك تعيين <maxOccurs> (سيتم شرحه لاحقًا) إلى unbounded (غير محدود).

مؤشر التسلسل

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

مؤشر الظهور

مؤشر الظهور يمكن استخدامها لتعريف تردد ظهور العنصر.

التعليق:لجميع مؤشرات "Order" و "Group" (any،all،choice،sequence،اسم الفئة ومرجع الفئة)، تكون القيم الافتراضية لـ 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" يمكن أن يظهر في عنصر "person" من مرة واحدة على الأقل (حيث أن قيمة minOccurs الافتراضية هي 1) إلى 10 مرات.

مؤشر 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" من 0 مرة إلى 10 مرات.

تلميح:لإزالة الحد الأدنى للحالات للمظهر المتكرر لعدد من العناصر، استخدم التصريح maxOccurs="unbounded":

مثال حقيقي:}}

ملف XML المسمى "Myfamily.xml":

<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Tony Smith</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>David Smith</full_name>
<child_name>Jogn</child_name>
<child_name>mike</child_name>
<child_name>kyle</child_name>
<child_name>mary</child_name>
</person>
<person>
<full_name>Michael Smith</full_name>
</person>
</persons>

ملف XML هذا يحتوي على عنصر جذر يسمى "persons"، وفي داخل هذا العنصر الجذر، قمنا بتعريف ثلاثة عناصر "person"، يجب أن يحتوي كل عنصر "person" على عنصر "full_name"، ويمكنه أن يحتوي على ما يصل إلى 5 عناصر "child_name".

هذا ملف النموذج "family.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>

مؤشر المجموعة

مؤشر المجموعة يستخدم لتعريف عناصر الأعداد ذات الصلة.

مجموعة العناصر

تُعرف مجموعة العناصر عبر بيانات group:

<xs:group name="组名称">
  ...
</xs:group>

يجب عليك تعريف عنصر all، choice أو sequence داخل بيانات group. في هذا المثال، يتم تعريف 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>

بعد تعريف 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="组名称">
  ...
</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>