Indika kai XSD

通过指示器,我们可以控制在文档中使用元素的方式。

指示器

有七种指示器:

Order 指示器:

  • All
  • Choice
  • Sequence

Occurrence 指示器:

  • maxOccurs
  • minOccurs

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

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

مؤشر 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>

Rarrabe:}}لإعداد ظهور العناصر الفرعية بلا حدود (عدد غير محدد)، يمكنك تعيين <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" أقل من مرة واحدة وأكثر من 10 مرات.

Rarrabe:}}Domin da a ba amfani da maxOccurs="unbounded" domin sake rarraba ƙarfin tashi na ƙaramin abin da ake amfani da shi:

Mai tsawo:

Fayil XML mai suna "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>

Wannan fayil XML na kan amfani da "persons" a cikin nau'anan na farko. A cikin nau'anan na farko na wannan nau'anan, a kafa bakwai "person". duk "person" na dace da a fi mayar da "full_name", kuma za a iya amfani da 5 "child_name".

Ƙanin cikin schema "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 koyarwari

Group koyarwari ne don gudanar da muhimmancin bayanin da yana da alaka.

Kirkirar muhimmancin bayanin

Kirkirar muhimmancin bayanin za a gudanar da ta hanyar bayyana group:

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

An baiwa ya samu a cikin bayyana group, wajib ne a gudanar da kimanin, choice ko sequence muhimmancin bayanin:

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

Kamfanin da a kammala kirkirar group, za a iya samun shi a karkashin kirkirar dabanin:

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

Kirkirar dabanin

Kirkirar dabanin za a gudanar da ta hanyar attributeGroup yana bayyana:

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

Hakanan shi ne misali da kammala kirkirar dabanin "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>

Kamfanin da a kammala kirkirar dabanin, za a iya samun shi a karkashin kirkirar dabanin, dake da wannan:

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