電子書籍の厳選無料作品が豊富!

お世話になります。

次のような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関数を使うのかなと思っているのですが、ルートノードから見て孫のノードを繰り返し探す処理が分からず困っています。
プログラムの前後の処理の都合上、ルートからの絶対パスで辿りたいのですが、方法を教えて下さいますでしょうか。

宜しくお願いします。

A 回答 (2件)

//value = "aiueo"


とか?

この回答への補足

質問者です。
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
    • good
    • 0

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>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!