0

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 値です。

ご協力いただきありがとうございます。

4

1 に答える 1