अगर आप एक नोड (टैग) मौजूद है तो xpath क्वेरी का उपयोग कैसे करें?
उदाहरण के लिए यदि मुझे यह सुनिश्चित करने की आवश्यकता है कि वेबसाइट पेज में सही मूल संरचना जैसे / html / बॉडी और / html / हेड / शीर्षक है
अगर आप एक नोड (टैग) मौजूद है तो xpath क्वेरी का उपयोग कैसे करें?
उदाहरण के लिए यदि मुझे यह सुनिश्चित करने की आवश्यकता है कि वेबसाइट पेज में सही मूल संरचना जैसे / html / बॉडी और / html / हेड / शीर्षक है
जवाबों:
<xsl:if test="xpath-expression">...</xsl:if>
उदाहरण के लिए
<xsl:if test="/html/body">body node exists</xsl:if>
<xsl:if test="not(/html/body)">body node missing</xsl:if>
html/body and not(html/body/node())
(यानी, बस परीक्षण करें यदि यह मौजूद है और इसमें कोई बच्चा नोड्स या टेक्स्ट नोड्स नहीं है)।
निम्नलिखित अभिव्यक्ति का प्रयास करें: boolean(path-to-node)
पैट्रिक सही है, दोनों के उपयोग में xsl:if
, और एक नोड के अस्तित्व के लिए जाँच के लिए वाक्यविन्यास में। हालाँकि, पैट्रिक की प्रतिक्रिया का तात्पर्य है, अगर-तब-तब के बराबर कोई xsl नहीं है, इसलिए यदि आप एक if-if जैसी चीज़ की तलाश कर रहे हैं, तो, आप सामान्य रूप से बेहतर उपयोग कर रहे हैं xsl:choose
और xsl:otherwise
। तो, पैट्रिक का उदाहरण वाक्य रचना काम करेगा, लेकिन यह एक विकल्प है:
<xsl:choose>
<xsl:when test="/html/body">body node exists</xsl:when>
<xsl:otherwise>body node missing</xsl:otherwise>
</xsl:choose>
if-then-else
, इसके बारे में भी क्या if-else if-else
? Davenpcj के उत्तर में मैं test="somexpath"
इसे बनाने के लिए 2 वें में रख सकता हूं if-else if-else
?
एक विकल्प का उपयोग करने के लिए बेहतर हो सकता है, आपके अभिव्यक्तियों को एक से अधिक बार टाइप (या संभवतः गलत तरीके से) नहीं करना है, और आपको अतिरिक्त विभिन्न व्यवहारों का पालन करने की अनुमति देता है।
मैं बहुत बार उपयोग करता हूं count(/html/body) = 0
, क्योंकि नोड की विशिष्ट संख्या सेट की तुलना में अधिक दिलचस्प है। उदाहरण के लिए ... जब अप्रत्याशित रूप से 1 से अधिक नोड होता है जो आपकी अभिव्यक्ति से मेल खाता है।
<xsl:choose>
<xsl:when test="/html/body">
<!-- Found the node(s) -->
</xsl:when>
<!-- more xsl:when here, if needed -->
<xsl:otherwise>
<!-- No node exists -->
</xsl:otherwise>
</xsl:choose>
count(/html/body) = 0
प्रतिभा! : DI जब (या जो कुछ भी याद आ रहा है) के /html[count(/body)=0]/someNode
चयन के लिए इसका इस्तेमाल करेंsomeNode
/body
/html[count(/body)=0]
कभी भी कुछ भी नहीं चुनेगा, XML में दो रूट नोड नहीं हो सकते। शायद आपका मतलब था /html[count(body)=0]
, जो जैसा होगा /html[not(body)]
, या होगा /html[not(exists(body))]
।
मैं रूबी में काम करता हूं और नोकोगिरी का उपयोग करके मैं तत्व प्राप्त करता हूं और यह देखने के लिए देखता हूं कि क्या परिणाम शून्य है।
require 'nokogiri'
url = "http://somthing.com/resource"
resp = Nokogiri::XML(open(url))
first_name = resp.xpath("/movies/actors/actor[1]/first-name")
puts "first-name not found" if first_name.nil?
गणना का उपयोग करके जावा में xpath का उपयोग करते समय एक भिन्नता ():
int numberofbodies = Integer.parseInt((String) xPath.evaluate("count(/html/body)", doc));
if( numberofbodies==0) {
// body node missing
}