সংক্ষিপ্ত XPath সিনট্যাক্স। নিম্নোক্ত অক্ষ ব্যবহার করে html-এ xpath প্রশ্নের উদাহরণ

XPath একটি XML নথির উপাদান এবং বৈশিষ্ট্যগুলির মাধ্যমে নেভিগেট করতে ব্যবহৃত হয়। XPath হল W3C XSLT স্ট্যান্ডার্ডের অন্যতম মূল উপাদান।

1 কি হয়ছেএক্সপাথ

XPath এক্সপ্রেশন

XPath একটি XML নথিতে পৃথক নোড বা নোডের একটি সেট নির্বাচন করতে পাথ এক্সপ্রেশন ব্যবহার করে। এই অভিব্যক্তিগুলি একটি প্রচলিত কম্পিউটার ফাইল সিস্টেমের সাথে কাজ করার সময় আপনি যে অভিব্যক্তিগুলি দেখেন তার সাথে খুব মিল।

স্ট্যান্ডার্ড XPath ফাংশন

XPath 100 টিরও বেশি বিল্ট-ইন ফাংশন অন্তর্ভুক্ত করে। স্ট্রিং এবং সংখ্যাসূচক মান, তারিখ এবং সময়, নোড তুলনা এবং QName ম্যানিপুলেশন, সিকোয়েন্স ম্যানেজমেন্ট, বুলিয়ান মান এবং আরও অনেক কিছুর জন্য ফাংশন রয়েছে।

XSLT-এ XPath ব্যবহার করা হয়

XPath হল XSLT স্ট্যান্ডার্ডের অন্যতম মূল উপাদান। XPath এর জ্ঞান ছাড়া, আপনি XSLT নথি তৈরি করতে সক্ষম হবেন না।

2 পরিভাষাএক্সপাথ

নোড

XPath-এ সাত ধরনের নোড রয়েছে: এলিমেন্ট, অ্যাট্রিবিউট, টেক্সট, নেমস্পেস, প্রসেসিং নির্দেশাবলী, মন্তব্য এবং ডকুমেন্ট নোড। XML নথিগুলি নোডের গাছ হিসাবে প্রক্রিয়া করা হয়। গাছের উপরের উপাদানটিকে মূল উপাদান বলা হয়। নিম্নলিখিত XML নথি দেখুন:

হ্যারি পটার জে কে রাওউলিং 2005 29.99

উপরের XML নথিতে নোডের উদাহরণ:

(মূল উপাদান) জে কে রাওউলিং (নোড) lang="en"(বৈশিষ্ট্য)

পারমাণবিক মান

পারমাণবিক মান হল নোড যার কোন সন্তান বা পিতামাতা নেই। পারমাণবিক মানের উদাহরণ:

জে. কে. রাউলিং "en"

উপাদান

উপাদানগুলি পারমাণবিক মান বা নোড।

3 সম্পর্কনোড

অভিভাবক

প্রতিটি উপাদান এবং বৈশিষ্ট্যের একটি অভিভাবক আছে। নিম্নলিখিত উদাহরণে, বইয়ের উপাদানটি শিরোনাম, লেখক, বছর এবং মূল্য উপাদানগুলির মূল বিষয়:

হ্যারি পটার জে কে রাওউলিং 2005 29.99

বংশধর

এলিমেন্ট নোডগুলিতে শূন্য, এক বা একাধিক শিশু থাকতে পারে। নিম্নলিখিত উদাহরণে, "শিরোনাম", "লেখক", "বছর" এবং "মূল্য" উপাদানগুলি সমস্ত বই উপাদানের সন্তান:

হ্যারি পটার জে কে রাওউলিং 2005 29.99

একই স্তরের উপাদান

এই নোড একই অভিভাবক আছে. নিম্নলিখিত উদাহরণে, "শিরোনাম", "লেখক", "বছর" এবং "মূল্য" উপাদানগুলি একই স্তরের সমস্ত উপাদান:

হ্যারি পটার জে কে রাওউলিং 2005 29.99

পূর্বপুরুষ

নোডের অভিভাবক, নোডের অভিভাবক, ইত্যাদি। নিম্নলিখিত উদাহরণে, শিরোনাম উপাদানের পূর্বপুরুষ হল বই এবং বইয়ের দোকান উপাদান:

হ্যারি পটার জে কে রাওউলিং 2005 29.99

বংশধর

একটি নোডের শিশু, একটি নোডের শিশুদের শিশুদের, ইত্যাদি। নিম্নলিখিত উদাহরণে, "বইস্টোর" উপাদানের শিশুরা হল "বই", "শিরোনাম", "লেখক", "বছর" এবং "মূল্য":

হ্যারি পটার জে কে রাওউলিং 2005 29.99

4 বাক্য গঠনএক্সপাথ

XPath একটি XML নথিতে নোড বা নোডের সেট নির্বাচন করতে পাথ এক্সপ্রেশন ব্যবহার করে। একটি পথ অনুসরণ করে বা ধাপ দ্বারা একটি নোড নির্বাচন করা যেতে পারে। আমরা নীচের উদাহরণগুলিতে নিম্নলিখিত XML নথিটি ব্যবহার করব।

হ্যারি পটার 29.99 XML শেখা 39.95

নোড নির্বাচন

একটি XML নথিতে নোড নির্বাচন করতে XPath এক্সপ্রেশন ব্যবহার করে, আপনি একটি পথ বা পদক্ষেপ অনুসরণ করে একটি নোড নির্বাচন করতে পারেন। সবচেয়ে দরকারী পথ অভিব্যক্তি নীচে তালিকাভুক্ত করা হয়:

নীচের সারণীতে কিছু এক্সপ্রেশন পাথ এবং এক্সপ্রেশন চালানোর ফলাফল তালিকাভুক্ত করা হয়েছে:

XPath এক্সপ্রেশন ফলাফল
বইয়ের দোকান "বইস্টোর" নামে সমস্ত নোড নির্বাচন করে
/ বইয়ের দোকান বইয়ের দোকানের মূল উপাদান নির্বাচন করে

বিঃদ্রঃ:যদি একটি পাথ একটি স্ল্যাশ (/) দিয়ে শুরু হয়, তবে এটি সর্বদা উপাদানটির একটি পরম পথ!

বইয়ের দোকান/বই সমস্ত "বই" উপাদান নির্বাচন করে যেগুলি "বইয়ের দোকান" উপাদানের সন্তান
//বই নথিতে যেখানেই থাকুক না কেন সব "বই" উপাদান নির্বাচন করে
বইয়ের দোকান//বই সমস্ত "বই" উপাদান নির্বাচন করে যেগুলি "বইয়ের দোকান" উপাদানের সন্তান, তারা "বইস্টোর" উপাদানের অধীনে যেখানেই থাকুক না কেন
//@lang "ল্যাং" নামে পরিচিত সমস্ত বৈশিষ্ট্য নির্বাচন করে

ভবিষ্যদ্বাণী করে

Predicates একটি নির্দিষ্ট নোড বা একটি নির্দিষ্ট মান রয়েছে এমন একটি নোড খুঁজে পেতে ব্যবহৃত হয়। Predicates সবসময় বর্গাকার বন্ধনী দ্বারা বেষ্টিত হয়. নীচের সারণীটি পূর্বাভাস সহ কিছু পথ অভিব্যক্তি এবং অভিব্যক্তির ফলাফল তালিকাভুক্ত করে:

XPath এক্সপ্রেশন ফলাফল
/বইয়ের দোকান/বই প্রথম "বই" উপাদান নির্বাচন করে, যা "বইস্টোর" উপাদানের একটি শিশু৷

বিঃদ্রঃ: IE 5,6,7,8,9 এ, প্রথম নোডের একটি সূচক রয়েছে, কিন্তু W3C নির্দেশিকা অনুসারে, এটি হল। IE-তে এই সমস্যাটি সমাধান করতে, XPath-এর জন্য "নির্বাচন ভাষা" বিকল্পটি সেট করুন:

জাভাস্ক্রিপ্টে: xml.setProperty("নির্বাচনের ভাষা", "XPath");
/বইয়ের দোকান/বই শেষ "বই" উপাদানটি নির্বাচন করে যা "বইস্টোর" উপাদানের একটি শিশু৷
/বইয়ের দোকান/বই চূড়ান্ত "বই" উপাদান নির্বাচন করে, যা "বইস্টোর" উপাদানের একটি শিশু৷
/বইয়ের দোকান/বই প্রথম দুটি "বই" উপাদান নির্বাচন করা যা "বইস্টোর" উপাদানের শিশু
//শিরোনাম[@lang] "ল্যাং" নামের একটি বৈশিষ্ট্য আছে এমন সমস্ত "শিরোনাম" উপাদান নির্বাচন করে
//শিরোনাম[@lang="en"] "en" এর মান সহ একটি "ভাষা" বৈশিষ্ট্যযুক্ত সমস্ত "শিরোনাম" উপাদান নির্বাচন করে
/বইয়ের দোকান/বই "বইস্টোর" এলিমেন্টের পরে সমস্ত "বই" এলিমেন্ট নির্বাচন করে যার একটি "মূল্য" এলিমেন্ট আছে যার মান 35.00-এর বেশি
/বইয়ের দোকান/বই/শিরোনাম "বইস্টোর" উপাদানের সমস্ত বই "শিরোনাম" উপাদান নির্বাচন করে যার একটি "মূল্য" উপাদান রয়েছে যার মান 35.00-এর বেশি

অজানা নোড নির্বাচন করা হচ্ছে

XPath বিশেষ অক্ষর অজানা XML নোড নির্বাচন করতে ব্যবহার করা যেতে পারে।

নীচের সারণীতে, আমরা কিছু অভিব্যক্তি পথ এবং অভিব্যক্তি ফলাফল তালিকাভুক্ত করেছি:

একাধিক পাথ নির্বাচন করা হচ্ছে

অপারেটর ব্যবহার করে | XPath এক্সপ্রেশনে আপনি একাধিক পাথ নির্বাচন করতে পারেন। নীচের সারণীতে বেশ কয়েকটি পথের অভিব্যক্তি এবং তাদের ফলাফলগুলি তালিকাভুক্ত করা হয়েছে:

5 অক্ষএক্সপাথ

আমরা উদাহরণে পরে নিম্নলিখিত XML নথিটি ব্যবহার করব।

হ্যারি পটার 29.99 XML শেখা 39.95

অক্ষগুলি বর্তমান নোডের সাপেক্ষে নোডের সেটগুলিকে সংজ্ঞায়িত করে।

অক্ষের নাম ফলাফল
পূর্বপুরুষ বর্তমান নোডের সমস্ত পূর্বপুরুষ (পিতা-মাতা, দাদা-দাদি ইত্যাদি) নির্বাচন করে
ancestor-or-self বর্তমান নোড এবং বর্তমান নোডের সমস্ত পূর্বপুরুষ (বাবা-মা, দাদা-দাদি ইত্যাদি) নির্বাচন করে
বৈশিষ্ট্য
শিশু
বংশধর বর্তমান নোডের সমস্ত শিশু (সন্তান, নাতি-নাতনি, ইত্যাদি) নির্বাচন করে
descendant-or-self বর্তমান নোড এবং বর্তমান নোডের সমস্ত শিশু (সন্তান, নাতি-নাতনি ইত্যাদি) নির্বাচন করে
অনুসরণ বর্তমান নোডের ট্যাগ বন্ধ হওয়ার পরে নথিতে সবকিছু নির্বাচন করে
নিম্নলিখিত ভাইবোন বর্তমান নোডের পরে একই স্তরের সমস্ত নোড নির্বাচন করে
নামস্থান বর্তমান নোডের প্রদত্ত নামস্থানে সমস্ত নোড নির্বাচন করে
অভিভাবক বর্তমান নোডের অভিভাবক নির্বাচন করে
পূর্ববর্তী পূর্বপুরুষ, অ্যাট্রিবিউট নোড এবং নেমস্পেস নোডগুলি বাদ দিয়ে নথিতে বর্তমান নোডের আগে উপস্থিত সমস্ত নোড নির্বাচন করে
preceding- ভাইবোন বর্তমান নোড পর্যন্ত সমস্ত ভাইবোন নির্বাচন করে
স্ব বর্তমান নোড নির্বাচন করে

6 অভিব্যক্তিনমুনা পাথ

অবস্থান পথ পরম বা আপেক্ষিক হতে পারে. একটি পরম অবস্থান পথ একটি স্ল্যাশ (/) দিয়ে শুরু হয়, কিন্তু একটি আপেক্ষিক পাথ হয় না। উভয় ক্ষেত্রেই, স্যাম্পলিং পাথ স্ল্যাশ দ্বারা পৃথক করা এক বা একাধিক ধাপ নিয়ে গঠিত:

পরম অবস্থান পথ:

/ধাপ/পদক্ষেপ/...

আপেক্ষিক অবস্থান আনার পথ:

ধাপ/ধাপ/...

বর্তমান নোড সেটে নোডের বিরুদ্ধে প্রতিটি ধাপ মূল্যায়ন করা হয়। ধাপে রয়েছে:

  • অক্ষ (নির্বাচিত নোড এবং বর্তমান নোডের মধ্যে ট্রি সম্পর্ক সংজ্ঞায়িত করে);
  • নোড চেক (একটি অক্ষের মধ্যে একটি নোড সনাক্ত করে);
  • শূন্য বা তার বেশি পূর্বাভাস (নোডের নির্বাচিত সেটকে আরও পরিমার্জিত করতে)

আনার ধাপ সিনট্যাক্স হল:

Axisname::nodetestAxisname::nodetest[ভবিষ্যদ্বাণীকারী]

উদাহরণ ফলাফল
শিশু::বই বর্তমান নোডের শিশু সমস্ত বই নোড নির্বাচন করে
বৈশিষ্ট্য::ল্যাং বর্তমান নোডের ভাষা বৈশিষ্ট্য (ল্যাং) নির্বাচন করে
শিশু::* বর্তমান নোডের সমস্ত শিশু নির্বাচন করে
বৈশিষ্ট্য::* বর্তমান নোডের সমস্ত বৈশিষ্ট্য নির্বাচন করে
শিশু::পাঠ্য() বর্তমান নোডের সমস্ত পাঠ্য নোড নির্বাচন করে
শিশু ::নোড() বর্তমান নোডের সমস্ত তাৎক্ষণিক শিশু নির্বাচন করে
বংশধর ::বই বর্তমান নোডের সমস্ত শিশু নির্বাচন করে
পূর্বপুরুষ ::বই বর্তমান নোডের "বই" এর সমস্ত পূর্বপুরুষ নির্বাচন করে
পূর্বপুরুষ-বা-স্ব::বই বর্তমান নোডের সমস্ত বই পূর্বপুরুষ নির্বাচন করে - এবং বর্তমান নোড যদি এটি একটি বইও হয়
শিশু::*/শিশু::মূল্য বর্তমান নোড থেকে এক স্তর দূরে "মূল্য" এর সমস্ত শিশু নির্বাচন করে৷

7 অপারেটরএক্সপাথ

XPath এক্সপ্রেশনগুলি নোড, স্ট্রিং, বুলিয়ান বা সাংখ্যিক মানের সেট হিসাবে ফিরে আসে। নীচে XPath এক্সপ্রেশনে ব্যবহৃত অপারেটরগুলির একটি তালিকা রয়েছে:

অপারেটর বর্ণনা উদাহরণ
| নোডের দুটি সেট গণনা করে //বই | //সিডি
+ যোগ 6 + 4
- বিয়োগ 6 - 4
* গুণ 6 * 4
div বিভাগ 8 div 4
= সমতা মূল্য = 9.80
!= অসমতা মূল্য!=9.80
< থেকে কম মূল্য<9.80
<= কম বা সমান মূল্য≤9.80
> অধিক মূল্য>9.80
>= বেশি বা সমান মূল্য≤9.80
বা বা মূল্য=9.80 বা মূল্য=9.70
এবং এবং মূল্য>9.00 এবং মূল্য<9.90
মোড বিভাগের অবশিষ্টাংশ 5 মোড 2

8 উদাহরণএক্সপাথ

আসুন কয়েকটি উদাহরণ সহ মৌলিক XPath সিনট্যাক্সের মাধ্যমে চলুন। আমরা নীচের উদাহরণগুলিতে নিম্নলিখিত XML নথি "books.xml" ব্যবহার করব:

প্রতিদিন ইতালীয় গিয়াদা দে লরেন্তিস 2005 30.00 হ্যারি পটার জে কে রাওউলিং 2005 29.99 XQuery কিক স্টার্ট জেমস ম্যাকগভর্ন বোথনার প্রতি কার্ট ক্যাগল জেমস লিন বৈদ্যনাথন নাগরাজন 2003 49.99 XML শেখা এরিক টি. রে 2003 39.95

একটি XML নথি লোড হচ্ছে৷

XML ডকুমেন্ট ডাউনলোড করতে XMLHttpRequest ব্যবহার করুন, যা বেশিরভাগ আধুনিক ব্রাউজার দ্বারা সমর্থিত:

Var xmlhttp=new XMLHttpRequest()

লিগ্যাসি মাইক্রোসফ্ট ব্রাউজারগুলির জন্য কোড (IE 5 এবং 6):

Var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

নোড নির্বাচন

দুর্ভাগ্যবশত, XPath অন্যান্য ব্রাউজারগুলির তুলনায় ইন্টারনেট এক্সপ্লোরারে ভিন্নভাবে কাজ করতে পারে। আমাদের উদাহরণগুলিতে আমরা এমন কোড ব্যবহার করব যা বেশিরভাগ ব্রাউজারে কাজ করা উচিত। ইন্টারনেট এক্সপ্লোরার একটি XML নথিতে নোড নির্বাচন করতে "selectNodes()" পদ্ধতি ব্যবহার করে:

XmlDoc.selectNodes(xpath);

ফায়ারফক্স, ক্রোম, অপেরা এবং সাফারি একটি XML নথি থেকে নোড নির্বাচন করতে evaluate() পদ্ধতি ব্যবহার করে:

XmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);

সব শিরোনাম নির্বাচন করুন

নিম্নলিখিত উদাহরণ সমস্ত হেডার নোড নির্বাচন করে:

/বইয়ের দোকান/বই/শিরোনাম

প্রথম বইয়ের শিরোনাম নির্বাচন করা

নিম্নলিখিত উদাহরণটি "বইস্টোর" উপাদানের পরে প্রথম "বই" নোডের শিরোনাম নির্বাচন করে:

/বইয়ের দোকান/বই/শিরোনাম

সব দাম নির্বাচন করুন

নিম্নলিখিত উদাহরণটি সমস্ত মূল্য নোডের পাঠ্য নির্বাচন করে:

/বইয়ের দোকান/বই/মূল্য

মূল্য>35 সহ নোড নির্বাচন করে

নিম্নলিখিত উদাহরণটি 35 এর উপরে দাম সহ সমস্ত নোড নির্বাচন করে:

/বইয়ের দোকান/বই/মূল্য

মূল্য>35 সহ হেডার নোড নির্বাচন করা

নিম্নলিখিত উদাহরণটি 35-এর বেশি মূল্য সহ সমস্ত শিরোনাম নোড নির্বাচন করে:

/বইয়ের দোকান/বই/শিরোনাম

Xpath হল xml বা xhtml নথির উপাদানগুলির জন্য একটি কোয়েরি ভাষা। ঠিক SQL এর মত, xpath একটি ঘোষণামূলক ক্যোয়ারী ভাষা। আগ্রহের ডেটা পেতে, আপনাকে শুধুমাত্র এই ডেটা বর্ণনা করে এমন একটি প্রশ্ন তৈরি করতে হবে। xpath ভাষা দোভাষী আপনার জন্য সমস্ত নোংরা কাজ করবে।
খুব সুবিধাজনক, তাই না? ওয়েব পেজ নোড অ্যাক্সেস করার জন্য xpath কী কী ক্ষমতা দেয় তা দেখা যাক।

ওয়েব পেজ নোডের জন্য একটি অনুরোধ তৈরি করা হচ্ছে

আমি আপনার নজরে একটি ছোট পরীক্ষাগারের কাজ নিয়ে আসছি, যার সময় আমি একটি ওয়েব পৃষ্ঠায় xpath অনুরোধ তৈরির প্রদর্শন করব। আপনি আমার দেওয়া অনুরোধগুলি পুনরাবৃত্তি করতে সক্ষম হবেন এবং সবচেয়ে গুরুত্বপূর্ণভাবে, আপনার নিজের পূরণ করার চেষ্টা করুন। আমি আশা করি যে এটির জন্য ধন্যবাদ, নিবন্ধটি xpath থেকে xml এর সাথে পরিচিত নতুনদের এবং প্রোগ্রামারদের জন্য সমানভাবে আকর্ষণীয় হবে।

পরীক্ষাগারের জন্য আমাদের প্রয়োজন হবে:
- xhtml ওয়েব পৃষ্ঠা;
- অ্যাড-অন সহ মজিলা ফায়ারফক্স ব্রাউজার;
- ফায়ারবাগ;
- ফায়ারপথ;
(আপনি ভিজ্যুয়াল এক্সপাথ সমর্থন সহ অন্য কোনো ব্রাউজার ব্যবহার করতে পারেন)
- একটু সময়.

একটি পরীক্ষা পরিচালনার জন্য একটি ওয়েব পৃষ্ঠা হিসাবে, আমি ওয়ার্ল্ড ওয়াইড ওয়েব কনসোর্টিয়াম ওয়েবসাইটের ("http://w3.org") মূল পৃষ্ঠার প্রস্তাব করি৷ এই সংস্থাটিই xquery(xpath) ভাষা, xhtml স্পেসিফিকেশন এবং অন্যান্য অনেক ইন্টারনেট মান উন্নয়ন করে।

টাস্ক
xpath ক্যোয়ারী ব্যবহার করে w3.org প্রধান পৃষ্ঠার xhtml কোড থেকে কনসোর্টিয়াম সম্মেলন সম্পর্কে তথ্য পুনরুদ্ধার করুন।
আসুন xpath প্রশ্ন লিখতে শুরু করি।
প্রথম Xpath অনুরোধ
FireBug-এ Firepath ট্যাব খুলুন, নির্বাচকের সাথে বিশ্লেষণ করার জন্য উপাদান নির্বাচন করুন, ক্লিক করুন: Firepath নির্বাচিত উপাদানের জন্য একটি xpath অনুরোধ তৈরি করেছে।

আপনি যদি প্রথম ইভেন্টের শিরোনাম নির্বাচন করেন, তাহলে অনুরোধটি এরকম হবে:

অপ্রয়োজনীয় সূচীগুলি সরানোর পরে, ক্যোয়ারীটি হেডার প্রকারের সমস্ত উপাদানের সাথে মেলে।

Firepath ক্যোয়ারী মেলে উপাদান হাইলাইট. আপনি রিয়েল টাইমে দেখতে পারেন কোন ডকুমেন্ট নোড কোয়েরির সাথে মেলে।

সম্মেলনের স্থান সম্পর্কে তথ্যের জন্য অনুরোধ:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p

এইভাবে আমরা স্পনসরদের একটি তালিকা পেতে পারি:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p

xpath সিনট্যাক্স

আসুন আমরা তৈরি করা প্রশ্নগুলিতে ফিরে যাই এবং বুঝতে পারি যে সেগুলি কীভাবে গঠন করা হয়।
আসুন বিস্তারিতভাবে প্রথম অনুরোধ বিবেচনা করা যাক

এই প্রশ্নে আমি xpath এর ক্ষমতা প্রদর্শনের জন্য তিনটি ভাগে ভাগ করেছি। (অংশে ভাগ করা কঠিন)

অগ্রভাগ
.// - বর্তমান প্রেক্ষাপট থেকে অনুক্রমের শূন্য বা তার বেশি স্তরে পুনরাবৃত্ত বংশদ্ভুত। আমাদের ক্ষেত্রে, বর্তমান প্রেক্ষাপটটি নথির মূল

দ্বিতীয় অংশ
* - কোন উপাদান,
[@id="w3c_home_upcoming_events"]- একটি পূর্বাভাস যার ভিত্তিতে আমরা একটি নোড অনুসন্ধান করি যার একটি আইডি বৈশিষ্ট্য রয়েছে "w3c_home_upcoming_events" এর সমান। XHTML এলিমেন্ট আইডি অবশ্যই অনন্য হতে হবে। অতএব, "একটি নির্দিষ্ট আইডি সহ যেকোন উপাদান" ক্যোয়ারীটি একমাত্র নোডটি ফেরত দেবে যা আমরা খুঁজছি।

আমরা প্রতিস্থাপন করতে পারেন * সঠিক নোড নামের কাছে divএই অনুরোধে
div[@id="w3c_home_upcoming_events"]

এইভাবে, আমরা ডকুমেন্ট ট্রি থেকে নিচে যাই div[@id="w3c_home_upcoming_events"] নোডে যা আমাদের প্রয়োজন। DOM ট্রি কী নোড নিয়ে গঠিত এবং কত স্তরের স্তরবিন্যাস উপরে থাকে তা আমরা মোটেই চিন্তা করি না।

তৃতীয় অংশ
/ul/li/div/p/a-xpath হল একটি নির্দিষ্ট উপাদানের পথ। পাথ অ্যাড্রেসিং পদক্ষেপ এবং নোড চেকিং অবস্থা (উল, লি, ইত্যাদি) নিয়ে গঠিত। ধাপগুলি একটি "/" (স্ল্যাশ) অক্ষর দ্বারা পৃথক করা হয়।

xpath সংগ্রহ
একটি পূর্বাভাস বা অ্যাড্রেসিং পদক্ষেপ ব্যবহার করে আগ্রহের নোড অ্যাক্সেস করা সবসময় সম্ভব নয়। খুব প্রায়ই একটি অনুক্রমের স্তরে একই ধরণের অনেক নোড থাকে এবং "শুধুমাত্র প্রথম" বা "কেবল দ্বিতীয়" নোড নির্বাচন করা প্রয়োজন। এই ধরনের ক্ষেত্রে সংগ্রহ প্রদান করা হয়.

xpath সংগ্রহ আপনাকে একটি উপাদানের সূচী দ্বারা অ্যাক্সেস করতে দেয়। সূচীগুলি মূল নথিতে উপাদানগুলি যে ক্রমানুসারে উপস্থাপন করা হয়েছিল তার সাথে মিলে যায়। সংগ্রহে ক্রমিক নম্বর এক থেকে গণনা করা হয়।

এই সত্যের উপর ভিত্তি করে যে "ভেন্যু" সর্বদা "সম্মেলনের নাম" এর পরে দ্বিতীয় অনুচ্ছেদ হয়, আমরা নিম্নলিখিত প্রশ্নটি পাই:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p
যেখানে p হল তালিকার প্রতিটি নোডের জন্য সেটের দ্বিতীয় উপাদান /ul/li/div।

একইভাবে, আমরা অনুরোধের সাথে স্পনসরদের একটি তালিকা পেতে পারি:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p

কিছু xpath ফাংশন
একটি সংগ্রহের মধ্যে উপাদানগুলির সাথে কাজ করার জন্য xpath-এ অনেকগুলি ফাংশন রয়েছে। আমি তাদের মাত্র কয়েক দেব.

শেষ():
সংগ্রহের শেষ উপাদান প্রদান করে।
প্রশ্ন ul/li/div/p - প্রতিটি "ul" তালিকা নোডের জন্য শেষ অনুচ্ছেদগুলি ফিরিয়ে দেবে।
প্রথম() ফাংশন প্রদান করা হয় না। প্রথম উপাদান অ্যাক্সেস করতে, সূচক "1" ব্যবহার করুন।

পাঠ্য():
একটি উপাদানের পরীক্ষার বিষয়বস্তু প্রদান করে।
.//a – আমরা "আর্কাইভ" পাঠ্যের সাথে সমস্ত লিঙ্ক পাই।

অবস্থান() এবং মোড:
position() - একটি সেটে একটি উপাদানের অবস্থান ফেরত দেয়।
mod হল বিভাগের অবশিষ্টাংশ।

এই ফাংশনগুলিকে একত্রিত করে আমরা পেতে পারি:
- এমনকি উপাদান ul/li না
- এমনকি উপাদান: ul/li

তুলনা অপারেশন

  • < - логическое «меньше»
  • > - যৌক্তিক "এর চেয়ে বড়"
  • <= - логическое «меньше либо равно»
  • >= - যৌক্তিক "এর চেয়ে বড় বা সমান"
ul/li , ul/li - তালিকার উপাদানগুলি 3য় সংখ্যা থেকে শুরু করে এবং এর বিপরীতে।

প্রত্যেকের নিজের উপর

পাওার জন্য চেষ্টা:
- এমনকি বাম মেনু "স্ট্যান্ডার্ডস" থেকে URL লিঙ্ক;
- w3c.org এর মূল পৃষ্ঠার প্রথমটি ছাড়া সকল সংবাদের শিরোনাম।

PHP5 এ Xpath

$dom = নতুন DomDocument(); $dom->loadHTML($HTMLCode); $xpath = নতুন DomXPath($dom); $_res = $xpath->query(."//*[@id="w3c_home_upcoming_events"]/ul/li/div/p/a"); foreach($_res => $obj) ( echo "URL: ".$obj->getAttribute("href"); echo $obj->nodeValue; )

অবশেষে

একটি সাধারণ উদাহরণ ব্যবহার করে, আমরা ওয়েব পেজ নোড অ্যাক্সেস করার জন্য xpath এর ক্ষমতা দেখেছি।
এক্সপাথ হল এক্সএমএল উপাদান এবং এক্সএইচটিএমএল, এক্সএসএলটি রূপান্তর অ্যাক্সেস করার জন্য শিল্পের মান।
আপনি যেকোনো html পৃষ্ঠা পার্স করতে এটি ব্যবহার করতে পারেন। যদি সোর্স এইচটিএমএল কোডে মার্কআপে উল্লেখযোগ্য ত্রুটি থাকে, তাহলে এটি চালান

আজ আমরা PHP এর সাথে XPath ব্যবহার করার বিষয়টিকে ঘনিষ্ঠভাবে দেখব। আপনি উদাহরণগুলিতে দেখতে পাবেন কিভাবে XPath উল্লেখযোগ্যভাবে কোডের পরিমাণ হ্রাস করে। XPath-এ প্রশ্ন এবং ফাংশন ব্যবহার করা যাক।

শুরুতে, আমি আপনাকে দুটি ধরণের নথি সরবরাহ করব: DTD এবং XML, যেগুলি ব্যবহার করে আমরা PHP DOM XPath এর কার্যকারিতা দেখব। তারা দেখতে কেমন তা এখানে:

একটি বই একজন লেখক হরর প্রথম অধ্যায় আরেকটি বই আরেকজন লেখক কল্পবিজ্ঞান প্রথম অধ্যায়

মৌলিক XPath প্রশ্ন

সাধারণ XPath সিনট্যাক্স আপনাকে XML নথিতে উপাদানগুলি অ্যাক্সেস করতে দেয়। সবচেয়ে সহজ উপায়ে, আপনি পছন্দসই উপাদানটির পথ নির্দিষ্ট করতে পারেন। উপরে প্রদত্ত XML নথি ব্যবহার করে, নিম্নলিখিত XPath ক্যোয়ারীটি বইয়ের উপাদানে পাওয়া বর্তমান উপাদানগুলির সংগ্রহ ফিরিয়ে দেবে:

//লাইব্রেরি/বই

এটার মত! দুটি ফরোয়ার্ড স্ল্যাশ নথির মূল উপাদানকে সংজ্ঞায়িত করে এবং একটি ফরোয়ার্ড স্ল্যাশ বইয়ের শিশু উপাদানে রূপান্তরিত করে। এটা সহজ এবং দ্রুত, তাই না?

কিন্তু যদি আপনি একটি সেট থেকে একটি নির্দিষ্ট বই উপাদান নির্বাচন করতে চান? ধরা যাক আপনি একজন "নির্দিষ্ট লেখক" এর বই চান। এর জন্য XPath ক্যোয়ারী হবে:

//লাইব্রেরি/বই/লেখক/..

তুমি ব্যবহার করতে পার পাঠ্য()নোডের মান তুলনা করতে বর্গাকার বন্ধনীতে। এছাড়াও «/..» মানে আমরা প্যারেন্ট এলিমেন্ট ব্যবহার করতে চাই (অর্থাৎ উপরের একটি নোড ফিরে যান)।

XPath প্রশ্নগুলি এক বা দুটি ফাংশন ব্যবহার করে তৈরি করা হয়: প্রশ্ন()এবং মূল্যায়ন(). উভয় একটি অনুরোধ ফর্ম, কিন্তু পার্থক্য ফিরে ফলাফল. query() সর্বদা ফিরে আসবে DOMNodeList, অসদৃশ মূল্যায়ন()সম্ভব হলে একটি পাঠ্য ফলাফল প্রদান করবে। উদাহরণ স্বরূপ, যদি আপনার XPath ক্যোয়ারী কোনো নির্দিষ্ট লেখকের লেখা বইয়ের সংখ্যা ফেরত দেয়, তাহলে query() একটি খালি DOMNodeList প্রদান করবে, evaluate() একটি সংখ্যা ফেরত দেবে, আপনি নোড থেকে ডেটা পুনরুদ্ধার করতে সরাসরি এটি ব্যবহার করতে পারেন .

এক্সপাথ কোড এবং গতির সুবিধা

আসুন একটি সাধারণ উদাহরণ দেখি যা একটি নির্দিষ্ট লেখকের লেখা বইয়ের সংখ্যা ফেরত দেবে। আমরা XPath ব্যবহার না করেই প্রথম পদ্ধতিটি দেখব যেভাবে আমরা সবসময় করি। এখন আপনি বুঝতে পারবেন কিভাবে XPath ছাড়া এটি করা যায় এবং XPath দিয়ে এটি করা কতটা সহজ।

domDocument->getElementsByTagName("লেখক"); foreach ($element হিসেবে $element) ( যদি ($element->nodeValue == $author) ( $total++; ) ) $number ফেরত দেয়; )

পরবর্তী পদ্ধতি একই ফলাফল প্রদান করে, কিন্তু একটি নির্দিষ্ট লেখকের লেখা বইগুলি নির্বাচন করতে XPath ব্যবহার করে।

dom ডকুমেন্ট); $result = $xpath->query($query); ফেরত $result->দৈর্ঘ্য; )

মনে রাখবেন যে কোন লেখক প্রতিটি বই লিখেছেন তা নির্ধারণ করতে আমাদের প্রতিটি উপাদানের মান পুনরায় পরীক্ষা করার দরকার নেই। কিন্তু আমরা XPath ফাংশন ব্যবহার করে কোডটিকে আরও সহজ করতে পারি গণনা()এই পথের উপাদানগুলির বিষয়বস্তু গণনা করতে।

dom ডকুমেন্ট); ফেরত $xpath->মূল্যায়ন($query); )

আমরা একটি একক লাইন XPath ক্যোয়ারী দিয়ে আমাদের প্রয়োজনীয় তথ্য পেতে পারি। অনেক পিএইচপি ফিল্টার তৈরি করার দরকার নেই। এই কার্যকারিতা লিখতে এটি সবচেয়ে সহজ এবং দ্রুততম উপায়!

মনে রাখবেন যে শেষ উদাহরণে evaluate() ব্যবহার করা হয়েছিল। কারণ count() ফাংশন একটি পাঠ্য ফলাফল প্রদান করে। query() ব্যবহার করলে একটি DOMNodeList ফিরে আসবে, কিন্তু এটি খালি থাকবে।

XPath ব্যবহার করা মূল্যবান কারণ এটি শুধুমাত্র আপনার PHP কোডকে সহজ করে তোলে না, এটি একটি গতির সুবিধাও দেয়। আমি লক্ষ্য করেছি যে প্রথম সংস্করণটি দ্বিতীয়টির তুলনায় গড়ে 30% দ্রুত ছিল। তবে তৃতীয়টি প্রথমটির চেয়ে 10% দ্রুত। অবশ্যই, এটি আপনার সার্ভার এবং আপনি যে প্রশ্নগুলি ব্যবহার করছেন তার উপর নির্ভর করে। XPath এর বিশুদ্ধ আকারে ব্যবহার করলে কোড লেখার গতি এবং সহজে সর্বাধিক ফলাফল পাওয়া যায়।

XPath ফাংশন

এখানে কয়েকটি ফাংশন রয়েছে যা XPath এর সাথে ব্যবহার করা যেতে পারে। আপনি প্রচুর সংস্থানও পাবেন যা প্রতিটি উপলব্ধ বৈশিষ্ট্য সম্পর্কে বিশদে যায়। আপনি যদি DOMNodeList গণনা করতে চান বা nodeValue (নোড মান) তুলনা করতে চান তবে আপনি একটি উপযুক্ত XPath ফাংশন খুঁজে পেতে পারেন যা অপ্রয়োজনীয় PHP কোডের ব্যবহার বাদ দেয়।

আপনি ইতিমধ্যে count() ফাংশনের উদাহরণ থেকে এটি জানেন। প্রদত্ত ISBN সহ বইয়ের শিরোনাম পেতে id() ফাংশনটি ব্যবহার করা যাক। এটি করার জন্য আপনাকে নিম্নলিখিত XPath এক্সপ্রেশনটি ব্যবহার করতে হবে:

আইডি("isbn1234 isbn1235")/টাইটেল

মনে রাখবেন যে আপনি যে মানগুলি খুঁজছেন তা বন্ধনীতে আবদ্ধ করা উচিত নয়, কেবল স্পেস দিয়ে আলাদা করা উচিত। এছাড়াও, একটি কমা যোগ করার বিষয়ে চিন্তা করবেন না:

dom ডকুমেন্ট); $result = $xpath->query($query); $books = array(); foreach ($result as $node) ( $book = array("title" => $booknode->nodeValue); $books = $book; ) $books ফেরত দিন; )

XPath এ জটিল ফাংশন পরিচালনা করা অবিশ্বাস্যভাবে সহজ।

XPath এর সাথে PHP ফাংশন ব্যবহার করা

কখনও কখনও আপনার আরও কার্যকারিতার প্রয়োজন হবে যা স্ট্যান্ডার্ড XPath ফাংশনগুলি প্রদান করতে পারে না। সৌভাগ্যবশত, PHP DOM নেটিভ PHP ফাংশনগুলিকে XPath কোয়েরির সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়।

আসুন একটি উদাহরণ দেখি যা একটি বইয়ের শিরোনামে শব্দের সংখ্যা প্রদান করে। এই সহজ ফাংশনে, আমরা নিম্নলিখিত লিখব:

dom ডকুমেন্ট); $result = $xpath->query($query); $title = $result->item(0)->getElementsByTagName("title") ->item(0)->nodeValue; str_word_count($title); )

কিন্তু, আমরা সরাসরি XPath অনুরোধে str_word_count() ফাংশন অন্তর্ভুক্ত করতে পারি। এটি কয়েকটি ধাপে করা যেতে পারে। প্রথমত, আমাদের একটি XPath অবজেক্টের সাথে নামস্থান নিবন্ধন করতে হবে। XPath অনুরোধে PHP ফাংশনগুলিকে "php:functionString" স্ট্রিং ব্যবহার করে ডাকা হয়, যার পরে পছন্দসই ফাংশনের নাম লেখা হয়। এছাড়াও, http://php.net/xpath-এ নেমস্পেস আরও বিস্তারিতভাবে আলোচনা করা হয়েছে। অন্যান্য নেমস্পেস মান একটি ত্রুটি নিক্ষেপ করবে। এর পরে আমাদের registerPHPFunctions() কল করতে হবে। এই ফাংশনটি পিএইচপিকে বলে যে যখন নেমস্পেস "php:" এর মাধ্যমে একটি কল করা হয়, তখন পিএইচপি এই কলটি পরিচালনা করবে।

কলিং ফাংশনগুলির জন্য একটি উদাহরণ সিনট্যাক্স হবে:

php:functionString("nameoffunction", arg, arg...)

আসুন নিম্নলিখিত getNumberOfWords() ফাংশন উদাহরণে এটি একসাথে রাখি:

dom ডকুমেন্ট); // php নামস্থান নিবন্ধন করুন $xpath->registerNamespace("php", "http://php.net/xpath"); //এখন php ফাংশনগুলিকে xpath অনুরোধে কল করা যেতে পারে $xpath->registerPHPFunctions(); $query = "php:functionString("str_word_count",(//library/book[@isbn = "$isbn"]/title)"; ফেরত $xpath->মূল্যায়ন($query); )

মনে রাখবেন যে নোডের পাঠ্য পেতে আপনাকে XPath ফাংশন টেক্সট() কল করতে হবে না। registerPHPFunctions() পদ্ধতি এটিকে স্বয়ংক্রিয় করে তোলে। যদিও, কোডের নিম্নলিখিত উদাহরণ লাইনটিও বৈধ হবে:

php:functionString("str_word_count",(//library/book[@isbn = "$isbn"]/title))

PHP ফাংশন নিবন্ধন করা শুধুমাত্র PHP-তে অন্তর্ভুক্ত ফাংশনের মধ্যে সীমাবদ্ধ নয়। আপনি আপনার নিজস্ব ফাংশন সংজ্ঞায়িত করতে পারেন এবং XPath এর ভিতরে ব্যবহার করতে পারেন। একমাত্র পার্থক্য হল আপনাকে "php:functionString" এর পরিবর্তে "php:function" ব্যবহার করতে হবে।

মৌলিক কার্যকারিতা প্রদর্শনের জন্য ক্লাসের বাইরে একটি ফাংশন লিখি। আমরা যে ফাংশনটি ব্যবহার করব তা লেখক "জর্জ অরওয়েল" এর বই ফেরত দেয়। আপনি ক্যোয়ারীতে অন্তর্ভুক্ত করতে চান এমন প্রতিটি নোডের জন্য এটি সত্য হওয়া উচিত।

nodeValue == "জর্জ অরওয়েল"; } !}

ফাংশনে পাস করা আর্গুমেন্ট হল DOM উপাদানের একটি অ্যারে। এই ফাংশনটি অ্যারের মাধ্যমে যায় এবং প্রয়োজনীয় উপাদানগুলি নির্ধারণ করে এবং তারপরে সেগুলিকে DOMNodeList-এ অন্তর্ভুক্ত করে। এই উদাহরণে, নোডটি পরীক্ষা করা হচ্ছে /book, এবং আমরা প্রয়োজনীয় উপাদানগুলি নির্ধারণ করতে /author ব্যবহার করেছি।

এখন আমরা getGeorgeOrwellBooks() ফাংশন তৈরি করতে পারি:

dom ডকুমেন্ট); $xpath->registerNamespace("php", "http://php.net/xpath"); $xpath->RegisterPHPFunctions(); $query = "//library/book1"; $result = $xpath->query($query); $books = array(); foreach($result as $node) ( $books = $node->getElementsByTagName("title") ->item(0)->nodeValue; ) $books ফেরত দিন; )

যদি compare() ফাংশন স্ট্যাটিক হয়, তাহলে আপনাকে XPath ক্যোয়ারী সংশোধন করতে হবে:

//লাইব্রেরি/বই

সত্যি বলতে, এই সমস্ত কার্যকারিতা বিশুদ্ধ XPath কোড ব্যবহার করে প্রয়োগ করা যেতে পারে। কিন্তু উদাহরণটি দেখায় কিভাবে আপনি XPath কোয়েরি প্রসারিত করতে পারেন এবং তাদের আরও জটিল করে তুলতে পারেন।

উপসংহারে

এক্সপাথ XML এর সাথে কাজ করার সময় কোডের পরিমাণ কমাতে এবং এর প্রক্রিয়াকরণ বাড়ানোর একটি দুর্দান্ত উপায়। অতিরিক্ত PHP DOM কার্যকারিতা আপনাকে XPath ফাংশন প্রসারিত করতে দেয়। এটি সত্যিই একটি দরকারী জিনিস, যদি আপনি এটি ব্যবহার করেন এবং নির্দিষ্ট বিষয়ে গভীরভাবে অনুসন্ধান করেন তবে আপনাকে কম এবং কম কোড লিখতে হবে।


XPath একটি XML নথিতে বা নোডের একটি সেটে নোড নির্বাচন করতে পাথ এক্সপ্রেশন ব্যবহার করে। পথ (পথ) বা স্টেজ (পদক্ষেপ) বরাবর নোড দ্বারা নির্বাচিত একটিতে।

উদাহরণ XML নথি

আমরা নীচের উদাহরণগুলিতে এই XML নথিটি ব্যবহার করব।


হ্যারি পটার
29.99


XML শেখা
39.95

নোড নির্বাচন করুন

XPath একটি XML নথিতে নোড নির্বাচন করতে পাথ এক্সপ্রেশন ব্যবহার করে। অথবা একটি ধাপ নির্বাচন করতে একটি নোড মাধ্যমে পথ বরাবর. নিম্নলিখিত সবচেয়ে দরকারী পথ অভিব্যক্তি:

নীচের সারণীতে আমরা কিছু এক্সপ্রেশন পাথ এবং এক্সপ্রেশনের ফলাফল দেখাই:

অভিব্যক্তি পথফলাফল
বইয়ের দোকানবই উপাদানের সমস্ত চাইল্ড নোড নির্বাচন করুন।
/ বইয়ের দোকান

মূল উপাদান বইয়ের দোকান নির্বাচন করুন.

দ্রষ্টব্য: যদি একটি পাথ একটি স্ল্যাশ (/) দিয়ে শুরু হয়, তবে পথটি সর্বদা উপাদানটির পরম পথের প্রতিনিধিত্ব করে!

বইয়ের দোকান/বইবইয়ের দোকানের সমস্ত বুক আইটেমগুলির অন্তর্গত সাবআইটেমগুলি নির্বাচন করুন৷
// বইনথিতে তাদের অবস্থান নির্বিশেষে সমস্ত বইয়ের উপ-উপাদান নির্বাচন করুন।
বইয়ের দোকান // বইবইয়ের দোকানে এবং নীচে অবস্থান নির্বিশেষে, উপাদানের বইয়ের দোকানের বংশধর নয় এমন সমস্ত বই উপাদান নির্বাচন করে৷
// @ল্যাংল্যাং নামের সমস্ত বৈশিষ্ট্য নির্বাচন করুন।

পূর্বাভাস(গুলি)

একটি প্রিডিকেট একটি নির্দিষ্ট নোড বা নোড খুঁজে পেতে ব্যবহৃত হয় যাতে নির্দিষ্ট মান রয়েছে।

প্রিডিকেটটি বর্গাকার বন্ধনীতে আবদ্ধ।

নীচের সারণীতে, আমরা পূর্বাভাস সহ কিছু পথ অভিব্যক্তি এবং অভিব্যক্তির ফলাফল তালিকাভুক্ত করেছি:

অভিব্যক্তি পথফলাফল
/ বইয়ের দোকান / বইপ্রথম ওয়ার্কবুক উপাদানের অন্তর্গত সাব-এলিমেন্ট নির্বাচন করুন।
/বুকস্টোর/বই [শেষ()]বইয়ের শেষ বই উপাদানের অন্তর্গত উপ-উপাদান নির্বাচন করুন।
/ বইয়ের দোকান / বই [শেষ () - 1]দ্বিতীয় বইয়ের আইটেমটির পারস্পরিক বইয়ের দোকান সম্পর্কিত উপ-আইটেমগুলি নির্বাচন করুন।
/বুকস্টোর/বই [অবস্থান()<3] বইয়ের উপাদানের প্রথম দুটি বই উপাদান নির্বাচন করুন যা উপ-এলিমেন্টের অন্তর্ভুক্ত।
// শিরোনাম [@lang]ল্যাং নামের সমস্ত বৈশিষ্ট্য নির্বাচন করুন একটি উপাদান শিরোনাম আছে।
// শিরোনাম [@ LANG = "eng"]সমস্ত উপাদানের নাম নির্বাচন করুন এবং এই উপাদানগুলির ইংরেজি বৈশিষ্ট্যের মান রয়েছে।
/বইয়ের দোকান/বইবই উপাদানের সমস্ত বই উপাদান নির্বাচন করুন, এবং মূল্য উপাদানের মান, যা অবশ্যই 35.00-এর বেশি হতে হবে৷
/বইয়ের দোকান/বই/শিরোনামবই উপাদানের সমস্ত বই উপাদান শিরোনাম উপাদান নির্বাচন করুন এবং যেখানে মূল্য উপাদানের মান অবশ্যই 35.00-এর বেশি হতে হবে৷

অজানা নোড নির্বাচন করুন

XPath ওয়াইল্ডকার্ড অজানা XML উপাদান নির্বাচন করতে ব্যবহার করা যেতে পারে।

নীচের সারণীতে, আমরা কিছু পথ অভিব্যক্তির পাশাপাশি এই অভিব্যক্তিগুলির ফলাফলগুলি তালিকাভুক্ত করেছি:

একাধিক পথ বেছে নিন

পাথ এক্সপ্রেশন "|" ব্যবহার করে অপারেটর, আপনি বিভিন্ন পথ বেছে নিতে পারেন।

নীচের সারণীতে, আমরা কিছু পথ অভিব্যক্তির পাশাপাশি এই অভিব্যক্তিগুলির ফলাফলগুলি তালিকাভুক্ত করেছি৷