2003年11月30日(日)更新 |
【ノード集合関数】 current
たけち: 今回は、ノード集合関数のひとつ、current関数について学ぼうね。 さらら: はい。 (^ ^* たけち: currentは、カレントノードを取得するのに使うんだ。 さらら: カレントノードって、テンプレート処理の対象になっているノードなのよね。それをわざわざ指定する必要ってあるのかしら。。。 |
|
たけち: うん。でも、select属性の中に書いた「式」でこれが必要になることがあるんだよ。 さらら: へぇ、そうなんだ。 たけち: current関数は、どう書くのかをつぎに載せておくね。
|
さらら: ずい分、あっさりしているわね。 たけち: 引数無しでcurrent関数を呼ぶと、リターン値としてカレントノードが返されるんだね。 さらら: えぇ。。。。 |
|
current関数の使用例
さらら: やっぱり、サンプルで教えて。 たけち: そうだね。じゃあ、簡単なサンプルを見てみよう。 さらら: はい。 (^ ^* たけち: 次の【poem.xml】を見て。これまでと少し違うからね。 |
【poem.xml】 |
---|
<?xml version="1.0" encoding="Shift_JIS" ?> |
さらら: 歌が6首載っているわ。pno属性が歌番号なのね。poet="001"とかは何を示しているのかしら。 たけち: それは、poet要素のid="001"と数字がおなじものが歌人を示しているんだよ。 さらら: あっ、ということは、例えばpoet="001"のあるpno="0037"の歌は、柿本人麻呂(かきのもとのひとまろ)の作だということなのね。 たけち: そう。そうだね。じゃあ、このxmlデータを元にして、
さらら: えぇ。 たけち: 次の【count.xsl】を見て。 |
|
XSLTスタイルシート: current関数の使用例 |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
■current()/@poet
さらら: 歌人の名前を表示するところで、current関数を使っているのね。 たけち: //poetは分かるよね。 さらら: え〜っと。poet要素だわね。。。 たけち:そうだね。で、[と]で囲まれている条件に合うpoet要素を指定しているんだ。その内容を詳しく見てみよう。つぎの図を見て。 |
たけち: どう? @idを見ているときには文脈ノードが、カレントノードpoemからpoetに移動しちゃっているんだね。 さらら: あっ、そうなんだ。。。だから、カレントノードpoemのpoet属性を見ようとすると、current()/@poetとしなくちゃいけないのね。 たけち: そうなんだね。こういう場合には、current()関数が必要なんだね。 さらら: なるほど。それで、カレントノードpoemのpoet属性の値と、文脈ノードpoet要素の@idの値が一致するpoet要素の内容、つまり歌人名のテキストが取れるわけね。 |
|
たけち: そうなんだね。じゃあ、このXSLTスタイルシートを"count.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。 |
さらら: あっ、こんな風に表示されるのね。なるほど〜。 たけち: よかった。じゃあ、今回はこれでおしまい。 さらら: はい。ありがと。 (*^ ^*) →次は、document関数です (^ ^; |