- - PR -
XindiceのXPathについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-10 14:49
はじめまして。既出の質問だったらすいません。
今、Xindiceを使ってJAVAのプログラムを作成しているのですが、 XPathで検索して、結果として、テキストだけを得たいときはXPATHをどのように 書けばよいのでしょうか? 例えば、 <A> <B>abc</B> </A> というXMLがXindiceに登録されているとすると abcというテキストだけ取り出したいのです。 XPATH = "/A/B"とすると、<B>abc</B>だけが返ってきて、テキストだけ 取り出すことはできません。どのようなXPathを書けばよいのでしょうか? 初歩的な質問ですいません。 誰か教えていただけないでしょうか。 | ||||||||
|
投稿日時: 2003-12-10 14:58
あるノードの子ノードとして存在するテキスト要素を取り出す場合はtext()関数(?)を使います。
でどうでしょうか? | ||||||||
|
投稿日時: 2003-12-10 15:04
返事どうもありがとうございます。
私もその方法でできると思ったんですけど、コマンドプロンプトから検索をしてみても、 JAVAのプログラム内で行ってもできませんでした。 他に書き方はないんですかね? | ||||||||
|
投稿日時: 2003-12-10 15:35
そのJavaプログラムというのは見せて頂けませんか? XPathとしてはこの書き方
が正しい筈なんですが。 | ||||||||
|
投稿日時: 2003-12-11 12:36
返事が遅れました。すいません。
JAVAのプログラムは、ここのホームページのXindiceが紹介されている記事と 全く同じものです。(扱うXML文書は違いますが) その記事というのは、このスレッドの参照記事となっている記事です。 記事に書かれてある通りにプログラムを作成して、XPATH="/"で実行したときは、 うまく動いたのですが、XPATH="/A/B/text()"は結果として、何も返してきませんでした。 コマンドプロンプトで同様に、 xindiceadmin xpath -c /db -q /A/B/text() を実行しても、結果として何も返してきませんでした。 他になにか解決方法がありましたら、教えていただけないでしょうか? | ||||||||
|
投稿日時: 2003-12-14 23:41
すみません。レスが遅れました。
こちらですが、まず「XPATH="/"で実行したときは、うまく動いた」時の結果を こちらに示して頂けませんか?XPathの問題でない可能性もありますので。 | ||||||||
|
投稿日時: 2003-12-16 12:36
今、私が作成しているプログラムは、サーブレットプログラムなんですが、
XPATH="/"で検索したときの結果は、 <?xml version="1.0"?> <A xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/tmp" src:key="tmp"> <B> abc </B> </A> これがブラウザに表示されます。 XPATH="/A/B/text()"で検索した場合、nullがブラウザに表示されます。 もしかしたら、XPATHの検索結果を取り出して、表示する部分がおかしいかもしれません。 検索して結果を取り出して表示する部分は、下のようなプログラムになってます。 (記事のそのままです。) // XPathで検索 ResourceSet resourceSet = service.query(xpath); // ResourceSetから検索結果を取り出す ResourceIterator resources = resourceSet.getIterator(); while (resources.hasMoreResources()) { Resource resource = resources.nextResource(); if (resource.getResourceType().equals("XMLResource")) { // 内容を文字列として表示 request.setAttribute("DOC",(String)resource.getContent()); } } 私の勉強不足で、このプログラムの意味がよく分からないまま使っています。 自分でも勉強して理解するようにしますが、もしおかしい部分があれば、 指摘していただきたいです。 | ||||||||
|
投稿日時: 2003-12-16 16:34
今ちょっとXindiceのページを見たのですが、
どうもXML:DB APIというのを実装している様ですね。 ただ、これが提供しているXML:DB APIはWorking Draftのようです。 もしかして、標準化自体が途上であるためAPIの策定も出来てなくて、 XindiceのXML:DB API実装の方もまだまだだとか、そういうことはありませんかね。 XPathの検索で返される結果ツリーフラグメントがテキスト要素1個だとダメだとか。 どうもXPathの問題では無い気がするのですが。。。 [ メッセージ編集済み 編集者: おばけ 編集日時 2003-12-16 16:36 ] |