XMLのデータをXSLで取得したい


初めまして。質問させて頂きます。  
XML+XSLTでプログラミング中です。

次のようなXMLがあるとします。

[code]

    <DATA>
        <F1>あ</F1>
        <F2>い</F2>
        <F3>う</F3>
        <F4>え</F4>
        <F5>お</F5>
        <F1>か</F1>
        <F2>き</F2>
        <F3>く</F3>
        <F4>け</F4>
        <F5>こ</F5>
        <F1>さ</F1>
        <F2>し</F2>
        <F3>す</F3>
        <F4>せ</F4>
        <F5>そ</F5>
    </DATA>
    
[/code]

この中で、`F1='か'`の下の`F3`のデータ(この場合は`く`)のみを取得するxpathの書き方が解らず悩んでおります。  
どなたかお分かりになる方が居られましたら、ご教示お願いできますでしょうか？  
宜しくお願いいたします。




もし@user20662さんがWindows + MSXMLのようなXPath
1.0の世界でこの質問をされておられるようでしたら、@pghoさんの回答でもよいと思われます．しかし世の中はすでにXPath
3.0まで進んでいるので、やはり最低でもXPath 2.0ではどうなるか？は知っておいて損はないでしょう．

@sayuriさんの御指摘のように、`//F1[text()='か']/following-sibling::F3/text()`をXPath
2.0で使用すると以下の様に２つのテキストノードが選択されてしまいます．（oXygen
18.1で試しています）従って使用するXpathのバージョンが上がっても確実に動作するようにしておくには、`//F1[text()='か']/following-
sibling::F3[1]/text()`のように書いておくのが確実です．

[![Xpath
2.0での実行結果](https://i.stack.imgur.com/CoEAb.png)](https://i.stack.imgur.com/CoEAb.png)

もしXpath 2.0以上を使用するならば、`string(/DATA/F1[string(.) eq 'か']/following-
sibling::F3[1])`くらいが適当ではないでしょうか？

  * "く"を取得するのはtext()を返すよりxs:stringを返す方が適切と思います．（実際XPath 2.0を使用するXSLTスタイルシートでas="text()"のように使うことはまずないからです．
  * シーケンスを比較する一般比較演算子"="でなく、文字列比較を明示して値比較演算子"eq"を使用します．

結果は次のように"く"が値として返るようになります．

[![Xpath
2.0での記述](https://i.stack.imgur.com/FaQFY.png)](https://i.stack.imgur.com/FaQFY.png)

以上 御参考になれば

