2010-03-21 34 views
5

Truy vấn xpath sẽ tìm tất cả các nút con có giá trị thuộc tính cụ thể là gì, nhưng bắt đầu từ nút có giá trị thuộc tính cụ thể?XPATH - Chọn tất cả các nút con có thuộc tính cụ thể

Đây là loại liên quan đến câu hỏi tôi đã đăng trước đó về phân tích cú pháp tệp rdf xml - Tôi nghĩ rằng tôi đã giải quyết được nhưng chưa hoàn toàn.

Ví dụ: Tôi đang cố gắng phân tích cú pháp và lấy tất cả các giá trị thuộc tính rdf:about. Tôi có tiền phạt này. Tuy nhiên, tôi cần phải thêm điều kiện sau đây - việc phân tích cú pháp cần phải bắt đầu sau khi tìm thấy giá trị rdf:about cụ thể.

Tôi đang làm việc trong PHP và và sử dụng DomDocument và đang sử dụng các truy vấn xpath sau:

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

Nó được tìm kiếm tất cả các thuộc tính rdf:about tốt.

Tôi cần mở rộng quy trình này để chỉ tìm những thuộc tính đi sau nút có thuộc tính rdf:about tương đương với một cái gì đó.

Hy vọng điều này có ý nghĩa.

+0

Tôi đã thấy câu hỏi trước đó của bạn và nhận thấy bạn đang sử dụng ARC chứ không phải trình phân tích cú pháp của nó, tôi nghiêm túc đề nghị sử dụng trình phân tích cú pháp là RDF/XML có rất nhiều cú pháp và XPath hoạt động cho một tệp không đảm bảo hoạt động cho khác. Nếu bạn đang gặp khó khăn để hiểu cách trích xuất dữ liệu từ các cấu trúc được phân tích cú pháp có thể thử sử dụng thư viện Graphite (http://graphite.ecs.soton.ac.uk/), đây là lớp trừu tượng mức cao trên ARC2 – RobV

Trả lời

2
$xpath->query("//*[@rdf:about='http://rdfs.org/sioc/ns#']/following-sibling::*/@rdf:about");

Với kịch bản mẫu của bạn, kết quả đầu ra URL bắt đầu/kết thúc với:

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

Thats hoàn hảo - cảm ơn . Vì vậy, nó chỉ là tiểu hành tinh từ lời khuyên của Vollerk đã mất tích? Cảm ơn một lần nữa - cho cả hai bạn (Chris & Vollerk) – David

+0

Yupp, tôi giới hạn nó thành rdf: Mô tả các phần tử nhưng giá trị bạn đang theo sau là một thuộc tính của owl: Ontology – VolkerK

1

HI Chris xin lỗi nhưng điều đó isnt khá làm việc cho tôi. Nếu bạn chạy đoạn mã sau của tôi:

$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); 
} 

Bạn sẽ nhận được một danh sách các yếu tố trong ontology SIOC. Vấn đề là 9 đầu tiên không thực sự là một phần của bản thể luận và vì vậy tôi muốn bỏ qua chúng và bắt đầu vào nút thứ 10 có 'http://rdfs.org/sioc/ns#' làm giá trị của nó cho thuộc tính rdf: about.

Bằng cách bao gồm truy vấn xpath của bạn, tôi không nhận được gì cả.

+0

Phải. Tôi hiểu lầm những gì bạn đang yêu cầu. Tôi đã chỉnh sửa câu trả lời của tôi và dường như nó hoạt động với mã của bạn. – Chris

Các vấn đề liên quan