XSD 限定 / Facets

সীমাবদ্ধকরণ (restriction) একটি XML এলিমেন্ট বা অ্যাট্রিবিউটের মঞ্জুর হওয়া মান নির্দিষ্ট করতে ব্যবহৃত হয়।XML এলিমেন্টের সীমাবদ্ধকরণকে ফ্যাকট বলা হয়।

মানের সীমাবদ্ধকরণ

নিম্নলিখিত উদাহরণটিও একটি নির্দিষ্ট নাম "age"-সহ একটি এলিমেন্ট নির্দিষ্ট করে।age-র মান 0 থেকে 120 পর্যন্ত হতে পারে না:

<xs:element name="age">
<xs:simpleType>
  
    <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 - 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:simpleType>
  <xs:restriction base="xs:string">
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

下一个例子定义了带有一个限定的名为 "prodid" 的元素。可接受的值是五个阿拉伯数字的一个序列,且每个数字的范围是 0-9:


<xs:simpleType>
  
    
  </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" এবং একটি নির্দিষ্ট সীমাবদ্ধক যা ম্যাল বা ফিমেল হতে হবে:

<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" ব্যবহার করতে হবে:

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

<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 অনুমদিত চরিত্র বা তালিকার আইটেমগুলির সংখ্যা নির্ধারণ করুন।এটি 0 থেকে বা 0-এর সমতুল্য হতে হবে。
minExclusive নম্বরের নিম্নস্তর নির্ধারণ করুন।অনুমদিত মানগুলির সবকটি এই মানের বেশি কিন্তু সমান হতে হবে。
minInclusive নম্বরের নিম্নস্তর নির্ধারণ করুন।অনুমদিত মানগুলির সবকটি এই মানের বেশি হতে হবে。
minLength অনুমদিত চরিত্র বা তালিকার আইটেমগুলির সংখ্যা নির্ধারণ করুন।এটি 0 থেকে বা 0-এর সমতুল্য হতে হবে。
pattern অনুমদিত চরিত্রের সিরিজকে নির্ধারণ করুন。
totalDigits অনুমদিত আরবি সংখ্যার পরিমাণ নির্ধারণ করুন।এটি 0 থেকে বেশি হতে হবে。
whiteSpace খালি আক্ষর (নিবেদন, এন্টার, স্পেস এবং ট্যাব) এর হস্তক্ষেপ পদ্ধতি নির্ধারণ করুন。