xml2json - xmlをjsonに変換するxsl
なんかブログ更新してる勢いで書いておく。ここで更新しておかないと次は来年ぐらいだからね。
事の発端は、深津さんとamazon使っていっちょ何かつくってみるかなんていう何とも夢の溢れる若々しい事を約1年前に言っていたんだけれども、ふたを開けてみれば二人とも忙しいじゃないかっていうことで、頓挫していたamazon使って何かやるプロジェクト。
で、その初期の頃につくって放っぽってあった、ECSの出力結果をJSONにさせるXSLを発見したのでなんかもう一生使わなそうだし公開しておきます。やってる事は、Amazon最速検索のそれとまったく同じだけど、最速の人のはXSLの汎用性がなかったのでそこをどうにか書き換えた感じです。
ファイル名とかパラメータの設定がAmazon用っぽくなってますが、基本どんなXMLでもJSONにしてくれます。
ただ、一点KNOWN BUGというか欠点があって、XMLの要素(element)の並びが前もってソート(同じelement名が順に並んでればいいだけで、ABC順とかそういう意味ではない)されてないと動きません。割と致命的なので直したかったんですが、なんとも良い解が思い浮かばず、しかも、Amazonのはソートされてるからもうどうでもいいやと思って、そのままにしてあります。
exslt使えば余裕で直せるような気がするんですが、そうするとXSL自体の汎用性が無くなるのが嫌なので結局放置しております。後、MSXMLでも動きます、多分。最初の頃はMSXMLでデバッグしてたので。
昔ちょろっと試した限り、google-ajaxsltでは動きませんでした。ajaxsltのXSLTの実装が完全ではなかった為だったような気がする。
ホントは、サンプルもドキュメントも書きたかったけど、近藤さん(誰)も50%の完成度でリリースって言ってることだし、ここで、サンプルもドキュメントも書いてたら僕お得意の何も無かった事にする気がするので適当に公開しておく。
xml2jsonを開発するにあたって、川崎さんのJKL.ParseXMLを参考にしました。有難うございます。
で、このxml2json.xslを使ったデモがありまして。
何も目新しいことはなく、最速の人のそれをxml2json.xslに置き換えた感じです。
一点分かりずらいのは、Searchを押すと次の検索結果がロードされるってところです。
コードがきったねえのは、後でリファクタリング(便利な言葉だ)しようと思ってたんです。
しかし、XSLなんて仕事で使ったこと一回もないね。
そういえば、GoogleのapplianceもXSL対応しているようなのをどこかで見た気がするから、そこでも使えるんじゃないかな。勝手な推測だけどれども。