2010-03-21 23 views
5

एक विशिष्ट विशेषता मान के साथ सभी बच्चे नोड्स को खोजने के लिए xpath क्वेरी क्या होगी, लेकिन एक विशिष्ट विशेषता मान के साथ नोड से शुरू करना होगा?XPATH - किसी विशिष्ट विशेषता के साथ सभी बच्चे नोड्स का चयन करें

यह एक प्रश्न से संबंधित है जो मैंने पहले एक rdf xml फ़ाइल को पार्स करने के बारे में पोस्ट किया था - मैंने सोचा था कि मैंने इसे हल किया है लेकिन अभी तक काफी नहीं है।

उदाहरण के लिए, मैं rdf:about विशेषता मानों को पार्स करने और पकड़ने की कोशिश कर रहा हूं। मेरे पास यह ठीक काम है। मुझे निम्नलिखित शर्त जोड़ने की आवश्यकता है - एक विशिष्ट rdf:about मान मिलने के बाद पार्सिंग को प्रारंभ करने की आवश्यकता है।

मैं PHP में काम कर रहा हूँ और और DomDocument का उपयोग करने और निम्नलिखित xpath क्वेरी का उपयोग कर रहा हूँ:

$xpath->query('//@rdf:about'); 

यह हो रही है सब rdf:about ठीक जिम्मेदार बताते हैं।

मुझे इसे केवल उन गुणों को खोजने के लिए विस्तारित करने की आवश्यकता है जो नोड के बाद आते हैं जिनके rdf:about विशेषता कुछ के बराबर है।

आशा है कि यह समझ में आता है।

+0

मैंने आपके पिछले प्रश्न को देखा और देखा कि आप एआरसी का उपयोग कर रहे हैं लेकिन इसके पार्सर नहीं हैं, मैं गंभीर रूप से पार्सर का उपयोग करने का सुझाव दूंगा क्योंकि आरडीएफ/एक्सएमएल में बहुत सी वाक्य रचनात्मक चीनी है और XPath जो एक फाइल के लिए काम करता है, के लिए काम करने की गारंटी नहीं है एक और। यदि आप पार्स किए गए संरचनाओं से डेटा निकालने के तरीके को समझने के लिए संघर्ष कर रहे हैं तो शायद ग्रेफाइट लाइब्रेरी (http://graphite.ecs.soton.ac.uk/) का उपयोग करने का प्रयास करें जो एआरसी 2 – RobV

उत्तर

2
$xpath->query("//*[@rdf:about='http://rdfs.org/sioc/ns#']/following-sibling::*/@rdf:about");
अपने नमूना स्क्रिप्ट के साथ

, आउटपुट यूआरएल शुरू करने/के साथ समाप्त:

http://rdfs.org/sioc/ns#Community 
http://rdfs.org/sioc/ns#Container 
... 
http://rdfs.org/sioc/ns#reference 
http://rdfs.org/sioc/ns#subject
+0

पर उच्च स्तर की अमूर्त परत है - धन्यवाद । तो यह वोल्लेक सलाह से सिर्फ क्षुद्रग्रह था जो गायब था? धन्यवाद दोबारा - आप दोनों (क्रिस और वोलेर्क) – David

+0

युप, मैंने इसे rdf तक सीमित कर दिया: विवरण तत्व लेकिन आपके बाद के मूल्य उल्लू की विशेषता है: Ontology – VolkerK

1

HI क्रिस खेद है, लेकिन है कि नहीं है काफी मेरे लिए काम कर। यदि आप मेरा निम्नलिखित कोड चलाते हैं:

$dom = new DomDocument; 
$dom->load('http://rdfs.org/sioc/ns#'); 
$xpath = new DOMXPath($dom); 

$elements = array(); 
foreach($xpath->query('//@rdf:about') as $element) { 

    array_push($elements, $element->value); 
} 

foreach($elements as $element) { 

    echo("<br />" . $element); 
} 

आपको sioc ontology में तत्वों की एक सूची प्राप्त करनी चाहिए। समस्या यह है कि पहला 9 वास्तव में ऑटोलॉजी का हिस्सा नहीं है और इसलिए मैं उन्हें अनदेखा करना चाहता हूं और 10 वीं नोड पर शुरू करना चाहता हूं जिसमें 'http://rdfs.org/sioc/ns#' rdf के लिए इसके मान के रूप में है: विशेषता के बारे में।

अपनी xpath क्वेरी को शामिल करके मुझे कुछ भी वापस नहीं मिला।

+0

दाएं। मैंने गलत समझा कि आप क्या पूछ रहे थे। मैंने अपना जवाब संपादित कर लिया है और ऐसा लगता है कि यह आपके कोड के साथ काम करता है। – Chris

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