
ある文字列を含むノードが存在するかを判定したい
お世話になります。
次のような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
//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)
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