NULL::something

Login via flickr, はてな, TypeKey.

2004-08-19

preceding

sabなんとか XSLT 処理系で preceding がようわからない。いや、仕様通りかもしれないけど、それも意味がわからない。

注: 一つのドキュメントは (アトリビュートノードとネームスペースノードは除いて) ancestor および descendant、following、preceding、self の基準点によって分割される。つまり、これらの基準点には重なる部分はなく、全て一緒にするとドキュメント内のすべてのノードを指定することになる。

らしいけど。preceding が前のノードを全て選択してないような。*1

<doc>
    <ele1>
        <ele2>text</ele2>
    </ele1>
    <ele1>
        <ele3>
            <ele2>text</ele2>
        </ele3>
    </ele1>
</doc>

みたいな構造で、コンテキストノードが /doc/ele1[position() = 2]/ele3/ele2 だとしたときに preceding::ele2 としても /doc/ele1[position() = 1]/ele2 が選択されないっぽい。この文脈で preceding::* で選択できるのは ele1 だけ。 (自分の祖先を除く前の要素だけど、中身は含んでない) これって正しいのかしら? 正しいとしたら (正しくなくとも) sort を使うときに上手くいかない。(sort 使わないなら position() で頑張ればOK)

んでも実際上の簡易構造で試してないから間違ってるかもしれない。とりあえずやりたいことが長いこと上手くできる方法が見つからなくて疲れた。

参照リソース

  1. XML Path Language (XPath)

Comments (0)

Trackback URI: http://lowreal.net/logs/2004/08/19/2.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。