XSD 复合类型指示器
ইনডিকেটর দ্বারা, আমরা ডকুমেন্টে উপাদানের ব্যবহার নিয়ন্ত্রণ করতে পারি。
ইনডিকেটর
সাতটি ইনডিকেটর রয়েছে:
Order ইনডিকেটর:
- All
- Choice
- Sequence
Occurrence ইনডিকেটর:
- maxOccurs
- minOccurs
Group ইনডিকেটর:
- Group name
- attributeGroup name
Order ইনডিকেটর
Order ইনডিকেটর একটি উপাদানের ক্রম নির্দেশ করে。
All ইনডিকেটর
<all> ইনডিকেটর একটি সাব-উপাদানকে কোনও নির্দিষ্ট ক্রমে উপস্থিত হওয়ার জন্য নির্দেশ করে, এবং প্রত্যেক সাব-উপাদানকে শুধুমাত্র একবার উপস্থিত হতে হবে:
<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
মন্তব্য:যখন <all> ইনডিকেটর ব্যবহার করা হয়, <minOccurs> কমই 0 বা 1 নির্দেশ করা যায়, কিন্তু <maxOccurs> ইনডিকেটরকে শুধুমাত্র 1 নির্দেশ করা যায় (পরে <minOccurs> এবং <maxOccurs> বোঝানো হবে)。
Choice ইনডিকেটর
<choice> ইনডিকেটর একটি সাব-উপাদানকে উপস্থিত হওয়ার জন্য কোনও অন্য সাব-উপাদানকে উপস্থিত হওয়ার জন্য নির্দেশ করে (বা একটি অথবা অন্যটি):
<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>
সূচনা:যদি আপনি কোনও সাব-উপাদানকে কোনও সংখ্যক উপস্থিত হওয়ার জন্য সম্পূর্ণ নিয়ন্ত্রণ চান, <maxOccurs> (পরে বোঝানো হবে) একটি unbounded (অসীম) নির্দেশ করুন。
Sequence ইনডিকেটর
<sequence> একটি সাব-উপাদানকে নির্দিষ্ট ক্রমে উপস্থিত হওয়ার নির্দেশ করে:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Occurrence ইনডিকেটর
Occurrence ইনডিকেটর একটি উপাদানকে উপস্থিত হওয়ার ফ্রিকোয়েন্সি নির্দেশ করে。
মন্তব্য:সব ধরণের "Order" এবং "Group" ইনডিকেটর (any, all, choice, sequence, group name এবং group reference) এর maxOccurs এবং minOccurs-এর ডিফল্ট মান 1 হয়。
maxOccurs ইনডিকেটর
<maxOccurs> ইনডিকেটর একটি উপাদানকে উপস্থিত হওয়ার সবচেয়ে বেশি কতবার নির্দেশ করে:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element>
উপরোক্ত উদাহরণ দেখিয়ে, "child_name" এই সাব-উপাদান "person" উপাদানে কমই 1 বার (যেখানে minOccurs-এর ডিফল্ট মান 1) এবং সবচেয়ে বেশি 10 বার উপস্থিত হতে পারে。
minOccurs ইনডিকেটর
<minOccurs> ইনডিকেটর একটি উপাদানকে উপস্থিত হওয়ার কমই কতবার নির্দেশ করে:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
উপরোক্ত উদাহরণ দেখিয়ে, "child_name" এই সাব-উপাদান "person" উপাদানে কমই 0 বার, সবচেয়ে বেশি 10 বার উপস্থিত হতে পারে。
সূচনা:যদি আপনি কোনও উপাদানের উপস্থিতির প্রক্রিয়াকে অসীম করতে চান, তাহলে maxOccurs="unbounded" এই ঘোষণা ব্যবহার করুন:
একটি প্রকৃত উদাহরণ:
নাম "Myfamily.xml"-র একটি XML ফাইল:
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
এই XML ফাইল "persons" নামক একটি মূল ইউনিট ধারণ করে।এই মূল ইউনিটের ভিতরে, আমরা তিনটি "person" ইউনিট নির্দিষ্টকরণ করেছি।প্রত্যেক "person" ইউনিটকে "full_name" ইউনিট ধারণ করতে হবে, এবং এটি ৫টি "child_name" ইউনিট পর্যন্ত ধারণ করতে পারে。
এই schema ফাইল "family.xsd"-এর জন্য এটি বলা হয়:
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Group ইনডিকেটর
Group ইনডিকেটর ব্যবহার করা হয় সংশ্লিষ্ট সমষ্টির উপাদানগুলির নির্দিষ্টকরণের জন্য。
ইলাকা গোষ্ঠী
ইলাকা গোষ্ঠীকে group ঘোষণার মাধ্যমে নির্দেশ করা হয়:
<xs:group name="组名称"> ... </xs:group>
আপনাকে group ঘোষণার মধ্যে একটি all, choice বা sequence ইলাকা নির্দেশ করতে হবে।এই উদাহরণে, "persongroup" নামক একটি group নির্দেশ করা হয় যা একটি সঠিক ক্রমে উপস্থিত হওয়া প্রয়োজনীয় এলাকা নির্দেশ করে:
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>
আপনি যখন group নির্দেশ করেছেন, তখন আরেকটি নির্দেশনায় তা উল্লেখ করতে পারেন:
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType>
প্রতিভাতীকে
প্রতিভাতীকে attributeGroup ঘোষণার মাধ্যমে নির্দেশ করা হয়:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
এই উদাহরণে, "personattrgroup" নামক একটি প্রতিভাতীকে নির্দেশ করা হয়:
<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup>
আপনি যখন প্রতিভাতীকে সম্পূর্ণ করেছেন, তখন আরেকটি নির্দেশনায় তা উল্লেখ করতে পারেন, এমনকি এইভাবে:
<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> <xs:element name="person"> <xs:complexType> <xs:attributeGroup ref="personattrgroup"/> </xs:complexType> </xs:element>