আমার কাছে নিম্নলিখিত নথি রয়েছে:
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
আমি এর মান পেতে পারেন <cc>
জন্য XPath ব্যবহার করা হয় তবে <bb>
হয় zz
?
আমার কাছে নিম্নলিখিত নথি রয়েছে:
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
আমি এর মান পেতে পারেন <cc>
জন্য XPath ব্যবহার করা হয় তবে <bb>
হয় zz
?
উত্তর:
সকলেই কেন ভাইবোনদের <bb/>
খোঁজ নিচ্ছেন তা নিশ্চিত নন, আপনি <a/>
' প্রিডিকেট'-এর সাথে প্রিনিকেটের সাথে মেলে এমন উপাদানগুলির জন্যও পরীক্ষা করতে পারেন :
//a[bb/text() = "zz"]/cc/text()
*-sibling
অক্ষ ব্যবহার করেন নি । যদিও +1
আপনার যা দরকার তা হ'ল following-sibling
এক্সপথ অক্ষ
//a/bb[text()="zz"]/following-sibling::cc[1]/text()
এক্সপথটি এখানে পরীক্ষা করুন: http://www.xpathtester.com/obj/b55ec3ac-dfa4-4f44-81e8-f963ea4a0625
প্রশ্ন: ভাইবোন নোডের একটি নির্দিষ্ট মান থাকলে এক্সপ্যাথ ব্যবহার করে কোনও নোড কীভাবে নির্বাচন করবেন?
যেহেতু নিম্নলিখিত ভাই-বোন এবং পূর্ববর্তী ভাই-বোনদের জন্য কেবলমাত্র "এক্সপাথ অ্যাক্সেস" রয়েছে, তবে অবস্থানটি স্থির থাকলে আপনি তাদের মধ্যে একটি ব্যবহার করতে পারেন।
তবে আরও ভাল:
দেখুন cc
পিতামাতার bb
মান সহকারে সন্তান রয়েছে 'zz'
:
//cc[../bb='zz']
//a[bb = 'zz']/cc
।
প্রথমত, আপনার উদাহরণটি এক্সএমএল সুগঠিত নয়। এটি উপেক্ষা করে এবং আপনি নিজের উদ্দেশ্যগুলি খুব ভালভাবে বর্ণনা করেন নি (আপনি কোন শর্তে ঠিক কী নির্বাচন করতে চান?), আমি ধরে নিই যে আপনি এটি করতে চান:
//cc[preceding-sibling::bb[text()="zz"]]/text()
এটি নির্বাচন করে
TEXT VALUES OF ALL <CC> ELEMENTS
//cc /text()
THAT HAVE A PRECEDING SIBLING <BB>
[preceding-sibling::bb ]
THAT HAS TEXT VALUE EQUAL TO "zz"
[text()="zz"]
আপনি লিখতে পারে হিসাবে হয়
//bb[text()="zz"]/following-sibling::cc/text()
দয়া করে তাকান বৈশিষ্ট , এটা কিছু খুব ভাল পাঠযোগ্য হয়েছে উদাহরণ যেখান থেকে আপনি অনেক কিছু শিখতে হবে।
//a/cc[../bb='zz']/text()
// এ: যেখানেই থাকুক না কেন সমস্ত 'ক' উপাদান নির্বাচন করে।
// এ / সিসি: 'সিসি' উপাদানগুলি 'এ' উপাদানের (যে কোনও ক্ষেত্রেই নয়) বাছাই করে Se
..: বর্তমান নোডের পিতামাতাকে নির্বাচন করে।
[../bb='zz ']: যেখানে ভাইবোন' বিবি 'উপাদানটির মান zz।
এই সমস্যার আরেকটি সমাধান হ'ল
//bb[contains(.,'zz')]/../cc/text()
ব্যাখ্যা : এরপরে সমস্ত চাইল্ড নোডগুলিতে স্ট্রিং bb
রয়েছে এমন 'zz'
যেটির ব্যবহারের bb
প্যারেন্ট নোডে যাচ্ছি , এখন আমরা অ্যাক্সেস করতে পারিbb
..
cc
যাতে ফিরে আসা পাঠ্যটি ।
আমি আশা করি ব্যাখ্যা জটিল নয়।