2005年07月03日(日)更新 |
■XPath: ロケーションパス
さらら: ロケーションパス? たけち: うん。これまでみてきたXSLスタイルシートのサンプルで使ってきたんだけどね。まだ説明が足りないのでここで説明しようかと思って・・・前回カレントノードの話をしたよね。 さらら: あっ、そうだったわね・・・ たけち: これまでのXSLスタイルシートのサンプルでは、カレントノードからみて、子供のテキストノードをとったり、属性の値をとったりしたよね。 さらら: えぇ。。 |
たけち: それだけでも十分なことも多いんだけどね。実際には、親のノードをみたり、前のノードを見たりすることも必要なことがあるんだ。たとえば、「自分(カレントノード)の親のノードの子の最初のノード」を見たりね。そういう風にノードをたどっていく道筋を示すものをロケーションパスって言うんだ。 さらら: じゃあ、これまでXSLサンプルで見てきたようなものなのね。 たけち: 実際にはそうなんだ。だから、あんまり難しく考えなくって良いよ。ロケーションパスは次のような指定になるんだ。 |
さらら: あらら、これまでXSLサンプルで見てきたようなものとずい分イメージが違うわねぇ・・・ (^ ^; なんだか分かりにくそうね。。。。コンテキストノードってなぁに? カレントノードと違うの? たけち: コンテキストノードはXPathで指定しているノードのことなんだ。カレントノードは、XSLのテンプレートで扱っているノードなんだよね。XSLスタイルシートの中では、カレントノードからの相対でノードを指定(Xpathによるコンテキストノード指定)するよね。たとえば、「子ノードのxxノード」とか「親ノードyyyの最初のノード」とかね。そのときは、コンテキストノードはカレントノードからは離れていっているけど、カレントノードは変わってはいないんだよ。 さらら: じゃあ、XPathで指定するノードをコンテキストノードって言って、XSLのテンプレートでその時々で扱っているノードをカレントノードって考えたらいいのかしら。でも、ごちゃごちゃしそう・・・ (^ ^; たけち: そうだね。。。。実例をみると慣れるかもね。 |
■XPath: 軸(axis)
さらら: やっぱり分かりにくいわ・・・ たけち: そっか・・・・でも具体的な例を見てゆくと分かってくると思うよ。今回は軸(axis:アクシス)を中心に説明しようね。軸には次のようなものがあるんだ。 |
さらら: 12個もあるのね。。。。でも、どれもいままで見たこと無いわ。どうして?? たけち: あっ、正式には軸(axis:アクシス)は上の図のように書くんだけど、省略形もあるんだ。 さらら: あっ、そうなんだ!! たけち: 軸(axis:アクシス)の省略形をつぎに載せておくね。 |
|
さらら: あっ、childのスラッシュやdescendantのスラッシュふたつは見たことある!! なるほど、そういうことだったのね。わかったわ。 たけち: そうなんだよね。じゃあ、具体的な軸(axis)の指定の例を見てみようね。次のリストは今回のサンプルで使うXMLドキュメントだよ。 |
■XPath: ロケーションパスのサンプル
mayosyu XMLドキュメントのサンプル |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
さらら: ちょっと深いわね。。。。 たけち: 分かりやすいように図に構造を示しておくね。それから、今回のXPathでのロケーションパスのサンプルと示すコンテキストノードを示しておくね。 |
さらら: これならわかるわ。あっ、child::poem[last()]とかは、どういう意味なの?? たけち: あっ、そうだね。。。。一応、それぞれの意味を書いておくね。
さらら: あぁ、そういう意味なのね。わかるわ。 たけち: これらの指定を含んだXSLサンプルのリストを次に載せるね。 |
XPathサンプル用xslスタイルシート |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
たけち: じゃあ、このXMLテキストを"volume.xml"というファイル、XSLスタイルシートを"volume.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。 |
さらら: 少しだけど、またXPathについて学んだわ。 たけち: よかった・・・今度はロケーションパスの述部について説明しようかなぁ・・・ さらら: は〜い!! (^ ^* 楽しみにしてるわ!! →次はXPath-述部です (^ ^; |