"ফু" থাকা বৈশিষ্ট্যগুলি বেছে নেওয়ার জন্য সঠিক এক্সপাথ কী?


176

এই এক্সএমএল প্রদত্ত, এক্সপথ সমস্ত উপাদানকে কী ফিরিয়ে দেয় যার propবৈশিষ্ট্যযুক্ত Foo(প্রথম তিনটি নোড):

<bla>
 <a prop="Foo1"/>
 <a prop="Foo2"/>
 <a prop="3Foo"/>
 <a prop="Bar"/>
</bla>

1
সবাই কেন "প্রোপ" গুণটি দেখছে? আমি কি কিছু রেখে গেলাম? এটি কেবল প্রথম তিনটি নোড পেতে বলেছে।

6
সবাই প্রোপ অ্যাট্রিবিউটটির দিকে তাকাচ্ছে কারণ এটিই বলা হয়েছিল। প্রোপগুলিতে "ফু" থাকা সমস্ত নোড পান। <a prop="Foo5 "/> যোগ করুন এবং আপনি দেখতে পাবেন কেন এটি কেবল" প্রথম তিনটি নোড "নয় ..
এরল্যান্ডো

শিরোনাম নির্বিশেষে শরীরে প্রশ্নটি খারাপভাবে কথিত। Foo আসলেই কোনও প্রপ বৈশিষ্ট্যে থাকতে পারে, বা আপনি কি গুরুতরভাবে কেবল প্রথম তিনটি নোড চান?

3
হ্যাঁ, দয়া করে শিরোনামটি দেখুন (এবং সম্পাদনা করে নির্দ্বিধায়)।
রিপার 234

আপনার যদি কেস-সংবেদনশীল তুলনা প্রয়োজন হয় তা দেখুন -এমন একটি উপাদান-যার-বৈশিষ্ট্য
-তে

উত্তর:


307
//a[contains(@prop,'Foo')]

ফলাফলগুলি ফিরে পেতে যদি আমি এই এক্সএমএলটি ব্যবহার করি তবে কাজ করে।

<bla>
 <a prop="Foo1">a</a>
 <a prop="Foo2">b</a>
 <a prop="3Foo">c</a>
 <a prop="Bar">a</a>
</bla>

সম্পাদনা: অন্য একটি বিষয় লক্ষণীয় হ'ল উপরের এক্সপথ সেই নির্দিষ্ট এক্সএমএলটির সঠিক উত্তরটি ফিরিয়ে দেবে, আপনি যদি গ্যারান্টি দিতে চান তবে কেবল "এল" উপাদানটিতে "এল" উপাদান পাবেন, অন্যরাও যেমন উল্লেখ করেছেন তেমন ব্যবহার করা উচিত

/bla/a[contains(@prop,'Foo')]

এটি "ব্লা" উপাদানটিতে বাসা বাঁধার জন্য নির্বিশেষে আপনার পুরো xML ডকুমেন্টের সমস্ত "a" উপাদান অনুসন্ধান করবে

//a[contains(@prop,'Foo')]  

আমি এটি পুঙ্খানুপুঙ্খতার জন্য এবং স্ট্যাকওভারফ্লোয়ের চেতনায় যুক্ত করেছি। :)


3
xmlme.comএখন অন্য কিছু হোস্টে পুনঃনির্দেশ করে এবং সরঞ্জাম বা এর মতো কিছু হোস্ট করে না।
jpmc26

26

এই এক্সপথটি আপনাকে নোডের নাম বা বিশিষ্ট নাম নির্বিশেষে 'ফু' যুক্ত বৈশিষ্ট্যযুক্ত এমন সমস্ত নোড দেবে:

//attribute::*[contains(., 'Foo')]/..

অবশ্যই আপনি যদি গুনের বিষয়বস্তুগুলিতে নিজেরাই আগ্রহী হন এবং তাদের পিতামাতার নোডের প্রয়োজন না হয় তবে কেবল / .. বাদ দিন ..

//attribute::*[contains(., 'Foo')]

2
সমস্ত নোডের জন্য//@*[contains(., 'Foo')]
আলিওপি

16
descendant-or-self::*[contains(@prop,'Foo')]

বা:

/bla/a[contains(@prop,'Foo')]

বা:

/bla/a[position() <= 3]

ব্যবচ্ছেদ:

descendant-or-self::

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

* or /bla/a

ট্যাগ - একটি ওয়াইল্ডকার্ড ম্যাচ, এবং / ব্লে / এ একটি পরম পথ।

[contains(@prop,'Foo')] or [position() <= 3]

শর্ত [] এর মধ্যে। @prop অ্যাট্রিবিউট :: প্রোপ এর শর্টহ্যান্ড, কারণ অ্যাট্রিবিউট অন্য অনুসন্ধান অক্ষ search বিকল্পভাবে আপনি পজিশন () ফাংশনটি ব্যবহার করে প্রথম 3 টি নির্বাচন করতে পারেন।


6

জন সি সবচেয়ে কাছের, তবে এক্সপথ কেস সংবেদনশীল, তাই সঠিক এক্সপথটি হ'ল:

/bla/a[contains(@prop, 'Foo')]

4

আপনি কি এরকম কিছু চেষ্টা করেছেন:

// এ [রয়েছে (@ পপ, "ফু")]

আমি এর আগে এই ফাংশনটি আগে কখনও ব্যবহার করি নি তবে সন্দেহ হয় যে এটি বিজ্ঞাপন হিসাবে কাজ করা উচিত ...


@ টডডকে ... আপনি একটি অ-অযৌক্তিক বৈশিষ্ট্যটিকে লক্ষ্য করেছেন: @ ফু। আপনি @prop ;
মেট্রো স্মুরফ

4

আপনি যদি নিজেই লিঙ্কটির বিষয়বস্তু মেলে প্রয়োজন হয়, পাঠ্য () ব্যবহার করুন:

//a[contains(@href,"/some_link")][text()="Click here"]




1

এটা চেষ্টা কর:

// একটি [ধারণ করে (@ ঠেকনা, 'foo বিন্যাস')]

এটি নথিতে যে কোনও "a" ট্যাগের জন্য কাজ করা উচিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.