2003年12月07日(日)更新 |
【ノード集合関数】 generate-id
たけち: 今回は、ノード集合関数のひとつ、generate-id関数について学ぼうね。 さらら: はい。 (^ ^* たけち: generate-idは、idを生成するのに使うんだ。 さらら: idを生成? |
たけち: うん。実際には、idとして使える文字列を生成するんだけどね。 さらら: ふぅ〜ん。その文字列を利用してid属性なんかを作れるのね。 たけち: そうだね。まず、generate-id関数は、どう書くのかをつぎに載せておくね。
|
さらら: 「ノード集合」をどうするの? たけち: 引数として指定された「ノード集合」の中から順番にidとして使えるように、ノードを一意に識別できる文字列がリターン値として返るんだ。引数無しでgenerate-id関数を呼ぶと、コンテキストノードが使われるんだよ。 さらら: そうなんだ。。。やっぱり、サンプルで教えて。 |
generate-id関数の使用例
たけち: そうだね。ここでは、ページ内に表示する歌の解説のトップへのリンクを生成するのに使ってみようね。 さらら: はい。 (^ ^* たけち: 次の【manyosyu.xml】を見て。 |
【manyosyu.xml】 |
---|
<?xml version="1.0" encoding="Shift_JIS" ?> |
さらら: これまでにサンプルとして使ったXMLデータと同じね。 たけち: これを、これまでと同じように表示するのに加えて、先頭に「歌番号」をリストして、その歌番号をクリックするとその説明にジャンプするようにしてみよう。 さらら: え〜っと。。。 たけち: じゃあ、次の図を見て。 |
さらら: あっ、こんな風にリンクをするのね。元のXMLデータだと、どれもpoem要素だし、pno属性だものね。それらを区別するために、ノードを一意に識別するための文字列を生成するのね。 たけち: そうだね。じゃあ、これを実現するXSLTスタイルシートの例をみてみよう。 さらら: はい。 (^ ^* たけち: 次の【manyosyu.xsl】を見て。 |
XSLTスタイルシート: current関数の使用例 |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
■generate-id()
さらら: 二ヶ所でgenerate-id関数を使っているのね。 たけち: mode="list"が指定されているテンプレートで、歌番号のリストと、それぞれの歌の解説へのリンクを生成しているよね。 さらら: あっ、そのリンク先を一意に決めるための名前を作り出すのにgenerate-id関数を使っているのね。 たけち:そうだね。で、リンク先の個所の名前の生成にもgenerate-id関数を使っているんだね。いずれも、コンテキストノードが同じだから、generate-id関数で同じ文字列が生成されているので、それをリンクする方とされるほうの名前の一致に利用しているんだね。 |
さらら: なるほど〜。 たけち: じゃあ、このXSLTスタイルシートを"manyosyu.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。 |
さらら: うんうん。なるほど〜。 たけち: じゃあ、今回はこれでおしまい。 さらら: はい。ありがと。 (*^ ^*) →つづきます (^ ^; |
(注) generate-idによって生成される文字列はXSLTプロセツサによって異なります。
|