2007-08-27
続・E4X
e.element.( function::attribute("state") == 'gas' )http://labs.gmo.jp/blog/ku/2007/08/firefoxe4xxpath.html
mozilla/js のソース読むとか Ku さん最高><。あとでなんかおごってください!(反対だろ)。んー、Firefox だと function という namespace が E4X で式評価するときに存在する?
で、AS3 の方はというと普通に
e.element.( attribute("state") == 'gas' )
で評価できた!Firefox で出来なかったから出来ないと思いこんでいたら…。AS3 の E4X の式評価の部分は with(xml_instance) { } みたいな感じで評価時の xml のインスタンスのメソッドが呼び出されるな。んで Firefox の時は this のインスタンスのメソッドが呼び出され、attribute メソッドが無いのでエラーる。
e.element.(console.log(toString()));
の結果が Firefox と AS3 だと違うのが面白いね。で、Firefox の渡ってくる xml インスタンスのメソッドを呼び出すには function ネームスペースをつけてやる必要がある、と。
// firefox で
e.element.(console.log(function::toString()));
だと Firefox とAS3 での E4X 実装は同じ結果を返す。ソースを読んだ訳じゃないので正しいかどうかは知らない。
最近のループ
marble 最高すぎるなぁ。
aero 切った
XP にしとけばよかった…。ダウングレードすべきかどうか。いや別に aero は良いんだけど、X60 だとデュアルディスプレイにすると半透明とかウニョつーのが無くなるのでそれならいっそということで。一日たつと外部ネットワークに繋がらなくなるのがなー。あー。UAC は別にオンで困ってないよ。
E4X
- XPath 最高!便利すぎ!
- E4X 便利!式も書けるし!XPath より見やすいし XPath イラネ
- E4X 微妙…。やっぱ XPath のほうがイイヤ…。
という誰しも辿る道(ぇー)。
で挙げられてる特定 attr を取り出す例だけど、これ attr が設定されてないとエラーになっちゃうんだよね。img の alt が無い場合とか。ku さんの例の XML をちょっと変えると
var e =
ヘリウム
ナトリウム
塩素Chrorine
水銀quicksilver
;
console.log(e.element.( @state == "gas" ));
reference to undefined XML name @state
\(^o^)/
もちろん安易にこんな風に書いても
console.log(e.element.( @state && @state == "gas" ));
reference to undefined XML name @state
\(^o^)/
なんで AS3 で XML を XPath で評価できる実装がないんだよ!AS3 (Flash Player) はリフレクションが XML で返るので E4X で操作しようと思ってもめんどくてめんどくて…。
続き書いた
http://subtech.g.hatena.ne.jp/secondlife/20070827/1188193204
昨日の呑み
けっこんおめでとう!けっこんいいね!というはなしでした。ジェットン幹事おつ><