نشانگرهای نوع ترکیبی 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> اشاریہ کو صرف ایک رکھا جاسکتا ہے (بعد میں <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 اشاریہ

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

Occurrence اشاریہ

Occurrence اشاریہ کسی عنصر کی آمد و رفت کا تعریف کرتا ہے。

توضیح:تمام "Order" اور "Group" اشاریوں (any،all،choice،sequence،group name اور group reference) میں 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" عنصر رکھ سکتا ہے۔

یہ 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 تعریف می‌شود:

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

شما باید یک عنصر all، choice یا sequence در داخل توضیح 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="组名称">
  ...
</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>