У меня есть много и много paragraph
элементов в XML, и внутри этих абзацев часто бывают дочерние элементы, такие как name
. Я хочу запустить xpath, который вернет значение дочерних элементов и xml:id
родительского абзаца. Идеальным результатом будет какой-то массив, в котором ключ является paragraph
элементом xml:id
, а значением является текстовый узел дочернего элемента name
. Любые идеи, как я мог бы выполнить это с помощью одного xpath?xpath, возвращающий пару значений (с использованием php)
В настоящее время я пытался что-то вроде этого задействовать два xpaths и попытку свести их вместе, но это становилось довольно грязным и не работало.
$result_array = array();
$xmldoc = simplexml_load_file("$fullfilename");
$xmldoc->registerXPathNamespace("tei", "http://www.tei-c.org/ns/1.0");
$names = $xmldoc->xpath("//name");
foreach ($names as $name)
{
$pids = $xmldoc->xpath("//tei:p[tei:name='$name']/@xml:id")
$result_array[$name] = $pids[0]
}
У меня есть ошибка, которая гласит, что [$name]
является незаконным смещением. Я также просто не думаю, что это даст то, что я хочу, потому что я считаю, что он всегда будет возвращать xml:id
для первого абзаца, у которого есть дочерний элемент name
, значение которого соответствует введенному. Но я хочу это абзац xml: id для абзаца, в котором был найден этот экземпляр.
Благодарим за помощь.
почему бы вам не попробовать https://code.google.com/p/phpquery/ ? – deadlock
Пожалуйста, добавьте свой XMl к вопросу, а также – JWiley
Попробуйте изменить '' // tei: p [tei: name = '$ name']/@ xml: id "' to '" // tei: p [tei: name = "+ $ name" + "]/@ xml: id" ' – JWiley