XSD 限定/Facets

নির্বিশেষণ (restriction) XML এলিমেন্ট বা প্রতিযোগীতার জন্য গ্রহণযোগ্য মান নির্দিষ্ট করার জন্য ব্যবহৃত হয়।XML এলিমেন্টের নির্বিশেষণকে facet বলা হয়。

মানের নির্বিশেষণ

এই উদাহরণটি একটি নির্বিশেষিত এবং "age" নামক এলিমেন্টটির জন্য নির্দিষ্ট করে।age এর মান ০ থেকে ১২০ পর্যন্ত হতে পারে না:

<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"-সহ একটি ইলেকট্রনম সংজ্ঞা দিয়েছে। গ্রহ্য মানগুলো হলো ছোট আক্ষর a-এর মধ্যে একটি:

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

আগামী উদাহরণটি একটি নির্দিষ্ট নাম "initials"-সহ একটি ইলেকট্রনম সংজ্ঞা দিয়েছে। গ্রহ্য মানগুলো হলো বড় আক্ষর A-এর মধ্যে তিনটি:

<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-এর মধ্যে বড় বা ছোট a-র তিনটি:

<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"-সহ একটি ইলেকট্রনম সংজ্ঞা দিয়েছে। গ্রহ্য মানগুলো হলো পাঁচটি আরবি সংখ্যা ক্রমানুসারে, যার প্রত্যেকটির মান ০-৯ এর মধ্যে থাকে:

<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" বর্ণনায় নিয়েছে, যার মানে একটি ৮ অক্ষর বিশিষ্ট লাইন অক্ষর, যা হতে পারে আইনী বড় বা ছোট অক্ষর a - z বা ০ - ৯ এর কোনও একটি:

<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 বর্ণনা নিয়েছে। এই 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 বর্ণনা নিয়েছে। এই 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" হয়েছে, যার মানে এক্সিএমএল প্রক্রিয়াকরণকারী সব স্বাচ্ছন্দ্য অক্ষর (নিউলাইন, রিটার্ন, স্পেস, এবং ট্যাব) একটি স্পেসে রূপান্তরিত করবে, যার মানে শুরু এবং শেষের স্পেস অপসারিত হবে এবং একাধিক স্পেস একটি স্পেসে রূপান্তরিত হবে:

<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" নামের এলিমেন্ট নির্ধারণ করেছে।এই এলিমেন্টের মান ৮ টি অক্ষরের সমতুল্য হবে:

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

এই উদাহরণটিও একটি পুনরাবৃত্তি হিসাবে "password" নামের এলিমেন্ট নির্ধারণ করেছে।এই এলিমেন্টের মান ৫ টি অক্ষর থেকে ৮ টি অক্ষর পর্যন্ত হবে:

<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 定义空白字符(换行、回车、空格以及制表符)的处理方式。