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:maxInclusive value="120"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

एक समूह मानों के लिए निर्दिष्ट

यदि आप एक्सएमएल एलिमेंट की सामग्री को एक स्वीकार्य मानों के समूह के रूप में निर्दिष्ट करना चाहते हैं, तो हमें एनुमरेशन कन्स्ट्रेंट (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" एलिमेंट का हिस्सा नहीं है।

एक श्रृंखला मानों के लिए निर्दिष्ट

यदि आप एक्सएमएल एलिमेंट की सामग्री को एक श्रृंखला वाले स्वीकार्य नंबरों या अक्षरों के रूप में निर्दिष्ट करना चाहते हैं, तो हमें पैटर्न कन्स्ट्रेंट (pattern constraint) का उपयोग करना होगा।

नीचे का उदाहरण एक नाम "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>

अगला उदाहरण एक नाम "initials" वाले एलिमेंट को परिभाषित करता है। स्वीकार्य मान है बड़े अक्षर A - Z में से तीन:

<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" वाले एलिमेंट को परिभाषित करता है। स्वीकार्य मान है बड़े या छोटे अक्षर a - z में से तीन:

<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 अक्षरों से बना होता है, जो एक पंक्ति में होता है और इसमें बड़े अक्षरों a - z या छोटे अक्षरों 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 प्रतिबंध "preserve" के रूप में सेट किया गया है, जिसका अर्थ है कि 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 स्वीकृत अधिकतम दशांश संख्या को परिभाषित करता है।यह संख्या अधिकतम या इससे बराबर होना चाहिए。
length स्वीकृत अक्षरों या सूची आयामों की सटीक संख्या को परिभाषित करता है।यह संख्या अधिकतम या इससे बराबर होना चाहिए。
maxExclusive देशी अक्षरांक की अधिकतम मानकीय घटना को परिभाषित करता है।स्वीकृत मानकों को इस मान से कम होना चाहिए。
maxInclusive देशी अक्षरांक की अधिकतम मानकीय घटना को परिभाषित करता है।स्वीकृत मानकों को इस मान से कम या इससे बराबर होना चाहिए。
maxLength स्वीकृत अक्षरों या सूची आयामों की अधिकतम संख्या को परिभाषित करता है।यह अधिकतम या इससे अधिक होना चाहिए。
minExclusive देशी अक्षरांक की न्यूनतम मानकीय घटना।स्वीकृत मानकों को इस मान से अधिक होना चाहिए。
minInclusive गणना के न्यूनतम मान को निर्धारित करें।अनुमति दिए गए मान को इस मान से अधिक या बराबर होना चाहिए।
minLength अनुमति दिए गए चरित्रों या सूची आइटमों की न्यूनतम संख्या को निर्धारित करें।यह 0 से बढ़कर होना चाहिए。
pattern स्वीकार्य चरित्रों की सही श्रृंखला को निर्धारित करें。
totalDigits अनुमति दिए गए अरबी नंबरों की सही संख्या को निर्धारित करें।यह 0 से अधिक होना चाहिए。
whiteSpace श्वेतस्थल (नया प्रविष्टि, वापसी, खाली जगह एवं टैब) के संदर्भ में इस्तेमाल की जाने वाली प्रक्रिया निर्धारित करें。