閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

OPMLの outline 要素の入れ子

cococ でエクスポートした OPML を自作のパーサに突っ込んだらうまく読み込めなくて、原因調べるためにソースを見てみたら outline 要素が入れ子になっていたのが原因だったようで、 body 要素の直下の outline 要素しか見ていなかったために軒並み飛ばされていた模様。

とりあえず全ての outline 要素を読ませるようにして解決しましたが、そもそもこの記述ってありなんだろうか? と仕様を確認したら、どうもありらしい。

確かに outline 要素をグループ化できたらいいのにな、と思ってはいたけれど、 outline 要素を outline 要素で入れ子にしてしまうという仕様はどうなんだろう。解りにくくないか。子要素を持つ outline 要素は「グループ」を表していて、子がない outline 要素は「RSSフィード」なりなんなりを表す、なんてやらなければならないのでしょうか。それほど面倒というわけでもないけれど、なんかしっくりきません。もともと OPMLRSSフィードのリストを表すためのフォーマットじゃないからというのもあるんでしょうけど。

仮にそういう実装をしてグループ化を行ったとしても、他のソフトがこの構造化をサポートしていなければ互換性なんかもなくなってやり取りできなくなる恐れもあるだろうし、あんまり XML を使う旨みが無い気がする。

といっても現状十分普及していて、暗黙の了解みたいなものでどこでも概ね似たようなフォーマットでのインポート/エクスポートをやっているようでそういう問題も少ないようですが (無いわけではない) 、そうやって曖昧な仕様ができあがっていく過程になんともいえない気持ちになってしまったりする今日この頃です。