いきなりですいませんが、PerlでXMLを生成するときってのは、下手にモジュールなんざ使わずに手でゴリゴリ書いた方がいいんですかねぇ。
XMLというとパーサのモジュールは山のようにあるのに、生成するためのモジュールってどうしてろくなものがないんでしょ。さんざ探し回ってみても見つからなくて、結局ハンドメイドでゴリゴリ書く羽目になってしまって、うんざりしてます。
いや、実は仕事でRSS2.0を作ることになりましてね。これがごく普通のサイト更新通知みたいなものだったら単純でよかったんですけど、仕様上どうしてもオリジナルの名前空間を使う必要がありまして。
RSSを生成するモジュールは世の中にいくつもあるものの(代表的なところではXML::RSSとか)、2.0対応でかつオリジナルの名前空間に対応していて、さらに属性値までコントロールできるかとなると、これがほとんど見当たらないんですな。もっと汎用的なXML生成用のものでもいいからと思って探してみたんですけど、それでもダメ。
まあ、そんな書き方自体がニッチだと言われりゃそれまでなんですけど、こうまで頼れないもんだとは思いませんでしたよ。
XML::FeedPPっていうかなり強力なモジュールを見つけて「これならば」と思って試してみたんですけど、これが残念なことに、生成時に勝手にタグの順番をソートしてしまうという困った仕様になってまして。名前空間のDTD次第では下手をするとinvalidになってしまうのです。うーん、機能的には非常によくできてるのに、実に惜しい。
ま、そういうわけで、結局フルスクラッチで最初のXML宣言文から書き始める羽目になったんですよ。
いや、決してそれがイヤだというわけではないんですけど、ちょっとでもスマートに処理しようと躍起になってリサーチし続けたのが徒労に終わってしまった空しさというか、そういう無力感みたいなものがどよ~んとありまして。これがいわゆる「独り相撲」ってやつなんですか? ああもう、やりきれないったら。
まあ、いいや。来週ガツンと終わらせて、とっととケリをつけることにします。
今回の仕様はどちらかというとデータ運搬に比重を置いたけど、RSSリーダーを意識した仕様にすれば別の使い方もできると思うし。応用範囲は広そうだから、将来的には楽しみかも。
と、多少なりと前向きに締めて終わりにします。
ああ、きっとここまで読んでくれた人いないだろうなぁ。もしいたら、訳わからない話でごめんなさい。
読んだ
あああ、こんなしょーもないグチに最後までつきあって下さって、ありがとうございます(汗)