XPATH - Belirli bir niteliği olmayan tüm alt düğümlerini seç

2 Cevap php

Ne belirli nitelik değerine sahip tüm alt düğümlerini bulmak için XPath sorgusu olabilir, ancak belirli bir özellik değeri bir düğümden başlayarak istiyorsunuz?

Ben bunu münhal ama oldukça henüz sanıyordum - Bu tür ben bir RDF xml dosyasını ayrıştırma hakkında daha önce yayınlanan bir soruya ilişkilidir.

Örneğin, ben rdf:about tüm değerlerini nitelik ayrıştırmak ve kapmak için çalışıyorum. Bu çalışma para cezası var. Gerçi aşağıdaki koşulu eklemeniz gerekir - ayrıştırma spesifik bir sonra başlamak gerekiyor rdf:about değer bulundu.

Ben PHP çalışan ve ve DomDocument kullanarak ve aşağıdaki XPath sorgusu kullanıyorum am:

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

Tüm rdf:about ince niteliklerini bulgudur.

Ben yalnızca, rdf:about nitelik şey eşittir düğümden sonra gelen bu özelliklerini bulmak için bu genişletmek gerekiyor.

Umarım bu mantıklı.

2 Cevap

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

Sizin örnek komut ile, ile başlangıç ​​/ bitiş URL'leri çıkışlar:

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

Havai Chris üzgünüm ama bu oldukça benim için çalışmıyor. Benim aşağıdaki kodu çalıştırın:

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

Sen SIOC ontolojisi öğelerin bir listesini almalısınız. Sorun ilk 9 aslında ontolojisi parçası değildir ve bu yüzden onları görmezden ve RDF için değeri olarak 'http://rdfs.org/sioc/ns #' olan 10. düğümde başlamak istiyorum ki: hakkında bağlıyor.

XPath sorgusu dahil ederek ben hiç geri şey olsun.