XSD محدودیت‌ها / ویژگی‌ها

محدود بنانا (restriction) XML ایلجمنٹ یا کچھ کا اقدار کا قابل قبول بنانے کے لئے استعمال کی جاتی ہے. XML ایلجمنٹ کی محدود بنانے کو facet کہا جاتا ہے.

اچل اقدار کا محدود بنانا

ایک مثال بھی ایک محدود نامزد کا ایلجمنٹ تعریف کرتا ہے نا نامزد "age" کا. اقدار "age" کا ناقص نہیں ہونا چاہئے یا 120 سے زیادہ نہیں ہونا چاہئے:

<xs:element name="age">
<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="120"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

اچل اقدار کا محدود بنانا

اگر آپ چاہتے ہیں کہ XML ایلجمنٹ کا مواد محدود کئے جائے اکچل اقدار کا گروپ، تو ہمیں مستقل کنسٹرینٹ (enumeration constraint) استعمال کرنا ہوگا.

ایک مثال بھی ایک محدود نامزد کا ایلجمنٹ تعریف کرتا ہے نا نامزد "car" کا. قابل قبول اقدار صرف: Audi, Golf, BMW:

<xs:element name="car">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

بسیار مثال بھی اس طرح لکھا جاسکتا ہے:

<xs:element name="car"> type="carType"/>
<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>

تعریف:اس صورت میں، نوعیت "carType" دوسرے ایلجمنٹ کا استعمال کرسکتا ہے، کیونکہ وہ "car" ایلجمنٹ کا حصہ نہیں ہے.

اچل اقدار کا محدود بنانا

اگر آپ چاہتے ہیں کہ XML ایلجمنٹ کا مواد محدود کئے جائے اکچل اعداد یا حروف کا سلسلہ، تو ہمیں ماڈل کنسٹرینٹ (pattern constraint) استعمال کرنا ہوگا.

ایک مثال بھی ایک محدود نامزد کا ایلجمنٹ تعریف کرتا ہے نا نامزد "letter" کا. قابل قبول اقدار صرف چوکدھر اور بچولی کا ایک:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-z]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

ایک مثال بھی ایک محدود نامزد کا ایلجمنٹ تعریف کرتا ہے نا نامزد "initials" کا. قابل قبول اقدار بچولی اور چوکدھر اور بچولی کی اصل اور چوکدھر کی اصل میں سے تین:

<xs:element name="initials">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[A-Z][A-Z][A-Z]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

ایک مثال بھی ایک محدود نامزد کا ایلجمنٹ تعریف کرتا ہے نا نامزد "initials" کا. قابل قبول اقدار بچولی اور چوکدھر اور بچولی کی اصل اور چوکدھر کی اصل میں سے تین:

<xs:element name="initials">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

آئندہ مثال 'choice' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار حروف x، y یا z میں سے ایک ہوتا ہے:

<xs:element name="choice">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[xyz]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

آئندہ مثال 'prodid' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار پانچ عربی اعداد کا سلسلہ ہوتا ہے، جس میں ہر عدد کا دائرہ کار 0-9 ہوتا ہے:

<xs:element name="prodid">
<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

ایک سلسلے کی دوسرین اسماری

یہ مثال 'letter' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار 'a' سے 'z' تک کا ایک یا بہت سارے حروف کا سلسلہ ہوتا ہے:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="([a-z])*"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

یہ مثال 'letter' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار ایک جملے کا ایک یا بہت سارے جملے ہوتا ہے، جس میں ہر جملے کو ایک چھوٹی حرف اور ایک بڑی حرف کا استعمال کیا جاتا ہے، مثلاً 'sToP' اس طرح کا تجربہ کریگا، لیکن 'Stop'، 'STOP' یا 'stop' اس طرح کا تجربہ نہیں کریگا:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="([a-z][A-Z])+"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

یہ مثال 'gender' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار 'male' یا 'female' ہوتا ہے:

<xs:element name="gender">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="male|female"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

یہ مثال 'password' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا مطلب یہ ہے کہ قابل قبول اقدار ایک جملے کا 8 حرفوں کا سلسلہ ہوتا ہے، جس میں اکثریت سے بڑا حرف اور عددی اعداد 0-9 کا استعمال کیا جاتا ہے:

<xs:element name="password">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9]{8}"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

خالی حروف کا محدود

خالی حروف (whitespace characters) کا طریقہ کار مقرر کرنے کیلئے، ہمیں 'whiteSpace' محدود استعمال کرنا ہوگا.

یہ مثال 'address' نامی ایک محدود عنصر کا تعریف کرتا ہے جس کا نام 'whiteSpace' محدود کیا گیا ہے، اس کا مطلب یہ ہے کہ XML پروسیسر کو خالی حروف کو نہیں ہٹاواگا:

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="preserve"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

این مثال نیز یک عنصر به نام "address" با محدودیت تعریف می‌کند. این محدودیت whiteSpace به "replace" تنظیم شده است، که به این معناست که پردازنده XML تمام کاراکترهای خالی (نوشتند، بازگشت خط، فضاهای خالی و تابستانی) را حذف می‌کند (نوشتند، بازگشت خط، فضاهای خالی و تابستانی):

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="replace"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

این مثال نیز یک عنصر به نام "address" با محدودیت تعریف می‌کند. این محدودیت whiteSpace به "collapse" تنظیم شده است، که به این معناست که پردازنده XML تمام کاراکترهای خالی (نوشتند، بازگشت خط، فضاهای خالی و تابستانی) را حذف می‌کند (نوشتند، بازگشت خط، فضاهای خالی و تابستانی به یک فضا تبدیل می‌شوند، فضاهای خالی اول و آخر حذف می‌شوند و فضاهای خالی متوالی به یک فضا تبدیل می‌شوند):

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

محدودیت طول

برای محدود کردن طول مقادیر یک عنصر، باید از محدودیت‌های length، maxLength و minLength استفاده کرد.

این مثال یک عنصر به نام "password" با محدودیت و دقیقاً 8 کاراکتر تعریف می‌کند:

<xs:element name="password">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:length value="8"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

این مثال نیز یک عنصر به نام "password" با محدودیت تعریف می‌کند. مقادیر آن باید حداقل 5 کاراکتر و حداکثر 8 کاراکتر باشند:

<xs:element name="password">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:minLength value="5"/>
    <xs:maxLength value="8"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

محدودیت نوع داده

محدودیت وصف
enumeration تعریف لیستی از مقادیر قابل قبول
fractionDigits تعریف حداکثر تعداد دسیمال مجاز. باید بزرگتر یا برابر با 0 باشد.
length تعریف تعداد دقیق کاراکترهای مجاز یا عناصر لیست. باید بزرگتر یا برابر با 0 باشد.
maxExclusive تعریف حداکثر محدوده数值ی. مقادیر مجاز باید کمتر از این مقدار باشند.
maxInclusive تعریف حداکثر مقدار عددی. مقادیر مجاز باید کوچکتر یا برابر با این مقدار باشند.
maxLength تعریف حداکثر تعداد کاراکترهای مجاز یا آیتم‌های لیست. باید بزرگتر یا برابر با 0 باشد.
minExclusive تعریف حداقل مقدار عددی. مقادیر مجاز باید بزرگتر از این مقدار باشند.
minInclusive تعریف حداقل مقدار عددی. مقادیر مجاز باید بزرگتر یا برابر با این مقدار باشند.
minLength تعریف حداقل تعداد کاراکترهای مجاز یا آیتم‌های لیست. باید بزرگتر یا برابر با 0 باشد.
pattern تعریف توالی دقیق کاراکترهای مجاز.
totalDigits تعریف دقت اعداد عربی مجاز. باید بزرگتر از 0 باشد.
whiteSpace تعریف روش‌های پردازش کاراکترهای خالی (پایین‌کش، بازگشت به خط، فاصله و تاب‌تیل)