セレクターネームスペース削除

この日は、セレクターネームスペース周りについて考えてました。


最終的な結論として、セレクターネームスペースは、Xtalの仕様から削除されることになりました。
実装してみたものの、言語仕様やC++インターフェイスが複雑になり、実行速度が落ちる割に、その必要性がいまいち感じられないためです。

セレクターネームスペースを入れようと思った一番の理由は、実はe4x相当の機能を入れるためでした。XMLには名前空間があるので、セレクターネームスペースが無いとe4xのように表現できないからです。

そもそもe4xとは?

xml = <xxx xmlns:ns="http://d.hatena.ne.jp/xtalco/">
  <ns:item>
    <ns:foo>foo</ns:foo>
  </ns:item>
</xxx>;

// セレクターネームスペースがあるからこのようにアクセスできる。
xml.ns::item.ns::foo 

//もしセレクターネームスペースが無いとしたら、
//名前空間の付いたタグはメソッド経由でのアクセスになるだろう。
//こんな風な。
xml.child("item", ns).child("foo", ns)


Xtalセレクターネームスペースは諦めましたが、近い将来にe4xのような機能を入れる予定です。