2003年7月6日(日)更新 |
■XPathのノード
さらら: たけち、XPathってずいぶん久しぶりね。(^ ^* なんだかすっかり忘れちゃったわ。 たけち: そっ、そうだね。(^ ^; ここからはXPathについてもうすこし詳しく学んでいこうと思うんだ。場合によってはXSLTと行ったりきたりするかもしれないけどね。 さらら: あっ、XSLTではXPathを使っているのだったわね。 たけち: そうだったね。で、今回は、XPathのデータモデルのなかのルートノードについて少しみてみようね。 さらら: あっ、はい。 |
たけち: XPathのデータモデルでは次のようなノードがあらわれるんだよ。 |
XPathで扱われるノード
|
さらら: あら、意外にあるのね。 たけち: うん。すこしずつやって行くから、今はあんまり気にしないで。 さらら: えぇ。。。。あっ、ルートノードって、XMLデータのルート要素ノードとは違ったのね。少し思い出したわ。でも、ルートノードってルート要素ノードくらいしか子ノードを持たないんじゃなかったかしら? たけち: あっ、いいこと言ってくれるね。今回は、そのことについてお話ししようと思っていたんだ。 |
■XPath: ルートノードの特徴
たけち: ルートノードは、ツリーのルート、つまり一番おおもとの根っこのノードだね。で、ルートノードは他のノードと大きく違う点があるんだ。 さらら: 根っこのノードだから親ノードが無い、ってこと? たけち: うん。それもそうだね。実は、ルートノードには名前が無いんだ。 さらら: あっ、そうなの。。。。そっか。そういわれればそれでもいいって感じがするわね。ルートノードってひとつしかないものね。 |
たけち: そうそう。それから、ルートノードは次のノードを持つんだ。 |
ルートノードが持つノード
|
さらら: ルート要素ノードはわかるけど、プロセッシングインストラクションノードとコメントノードはXMLデータのどこにでてくるの? たけち: じゃあ、それを簡単なXMLデータでみてみようね。 さらら: えぇ。 |
■具体例でルートノードについて確認しましょう
たけち: 次の、簡単なXMLデータ【sarara.xml】を見て。 さらら: あら、私の歌・・・(^ ^; |
XPathサンプル用xslスタイルシート |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
さらら: あっ、プロセシングインストラクションって・・・(^ ^; たけち: 思い出した? 3行目の さらら: えぇ。そうだったわ。。。。それから、コメントは分かるわ。 たけち: で、このXMLデータをXPathで眺めてみると次のようになるんだ。 |
たけち: ルート要素ノード sarara とその子ノード以外は、ルートノードの子ノードになるんだね。 さらら: そうなの。こうなっているのね。 たけち: じゃあ、具体的にちょっとみてみよう。この【sarara.xml】データに、【routenode.xsl】を実際に適用してルートノードの子ノードを見てみようね。次の【routenode.xsl】を見て。 |
XSLTスタイルシート【routenode.xsl】 |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
たけち: ここでは【routenode.xsl】の細かいところの説明は省略するけど、コメントノードとプロセシングインストラクションノードの見方はそれぞれ次のようになっているね。
さらら: そう書けばいいのね。。 たけち: じゃあ、実際にこの【sarara.xml】データに、【routenode.xsl】を実際に適用してInternet Explorerで見てみよう。次のように表示されるはずだよ。 |
■プロセシングインストラクションの文字列
さらら: なるほど〜。あれ? プロセシングインストラクションノードのところって、 たけち: あっ、そうそう。この場合、全部文字列で表示されるんだ。というのは、プロセシングインストラクションには属性が無いんだよね。 さらら: えっ、そうなの? たけち: XMLの仕様からすると、プロセシングインストラクションの さらら: ふぅ〜ん。でも、XSLTスタイルシートの適用ってできるようになっているのよね? |
たけち: うん。で、実際には さらら: あっ、じゃあ実質的には属性のように扱われるから心配しなくていいのね。 たけち: そうだね。じゃあ、今回はここまで。 さらら: は〜い!! (^ ^* →次回をお楽しみに。 (^ ^; |