у меня есть xml
<div> First Element
<div>
<level3 name="fred">
</level3>
</div>
</div>
<div> Second Element
<div>
<level3 name="dave">
</level3>
</div>
</div>
<div> Third Element
<div>
<level3 name="jim">
</level3>
</div>
</div>
<div> Fifth Element
<div>
<level3 name="mike">
</level3>
</div>
</div>
Я хочу извлечь xml (в виде строки, включая теги xml) из определенного элемента div верхнего уровня на основе имени его внуков на уровне 3.
Итак, чтобы получить верхний div над узлом level3 с именем jim, я смотрю на такие вещи, как:
$sname="jim";
$spath = new DOMXPath($doc);
// Find a div with a child div with a level3 with a matching attribute name.
$spexp = "//div[./div/level3[contains(@name,\"$sname\")]]";
$story = $spath->evaluate("$spexp");
echo $story->item(0)->nodeValue . "\n";
Я пробовал различные комбинации, включая «существует» в предикате, который, я уверен, является базовым xslt, но не в PHP (!).
У меня есть гугл-нагрузки ... но предикаты, выходящие за пределы непосредственного уровня, не поднялись, и кажется, что PHP-xpath имеет свой собственный вкус, поэтому общие вещи в XPath не всегда полезны.