XSD محدودیت/Facets

محدودیت (restriction) XML عنصر یا کیئر کے لیے قابل قبول مقادیر کا تعریف کرتی ہے۔ XML عنصر کی محدودیت کو فیس کہا جاتا ہے。

مقدار کی محدودیت

مثال میں جس کا تعریف شروع ہوتا ہے، ایک محدود اور نام کا عنصر "age" رکھا گیا ہے۔ age کا مقدار 0 سے کم نہیں ہو سکتا یا 120 سے زیادہ نہیں ہو سکتا:

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

对一组值的限定

如需把 XML 元素的内容限制为一组可接受的值,我们要使用枚举约束(enumeration constraint)。

下面的例子定义了带有一个限定的名为 "car" 的元素。可接受的值只有:Audi, Golf, BMW:


<xs:simpleType>
  <xs:restriction base="xs:string">
    
    
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

上面的例子也可以被写为:

type="carType"/>
name="carType">
  <xs:restriction base="xs:string">
    
    
    
  </xs:restriction>
</xs:simpleType>

注释:在这种情况下,类型 "carType" 可被其他元素使用,因为它不是 "car" 元素的组成部分。

对一系列值的限定

如需把 XML 元素的内容限制定义为一系列可使用的数字或字母,我们要使用模式约束(pattern constraint)。

下面的例子定义了带有一个限定的名为 "letter" 的元素。可接受的值只有小写字母 a - z 其中的一个:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

下一个例子定义了带有一个限定的名为 "initials" 的元素。可接受的值是大写字母 A - Z 其中的三个:


<xs:simpleType>
  <xs:restriction base="xs:string">
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

下一个例子也定义了带有一个限定的名为 "initials" 的元素。可接受的值是大写或小写字母 a - z 其中的三个:


<xs:simpleType>
  <xs:restriction base="xs:string">
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

下一个例子定义了带有一个限定的名为 "choice 的元素。可接受的值是字母 x, y 或 z 中的一个:


<xs:simpleType>
  <xs:restriction base="xs:string">
    
  </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 محدود دی گئی ہے جس کا مطلب یہ ہے کہ 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 خالی حروف کا معاملہ کیسے ہو (نقل و تنقل، ریٹرن، خالی اور تب