こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ある文字列を含むノードが存在するかを判定したい

お世話になります。

次のようなXMLファイルがあります。
<root>
<data>
<code>1</code>
<value>aiueo</value>
</data>
<data>
<code>2</code>
<value>kakikukeko</value>
</data>
<data>
<code>3</code>
<value>aiueo</value>
</data>
</root>

「aiueo」が一つでも含まれている<value>ノードが存在するならば、という判定をXSLファイルの中で行いたいです。
contains関数を使うのかなと思っているのですが、ルートノードから見て孫のノードを繰り返し探す処理が分からず困っています。
プログラムの前後の処理の都合上、ルートからの絶対パスで辿りたいのですが、方法を教えて下さいますでしょうか。

宜しくお願いします。

投稿日時 - 2011-09-13 18:53:32

QNo.7008704

すぐに回答ほしいです

質問者が選んだベストアンサー

//value = "aiueo"
とか?

投稿日時 - 2011-09-14 01:12:27

補足

質問者です。
wormholeさん、ご回答下さいましてありがとうございます。

次のような判定文を入れてみたのですが、
<xsl:if test="//value ='aiueo'">hogehoge</xsl:if>

下記のようなエラーになってしまいました。
XPST0003: XPath syntax error at char 2 on line 18 in {//value}:
Unexpected token "/" in path expression
Failed to compile stylesheet. 1 error detected.

if文の書き方が悪いでしょうか。
XMLを始めたばかりで、すごく初歩的なことが理解できてないです。
ご教示お願いします。

投稿日時 - 2011-09-14 11:36:53

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ifの部分だけ抜き出されてもわからないですが
Java6のXSLTプロセッサで以下のXSLT動きますよ。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:if test="//value = 'aiueo'">exist "aiueo"</xsl:if>
</xsl:template>
</xsl:stylesheet>

投稿日時 - 2011-09-14 19:54:07