2004-08-21
XSLT for-each でカレントドキュメントが変わる
- Reference URI
- http://lowreal.net/logs/2004/08/21/1
- Written Time
- 2004-08-21T23:35:25+09:00
- Tags
-
- web
<xsl:for-each select="$document('some.xml')">
<xsl:apply-template select="/root/element"/>
</xsl:for-each>
これが期待通りいかない。for-each の中でメインのソースドキュメントて処理できないのかしら。あー何かもうわけわからん……カレントノードが $document('some.xml') になるのは書いてあるけど、/ はメインのドキュメントのルートノードじゃないのかよと……どうやって書けばいいんだ W3C ちゃん。
なんかアレだなぁ……絶不調だ。普段はやる気でないし、やる気でたら意味わからんことばっかだ。何もできないときは何もしたくないんだけど、夏休み中にやっちまいたいんだよなぁ。あー高校生活があと20年ぐらいあればいいと思うよ。ただしインチキ臭くないないクラスメイトとマトモな教師がいる高校生活が。
哀さんの書き込みと IRC での発言によってもうちょい賢くなった気がする!
上の文で カレントノードが
と書いているけど、変わるのはカレントノードではなくコンテキストノードっぽい。カレントノード (current()) はテンプレートにマッチしたやつっぽい。XSLT 仕様書の for-each には $document('some.xml') になるこのテンプレートは、選択したノードをカレントノードとして使用し
と書いてあって、これを俺は勘違いしていたくさい。テンプレートのインスタンス化するとき initialize に投げられるのがそのテンプレートのカレントノードとなり、その後はたぶんカレントノードは変化しないんだ。
Inserted at 2004-10-17T15:24:52+09:00
Trackback URI: http://lowreal.net/logs/2004/08/21/1.trackback
NULL
Generated with Taglibro
この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。
Comments (1)