Atom ライブラリーは、Atom フィードを使用するための機能の基本セットを提供します。 このライブラリーは、Atom フィードのさまざまなエレメントとエントリーへのアクセスを処理するためのデータ・モデルを提供します。 また、標準的な Atom フィードと Atom Publishing Protocol (APP) の両方の処理に関して、 Web サーバーとのさまざまな対話を処理するトランスポート・オブジェクトも提供します。
詳しくは、Atom Syndication Specification を参照してください。 詳しくは、Atom Publishing Protocol を参照してください。
フィードの検索は単純です。 クライアントからのすべてのサーバー対話を使用して AtomIO オブジェクトが作成されます。 これが前述のトランスポート・オブジェクトで、 Atom サーバーとのあらゆる対話を処理します。フィードの検索などの単純なタスクから始めることにします。
使用するフィードは、ウィジェットの使用例のページのものと同じです。 そのフィードをここで使用することができます。 参考のために、以下にこのフィードのコンテンツを示します。
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Example.com's Sample Feed</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Test Entry #1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>これは Atom フィードのサンプル・エントリーです。これは単に要約の中の大きなパラグラフです。<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Test User</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Test Entry #2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> これは Atom フィードのサンプル・エントリーです。これは単に要約の中の大きなパラグラフです。これは連続したテキストです。 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
次に、次のコードを使用して、このフィードからフィード・オブジェクトを作成します。
var _feed = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(feed, domNode){ _feed = feed; } atomIO.getFeed("samplefeed.xml", getComplete);
このコード・ブロックは、最初に _feed 変数を定義し、AtomIO オブジェクトを作成して、 コールバックとして使用する関数を定義します。そして、最後に AtomIO オブジェクトの getFeed 関数を呼び出して、 フィードを取り出します。前のコード・ブロックでは、ストリング「samplefeed.xml」がフィードの URL です。
フィード・オブジェクトを使用すると、 フィードの任意の属性 (タイトル、ID、作成者、投稿者、更新日など) を取り出すことができます。 さらに、個別にフィードの下にあるエントリーを取り出すこともできます。 これは、エントリーの配列として取り出すことも、ID によって個々に取り出すことも可能です。
function getComplete(/* Atom Feed Object */ feed, /* DOM Node Object */ domNode){ _feed = feed; var id = _feed.id; // id now equals "http://www.onlamp.com/" var title = _feed.title.value; // _feed.title is a ibm_atom.io.atom.Content object, with a // value of "Example.com" var arrayOfEntries = _feed.entries; // an array of all entries. Current length is 3. var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); // the entry specified by the given ID string. In this case, // it is the first entry in our feed. }
個々の Entry オブジェクトを使用すると、エントリー・タイトル、ID、更新日の取得などを含め、 フィード・オブジェクトの場合と同様の多くの項目を実行することができます。 エントリー・オブジェクトの唯一の固有の関数は、 そのエントリーの編集 URL を取得する機能です。 この機能については、前のサンプル・フィードに編集可能なエントリーが含まれていないため、 この例では示されていません。
function getComplete(feed, domNode){ _feed = feed; var specificEntry = _feed.getEntry("http://example.com/samplefeed.xml/entry/2"); var id = specificEntry.id; // the id of the entry. var title = specificEntry.title.value; // the entry's title is an ibm_atom.io.atom.Content object, // the text value is in the 'value' attribute of that object. var updated = specificEntry.updated; // the entry's updated Date object. }
作成者、投稿者、リンクなど、その他のデータ・モデル・オブジェクトは、 すべて同様に機能し、独自の属性と関数を持っています。詳しくは、参照ページを参照してください。
AtomIO オブジェクトは、getEntry 関数を使用した単一エントリーの取得を含め、 データをサーバーに返送するその他の関数をサポートしています。 これは一般に、Atom エントリー文書の構文解析になりますが、フィード文書で示された場合には、 そのフィードの最初のエントリーが戻されます。
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; var id = _entry.id; // the id of the entry. var title = _entry.title.value; // the entry's title is an ibm_atom.io.atom.Content object, // the text value is in the 'value' attribute of that object. var updated = _entry.updated; // the entry's updated Date object. } atomIO.getEntry("samplefeed.xml", getComplete);
さらに、AtomIO オブジェクトを使用して、 編集済みエントリーから取り出した URL を持つ更新済みエントリーをサーバーに返送することができます。 以下の例を参照してください。
var _entry = null; var atomIO = new ibm_atom.io.atom.AtomIO(); function getComplete(/* Atom Entry Object */ entry, /* DOM Node Object */ domNode){ _entry = entry; _entry.addLink("editURL", "edit"); _entry.title.value = "Test Title!"; function getComplete2(entry2, domNode){} atomIO.updateEntry(_entry, getComplete2); } atomIO.getEntry("samplefeedEdit.xml", getComplete);
前のコードは、そのままでは機能しません。 これは、「editURL」を有効な URL に変更し、APP サーバーが要求に応答する必要があるためです。
その他の使用可能な関数は、AtomIO オブジェクト上にあります。 ただし、前述の getFeed、getEntry、および updateEntry の各関数と同じパターンに従う必要があります。 詳しくは、参照ページを参照してください。