たけまる / 2007-02
2007-02-22 Thu
_ Perl - Google::Data::JSON [perl][gdata]



(2007-12-03 追記) 変換ルールと使い方を追加しました.昨年 11月,GData フィードが JSON をサポートすると,他にもいくつか
の Web サービスが JSON に対応するようになりました.最近では,XML
Web サービスを JSON に変換するのも流行ってるようです.
XML から JSON への変換は技術的には簡単ですが,標準化された方法がな
いのが難点です.特に,リテラル要素を指す Key 名や XML 宣言の扱い方,
名前空間の表現方法については一意に決まらないので,統一したほうがよ
さそうです.
いまのところ,もっとも知られている変換方法は GData だと思いますの
で,GData の変換ルールをまとめてみました.
- 属性は文字列プロパティに変換
XML
<link href="http://example.com/collection" rel="self"/>JSON
{ "link": {
"href": "http://example.com/collection",
"rel": "self"
} }
- 子要素はオブジェクトプロパティに変換 (テキスト要素のキーは "$t")
XML
<author> <name>Foo Bar</name> <email>foo@example.com</email> </author>JSON
{ "author": {
"name": { "$t": "Foo Bar" },
"email": { "$t": "foo@example.com" }
} }
- 複数存在する要素は配列プロパティに変換
XML
<link href="http://example.com/"/> <link href="http://example.com/collection" rel="self"/>JSON
{ "link": [
{ "href": "http://example.com/" },
{ "href": "http://example.com/collection", "rel": "self" }
] }
この GData 変換を Perl モジュールにしてみました.
Google::Data::JSON
このモジュールは XML → JSON だけでなく,逆変換もできます.また,
XML, JSON, XML::Atom オブジェクト, Hash Reference の間で自由に変換
できます.
使い方は簡単です.
use Google::Data::JSON qw(gdata); # XML -> JSON $json = gdata($xml)->as_json; # XML -> HASH $hash = gdata($xml)->as_hash; # XML::Atom object -> JSON $json = gdata($atom)->as_json; # JSON -> XML $xml = gdata($json)->as_xml;
2007-02-13 Tue
_ Perl - XML::Atom::Service [perl][atompub]



Perl には Atom サービス文書とカテゴリ文書の実装がなかった[2006-12-11] ので,作成してみました.CPAN にあります.
XML::Atom::Service
下のようにしてインストールできます.
$ cpan XML::Atom::Service
使い方は XML::Atom::Feed などとほとんど同じです.詳しくは POD を見
てください.
なお,XML::Atom::Category に,「親要素の名前空間を引き継いでしまう」
というバグがあったので (フィード・エントリ文書とサービス・カテゴリ
文書は名前空間が異なる),XML::Atom::Categories に下のコードを記述
して強制的に直しておきました.
*{XML::Atom::Category::element_ns} = sub {
$XML::Atom::Util::NS_MAP{$XML::Atom::DefaultVersion}
};
これによって,XML::Atom::Category は親要素にかかわらず,指定された
Atom バージョン ($XML::Atom::DefaultVersion) に対応する名前空間を
返すようになります.
2007-02-07 Wed
_ Atom 出版プロトコル - メディアタイプ仕様の和訳 [atompub]



以下のドキュメントは,IETF Internet-Draft "The application/atom+xml Type Parameter" を対訳形式で和訳したものです.厳密さより読みやすさ
を優先し,意訳を多用しています.ご了承ください.
翻訳作業はこのブログの著者が行いました.ドキュメントには翻訳上の誤
りがある可能性があり,内容について一切保証をするものではありません.
正確さを求める場合には必ず原文を参照してください.当方は,この文書
によって利用者が被るいかなる損害の責任を負いません.
誤りなどを見つけましたら,takemaru _at_ teahut . sakura . ne . jp
までお願いします.
draft-ietf-atompub-typeparam-00-ja.txt
■ 概要
Atom シンジケーションフォーマット (RFC 4287) では,Atom フィード文
書とエントリ文書を表す 'application/atom+xml' メディアタイプを定め
た.本文書では,そのふたつの Atom 文書を区別するためのオプショナル
な 'type' パラメータを定める.
