1

DOM で特定の要素を抽出するのに問題があります。たとえば、私はこのコードを使用します:

   xpath(DOM, //table(1), TABLE)

私は最初のテーブルにアクセスできます。しかし、2 番目のテーブルにアクセスしようとすると、次のコードを使用します。

   xpath(DOM, //table(2), TABLE)

しかし、それは失敗し、2 番目のテーブルがありません。

xpath/3 を使用して DOM 内の特定のノードを選択することは可能ですか?

4

2 に答える 2

2

同じ変数を再利用していると思いますが、それは機能しません:

:- [library(xpath)].

table(N, T) :-
    DOM = element(xx, [],
          [  element(table, [], [a,b,c]),
             element(table, [], [x,y,z])
          ]),
    xpath(DOM, //table(N), T).

予想通り、そのフラグメントで

?- table(2,T).
T = element(table, [], [x, y, z])

しかし

?- table(1,T), table(2,T).
false.
于 2013-06-28T13:31:54.483 に答える
0

xpath の選択 (または述語) は、[] ブラケットに埋め込まれます。例えば

//table[1]
//table[2]
//table[last()-1]
//table[@someattribute='somevalue']


編集:プロローグタグを見逃したようです。プロローグでは、xpath述語は角括弧ではなく括弧で指定されているようです: http://www.swi-prolog.org/pldoc/man?predicate=xpath%2F3。しかし、そのドキュメントによると、コード サンプルは意図したとおりに動作するはずです。

于 2013-06-28T12:57:25.690 に答える