উত্তর:
ব্যবহার করুন:
(/bookstore/book[@location='US'])[1]
এটি প্রথমে 'ইউএস' এর সমান লোকেশন অ্যাট্রিবিউট সহ বইয়ের উপাদানগুলি পাবে। তারপরে এটি সেট থেকে প্রথম নোডটি নির্বাচন করবে। বন্ধনী ব্যবহারের লক্ষণীয়, যা কিছু বাস্তবায়ন দ্বারা প্রয়োজনীয়।
দ্রষ্টব্য, /bookstore/book[1][@location='US']
প্রথম উপাদানটির মধ্যেও যদি লোকেশনটির বৈশিষ্ট্য না ঘটে তবে এটি একই নয় ।
/bookstore/book[@location='US'][1]
'ইউএস' থেকে সমস্ত বই ফেরত দেয় না। আমি একাধিকবার এবং বিভিন্ন ভাষার এক্সপথ বাস্তবায়নের অধীনে এটি পরীক্ষা করেছি। /bookstore/book[@location='US'][1]
একটি বইয়ের দোকানে অধীনে প্রথম 'মার্কিন' বইটি ফেরত দেয়। যদি একাধিক বইয়ের দোকান থাকে, তবে এটি প্রতিটি থেকে প্রথমটি ফিরে আসবে। ওপি এটিই চেয়েছিল (বইয়ের দোকানে প্রথম নোড)। আপনার সংস্করণ সমস্ত বইয়ের দোকান (প্রথম ম্যাচ) থেকে কেবল একটি বই ফেরত দেয়।
/bookstore/book[@location='US'][1]
কেবল সাধারণ কাঠামো নিয়ে কাজ করে।
আরও কিছুটা কাঠামো যুক্ত করুন এবং জিনিসগুলি বিরতি দিন।
সঙ্গে
<bookstore>
<category>
<book location="US">A1</book>
<book location="FIN">A2</book>
</category>
<category>
<book location="FIN">B1</book>
<book location="US">B2</book>
</category>
</bookstore>
/bookstore/category/book[@location='US'][1]
উৎপাদনের
<book location="US">A1</book>
<book location="US">B2</book>
"আরও জটিল অবস্থার সাথে মেলে এমন প্রথম নোড" নয়। /bookstore/category/book[@location='US'][2]
কিছুই না।
প্রথম বন্ধনী দিয়ে আপনি ফলাফলটি পেতে পারেন মূল প্রশ্নটি:
(/bookstore/category/book[@location='US'])[1]
দেয়
<book location="US">A1</book>
এবং (/bookstore/category/book[@location='US'])[2]
প্রত্যাশার মতো কাজ করে।
/bookstore/book[1]
এবং তা নয় (/bookstore/book)[1]
। আপনার সরবরাহ করা কেসটি ওপি যেমন অনুরোধ করেছে, তেমন নয়। সম্ভবতঃ ওপি আমার উত্তরটি যেমনটি প্রত্যাশা করেছিল তেমনই করেছে (এবং অনুরোধ করেছে) হিসাবে গ্রহণ করেছিল।
'(//div[text() = "'+ name +'"])[1]/following-sibling::*/div/text()'
। ক্ষেত্রে অনেক নোড ম্যাচ আছে name
।
জোনাথন ফিংল্যান্ডের উত্তরের ব্যাখ্যা হিসাবে:
[position()=1 and @location='US']
) সম্পূর্ণরূপে সত্য হতে হবে[position()=1][@location='US']
) একের পর এক সত্য হতে হবে[position()=1][@location='US']
! =[@location='US'][position()=1]
[position()=1 and @location='US']
==[@location='US' and position()=1]
[position()=1]
সংক্ষেপে বলা যেতে পারে[1]
বুলিয়ান অপারেটরগলোকে "সঙ্গে predicates জটিল এক্সপ্রেশন নির্মাণ করতে পারেন and
" এবং " or
", এবং বুলিয়ান জন্য XPath ফাংশন সঙ্গে not()
, true()
এবং false()
। এছাড়াও আপনি বন্ধনীতে উপ-এক্সপ্রেশন মোড়ানো করতে পারেন।
আরও জটিল স্ট্রাক্টেড এক্সএমএল ফাইল বিবেচনায় নিয়ে প্রথম ইংরেজী বইয়ের নোড (পুরো ডকুমেন্টে) সন্ধান করার সবচেয়ে সহজ উপায়, যেমন:
<bookstore>
<category>
<book location="US">A1</book>
<book location="FIN">A2</book>
</category>
<category>
<book location="FIN">B1</book>
<book location="US">B2</book>
</category>
</bookstore>
এক্সপথ এক্সপ্রেশন:
/descendant::book[@location='US'][1]
<bookstore>
<book location="US">A1</book>
<category>
<book location="US">B1</book>
<book location="FIN">B2</book>
</category>
<section>
<book location="FIN">C1</book>
<book location="US">C2</book>
</section>
</bookstore>
সুতরাং উপরোক্ত দেওয়া; আপনি প্রথম বইটি নির্বাচন করতে পারেন
(//book[@location='US'])[1]
এবং এটি যে কোনও জায়গাতেই মার্কিন যুক্তরাষ্ট্রে প্রথমটি খুঁজে পাবে। [ক 1]
//book[@location='US']
মার্কিন যুক্তরাষ্ট্রে সমস্ত বই সহ নোড সেটটি ফিরে আসবে। [ক 1, খ 1, C2 এ]
(//category/book[@location='US'])[1]
ডকুমেন্টের যে কোনও জায়গায় কোনও বিভাগে থাকা প্রথম বইয়ের অবস্থান মার্কিন যুক্ত করবে। [খ 1]
(/bookstore//book[@location='US'])[1]
মার্কিন যুক্তরাষ্ট্রে প্রথম বইটি ফেরত পাঠাবে যা মূল উপাদান পুস্তকের দোকানে যে কোনও জায়গায় উপস্থিত রয়েছে; / পুস্তকের ভাণ্ডার অংশকে সত্যই অপ্রয়োজনীয় করে তুলছে। [ক 1]
প্রত্যক্ষ উত্তরে:
/bookstore/book[@location='US'][1]
বইয়ের দোকানে [এ 1] এর অধীনে মার্কিন যুক্তরাষ্ট্রে আপনার বইয়ের উপাদানগুলির প্রথম নোড ফিরিয়ে দেবে
ঘটনাচক্রে যদি আপনি চান, উদাহরণস্বরূপ প্রথম মার্কিন বইটি খুঁজে পেতে যা বইয়ের দোকানে সরাসরি শিশু ছিল না:
(/bookstore/*//book[@location='US'])[1]
যদি xpath জটিল হয় বা একই xpath এর সাথে একাধিক নোড উপস্থিত থাকে তবে কাঙ্ক্ষিত নোড পেতে সূচকটি ব্যবহার করুন।
প্রাক্তন:
(//bookstore[@location = 'US'])[index]
আপনি যে নম্বরটি চান তা দিতে পারেন।
প্রাক্তন জন্য
<input b="demo">
এবং
(input[@b='demo'])[1]
একটি অনলাইন এক্সপথ পরীক্ষকের সহায়তায় আমি এই উত্তরটি লিখছি ... এর
জন্য:
<table id="t2"><tbody>
<tr><td>123</td><td>other</td></tr>
<tr><td>foo</td><td>columns</td></tr>
<tr><td>bar</td><td>are</td></tr>
<tr><td>xyz</td><td>ignored</td></tr>
</tbody></table>
নিম্নলিখিত এক্সপথ:
id("t2") / tbody / tr / td[1]
আউটপুট:
123
foo
bar
xyz
যেহেতু 1 এর অর্থ এমন সমস্ত টিডি উপাদান নির্বাচন করুন যা তাদের নিজস্ব প্রত্যক্ষ পিতামাতার প্রথম সন্তান।
তবে নিম্নলিখিত এক্সপাথ:
(id("t2") / tbody / tr / td)[1]
আউটপুট:
123