বিভিন্ন নোডের জন্য এক্সপথ ওআর অপারেটর


144

এক্সপথ দিয়ে কীভাবে করব:

//bookstore/book/title or //bookstore/city/zipcode/title

শুধু //titleকাজ করবে না কারণ আমারও আছে//bookstore/magazine/title

PS আমি প্রচুর বা উদাহরণ দেখেছি তবে প্রধানত গুণাবলী বা একক নোড কাঠামো সহ।


5
বা উভয় পক্ষের অন্তর্ভুক্ত। আপনি যা খুঁজছেন তা হ'ল এক্সআর অপারেটর। আপনি লজিকাল অপারেটরগুলির সাথে OR শব্দের ইংরেজি ব্যবহারটি বিভ্রান্ত করছেন।
জোড়ান পাভলভিক

10
এই ক্ষেত্রে এটি কোনো পার্থক্য কিনা আপনি ব্যবহার তোলে বা বা XOR যেমন উভয় পক্ষের মেলে সম্ভব নয়।
ড্যান হাল্মে

উত্তর:


219

অভিভাবক হিসাবে সমস্ত titleনোড zipcodeবা bookনোড:

সংস্করণ 1:

//title[parent::zipcode|parent::book]

সংস্করণ 2:

//bookstore/book/title|//bookstore/city/zipcode/title

5
"|" এক্সপ্যাটে আসলেই কোনও "ওআর অপারেটর" নয় t এটি আপনাকে পুরো এক্সএমএল গাছের স্তরগুলি থেকে তৈরি নোডেট তৈরি করার অনুমতি দেয়। "// বই | // সিডি" অর্থ সমস্ত শিশু নোডের মধ্যে এবং মূল নোডের বংশধররা 'বই' নামের সমস্তগুলি খুঁজে পান তারপরে 'সিডি' নামে থাকা সমস্ত সন্ধান করুন। রুট নোডের বংশধরতে যদি কেবল বইয়ের নোড থাকে তবে আপনার নোড-সেটটিতে কেবলমাত্র বইয়ের নোড থাকবে। রুট নোডের বংশধরতে যদি কেবল সিডি নোড থাকে তবে আপনার নোড-সেটটিতে কেবল সিডি নোড থাকবে। রুট নোডের বংশধরতে যদি বই এবং সিডি নোড উভয়ই থাকে তবে আপনার নোড-সেটটিতে বই এবং সিডি নোড উভয়ই থাকবে।
স্টিফান

1
হ্যাঁ, আমি বুঝতে পেরেছিলাম কি "|" অপারেটর হয়। আমার প্রাথমিক প্রশ্নটি ওআর অপারেটর সম্পর্কে। সুতরাং, যদি বই ও সিডি থাকে তবে এটি কেবলমাত্র বইগুলি খুঁজে পাবে, যদি কোনও বই না থাকে তবে কেবল সিডি থাকে তবে এটি সিডি খুঁজে পাবে।
ব্যবহারকারী569008


1
সুতরাং, নোডের জন্য এক্সপ্যাটে আমার প্রশ্নের / কোনও বা কোনও অপারেটরের কোনও উত্তর নেই?
ব্যবহারকারী569008

3
লজিকাল অপারেটরগুলি (ওআর, এক্সওআর, এবং) প্রতিটি প্রোগ্রামিং ভাষার ক্ষেত্রে একই তবে প্রাকৃতিক ভাষা তাদের কিছুটা আলাদা ব্যাখ্যা করে। তাদের সম্পর্কিত সমস্যাগুলি নিয়ে আলোচনা করার সময় অস্পষ্টতা দূর করা ভাল best তদ্ব্যতীত, জন্য XPath সঙ্গে এটি হিসাবে আপনার ফলাফলের মনে শ্রেষ্ঠ নয় হচ্ছে A অথবা B , বরং এটি দ্বারা অবস্থিত যেতে পারে A অথবা B । যৌক্তিক orঅর্থ এটি দ্বারা অবস্থিত হতে পারে a or b or bothলজিকাল xor(ইক্সক্লুসিভ ওআর) অর্থ এটি দ্বারা অবস্থিত হতে পারে either a or b, but not both। যৌক্তিক andঅর্থ এটি দ্বারা অবস্থিত হতে পারে both a and b
NeXus

52

আপনি যদি ইউনিয়ন অপারেটরের সাথে দুটি নোডের মধ্যে একটি মাত্র নির্বাচন করতে চান তবে আপনি এই সমাধানটি ব্যবহার করতে পারেন: (//bookstore/book/title | //bookstore/city/zipcode/title)[1]


সত্যিই কি (এবং )[1]এর মধ্যে দু'জনের মধ্যে কেবল একটি বেছে নেওয়ার?!?!?!
ওল্ডবয়

@ অ্যান্টনি হ্যাঁ, যদি দুটি নোড বিদ্যমান থাকে তবে এটি দুটির মধ্যে একটি নির্বাচন করবে বা এটি বিদ্যমান কেবলমাত্র এটিই নির্বাচন করবে।
আজুরকিন

ঠিক আছে, আমি আপনার বক্তব্য ভুল ব্যাখ্যা। এটি অন্য যে কোনও "বা" অপারেটরের মতোই কাজ করে, যাতে যদি প্রথম শর্তটি সত্য হয়, তবে দ্বিতীয়টি বাইপাস করা হয়, হ্যাঁ?
oldboy

@ অ্যান্টনি ন। এখানে কোনও শর্ত নেই। নোড আছে এবং "|" - একটি নোড ইউনিয়ন অপারেটর। এটি নির্দিষ্ট পাথ থেকে নোডেট তৈরি করে এবং নোডের ক্রমর গ্যারান্টি দেয় না। যদি নির্দিষ্ট পাথ সহ নোড উপস্থিত না থাকে তবে এটি কেবল একটি নোডেটে অনুপস্থিত। তারপরে, "[1]" নোডেট থেকে প্রথম নোড পান নির্মাণ করুন।
আজুরকিন

আমার বক্তব্যটি এটি orকোনও |অপারেটর বা অন্য ভাষায় একইরূপে কাজ করে, যাতে উভয় নোড উপস্থিত থাকে তবে এটি সর্বদা প্রথম নোডটি ফিরে আসবে?
ওল্ডবয়

3

এটিতে এলিমেন্টের দুটি এক্সপ্যাথ রয়েছে। তারপরে আপনি নীচের মতো দুটি এক্সপথ লিখতে পারেন:

xpath1 | xpath2

উদাহরণ:

//input[@name="username"] | //input[@id="wm_login-username"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.