查找具有特定属性值的所有子节点的xpath查询是什么,但是从具有特定属性值的节点开始?
这与我之前发布的关于解析rdf xml文件的问题有关 - 我以为我已经解决了它但还没有解决。
例如,我正在尝试解析并获取所有rdf:about
属性值。我有这个工作正常。我需要添加以下条件 - 解析需要在找到特定的rdf:about
值后启动。
我正在使用PHP并使用DomDocument
并使用以下xpath查询:
$xpath->query('//@rdf:about');
它发现所有rdf:about
属性都很好。
我需要将其扩展为仅查找rdf:about
属性等于某事物的节点之后的那些属性。
希望这是有道理的。
答案 0 :(得分:2)
$xpath->query("//*[@rdf:about='http://rdfs.org/sioc/ns#']/following-sibling::*/@rdf:about");
使用示例脚本,输出以:
开头/结尾的URLhttp://rdfs.org/sioc/ns#Community
http://rdfs.org/sioc/ns#Container
...
http://rdfs.org/sioc/ns#reference
http://rdfs.org/sioc/ns#subject
答案 1 :(得分: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本体中的元素列表。问题是前9个实际上并不是本体的一部分,因此我想忽略它们并从第10个节点开始,该节点以“http://rdfs.org/sioc/ns#”作为rdf:about属性的值。
通过包含你的xpath查询,我什么也得不回来。