Web APIの次世代標準プロトコル「Atom Publishing Protocol」

第2回 AtomPubにおけるリソース操作 - CRUD

この記事を読むのに必要な時間:およそ 5.5 分

エントリフォーマット

次に示すコードはAtomエントリの一例です。エントリのメタ情報とともにcontent要素内にその情報が記載されています。フィードと同様,エントリ固有のidがあります。更新された時刻についてはupdated要素で知ることができます。

Atomエントリの例

<entry xmlns="http://www.w3.org/2005/Atom">
  <title>今日は紅葉を見に行きました</title>
  <link rel="alternate" type="image/jpeg" href="http://example.com/2007/11/10/fall.html"/>
  <link rel="enclosure" type="image/jpeg" length="133731" href="http://example.com/images/20071110fall.jpg"/>
  <id>tag:example.com,2007:1.2397</id>
  <updated>2007-11-11T12:29:29Z</updated>
  <published>2007-11-10T08:29:29-04:00</published>
  <author>
    <name>朝倉 浩志</name>
    <uri>http://example.com/</uri>
    <email>hirosh-a@example.com</email>
  </author>
  <content>
    今日は秋ということで紅葉を見に行っていました。なかなか綺麗に写真
もとれたと思います。
  </content>
</entry>

表2はatom:entryに出現できる主な子要素の一覧です。子要素の順番についてはatom:feedと同じく意味がないと定義されていますので出現順序は任意となっています。

表2 atom:entryに出現できる子要素(表中の「出現ルール」は,*:0個以上,?:1個または0個,1:1個出現するという意味で使用している)

要素出現ルール内容
atom:author*[注1]著者情報
atom:category*カテゴリを表す
atom:content?エントリの内容を表す(リンクを使って表現することも可能)
atom:contributor*貢献した人
atom:id1エントリを一意に識別する識別子
atom:link*
[注2]
webリソースに対するリンク(意味が与えられる場合があります)
atom:published?リソースが作成されたもしくは利用できるようになった日付時刻
atom:rights?人間が可読な権利情報
atom:source?エントリを複製する際に元のメタ情報を格納できる
atom:summary?[注3]エントリの要約
atom:title1エントリのタイトル
atom:updated1変更された日付時刻
app:edited?エントリが編集された最終時刻

※接頭辞appは,名前空間http://www.w3.org/2007/appの意味で使用しています。

  • [注1]一つ以上のatom:author要素を含む必要があります。ただしatom:author要素を含むatom:source要素を含む場合はこの限りではありません。また,フィード文書に出現しているエントリの場合で,そのatom:feed要素自体がatom:author要素を含む場合は,この限りではありません(要するにどこかでatom:authorが出てきていれば良いということです)⁠
  • [注2]atom:content要素を含まない場合は,rel="alternate"であるatom:link要素が少なくとも一つは必要です。
  • [注2]rel="alternate"であるatom:link要素において,type属性値とhreflang属性値の組み合わせが同じような要素を複数出現させることはできません。
  • [注3]atom:contentがsrc属性を含んで外部のリソースを参照している場合やatom:contentの内容がbase64でエンコードされている場合などは,content自体がこの要素内で分かりませんので,atom:summary要素が必須と規定されています。

atom:link要素

ここで,フィードとエントリ内で使われるatom:link要素について説明しておきます。atom:link要素は,entry要素またはfeed要素内からwebリソースへの参照を示すために使われます。この要素はrel属性をもつことができ,リンクの関係性を表すことができます。Atomではこれらをうまく使うことにより表現をより豊かにしています。

また,atom:content要素でもsrc属性を使ってリンクを表現することが可能となっており,rel="alternate"と近い意味で使われることがありますが,今回は紙面の都合上詳しくは触れません。

表3 atom:link要素における,rel属性の意味

rel属性値意味
rel属性が出現しないrel="alternate"と解釈する
alternateそのエントリ,フィードの別バージョンを示します(よく使われるのは,そのエントリ,フィードを Web ブラウザで見られるページを示します)⁠
relatedそのエントリ,フィードで説明されるリソースに関連するリソースを示します(具体的には関連するものであれば何でも良いようです)⁠
selfそのエントリ,フィードと等価なリソースを示します。
enclosure関連するリソースを指し示しますが,サイズが大きい可能性があって特別な処理を必要とすることを意味します(具体的にはそのリソースに含まれる画像などが対象となるようです)⁠
via情報源のリソースを示します。
editメンバリソースを操作するためのURIを示します(後述)⁠
edit-mediaメディアリソースを操作するためのURIを示します(後述)⁠

著者プロフィール

朝倉浩志(あさくらひろし)

NTTコミュニケーションズ 先端IPアーキテクチャセンタ リサーチエンジニア。上位層プロトコル及びWebテクノロジの技術開発に取り組む。

コメント

コメントの記入