2008-12-12 12 views
26

मैं नोड्स का चयन करना चाहता हूं जिसके लिए एक विशिष्ट विशेषता मौजूद नहीं है। मैंने नहीं() फ़ंक्शन का प्रयास किया है, लेकिन यह काम नहीं करता है। क्या इसके लिए कोई रास्ता है?एक्सपैक्ट क्वेरी मौजूद नहीं होने पर नोड का चयन करने के लिए एक्सपैथ क्वेरी?

उदाहरण: निम्नलिखित XPath क्वेरी:

group/msg[not(@owner)] 

प्रथम नोड नहीं लेकिन 2 एक पुनः प्राप्त करना चाहिए। हालांकि, स्केचपैथ (एक्सपैथ प्रश्नों का परीक्षण करने के लिए टूल) और मेरे सी # कोड दोनों मानते हैं कि 2 नोड ठीक हैं।

<group> 
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT" numericId="14026" translate="False" topicId="302" status="translated" > 
     <text>Context</text> 
     <comment></comment> 
    </msg> 
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT_HELP" numericId="14027" translate="False" topicId="302" status="translated" owner="EVENTDATA_CCFLOADED_XMLCONTEXT" > 
     <text>Provides the new data displayed in the Object.</text> 
     <comment></comment> 
    </msg> 
</group> 

तथ्य नहीं() फ़ंक्शन ठीक से काम करता है, यह सिर्फ है कि मैं अन्य शर्तों था और कोष्ठकों को ठीक से सेट नहीं किया गया है। errare manum est है।

+1

यदि ऐसा है, तो कृपया प्रश्न बंद करें - यह भ्रामक है और अन्य लोगों के लिए समय लेने वाला है। –

+0

यदि आपको कोई फर्क नहीं पड़ता है, तो मैंने सवाल को "अब प्रासंगिक नहीं" बताया है। – PhiLho

+3

'समूह/msgstr [नहीं (@owner) या @ otherAttribute = "true"]' आपके लिए काम नहीं करता है? –

उत्तर

17

कुछ पुराने और बहुत मानक XPath इंजन में मुझे उसी कारण से string-length(@attr)=0 का उपयोग करना पड़ा।

1

XPath Explorer (Jaxen लाइब्रेरी के आधार पर) के साथ परीक्षण करते समय मेरे लिए काम करता है।
तो मुझे लगता है कि यह वास्तव में XPath कार्यान्वयन के आधार पर है।

+1

हां, मैंने XPath पर कम से कम एक चाल सीखी है ... :-) – PhiLho

संबंधित मुद्दे