XML には非常に多くparagraph
の要素があり、それらの段落内にはname
. xml:id
子要素の値と親段落の値を返す xpath を実行したいと考えています。paragraph
理想的な結果は、キーが要素xml:id
であり、値が子要素のテキストノードであるある種の配列name
です。単一のxpathでこれを達成する方法はありますか?
現在、私は 2 つの xpath と 2 つを一緒にしようとする試みを含むようなことを試みていましたが、これはかなり面倒になり、機能しませんでした。
$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 値です。
ご協力いただきありがとうございます。