XSD निर्दिष्ट / Facets

अवधारण (restriction) एक्सएमएल एलीमेंट या गुण के लिए स्वीकार्य मानों को परिभाषित करने के लिए उपयोग किया जाता है। एक्सएमएल एलीमेंट के लिए अवधारण को फैसेट (facet) कहा जाता है।

मान के लिए निर्दिष्ट

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

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