0

以下のサンプルをご覧ください。

<div class="patent_bibdata">
     <b> First list</b>
     <a href="1"> Name #1</a>
     <a href="2"> Name #2</a>
     <b> Second list</b>
     <a href="1"> Name #2_1</a>
     <a href="2"> Name #2_2</a>
</div>

ここで、「最初のリスト」というテキストを持つ「b」要素の後のリンクを抽出したい-しかし、「2番目のリスト」というテキストを持つ「b」要素の後のリンクとリンクの数は必要ない「最初のリスト」の後は私にはわかりません。

私が考えたのは、このようなものです -

....XQuery code defining the document as variable named "doc"
let $list:= $doc/div[ @class="patent_bibdata"]/b[. = 'First list']/following-sibling::text() -- but this should get everything after 'First list'-- including 'Second List' and 'Name #2_1' and 'Name #2_2'

さて、2 つの 'b' タグのテキスト (つまり、この例では 'Name #1' と 'Name #2') だけが私に知られているので、どうにかして条件を付けてリンクを取得する必要があると思います。 (私が必要とする)、それらのリンクの直前の兄弟と直後の兄弟に条件を付けます---それらの条件を設定するコマンドは何ですか(これまでのところ正しい場合)?私が正しくない場合、そのリンクのセットを取得するにはどうすればよいですか?

4

1 に答える 1

0

これは機能します:

$doc/div[ @class="patent_bibdata"]/b[. = ' First list']/following-sibling::a[not(preceding-sibling::b[. = ' Second list'])]

今日、XQuery についてかなり基本的な質問をされたことを考えると、最初に XQuery についての基本的な理解を得ることをお勧めします。非常に優れた本がいくつかありますが、特にプリシラ・ウォームズリーの本が気に入っています。

于 2012-09-04T20:11:16.683 に答える