Simple List Extensions 仕様

Simple List Extensions 仕様

バージョン : 1.0a

担当者 : Microsoft Corporation ‐ Sean Lyndersay

1. 概要 1. 概要
  1.1 背景 1.1 背景
2. 例 2. 例
3. Simple List Extensions 3. Simple List Extensions
   3.1 名前空間 3.1 名前空間
   3.2 リストの識別 3.2 リストの識別
   3.3 軽量なプロパティ説明 3.3 軽量なプロパティ説明
     3.3.1 概要 3.3.1 概要
     3.3.2 並べ替え 3.3.2 並べ替え
     3.3.3 グループ化 3.3.3 グループ化
4. 追加情報 4. 追加情報
5. 更新履歴 5. 更新履歴
6. ライセンス情報 6. ライセンス情報

1.    概要

Simple List Extensions は RSS 2.0 * (英語) や Atom * (英語) などの既存のフィード形式の拡張機能として設計されています。これにより、順序付き項目リストの公開が容易になり、ユーザーがアクセスしやすくなります。

このドキュメントで使用している “リスト” という言葉は、類似したプロパティを持つ項目の順序付きコレクションのことです。たとえば、フォト アルバムは “フォト リスト” と定義される場合があります。

注 : この仕様はできるだけ単純になるように設計されています。追加情報、説明、および例についてはこちら (英語) を参照してください。

1.1 背景

フィードは項目の集まりです。フィードは、通常、サーバーに存在する項目のサブセットまたは全コレクションを表します。

フィードの消費者は、フィードの内容の種類によって異なるフィード処理を行う必要があります。たとえば、サーバー上の全項目のコレクションを含むフィードと、最近追加された、または更新された項目のみを含むフィードの処理は異なります。また、消費クライアントがフィード内の情報をユーザーに公開する場合、特定の情報が他の情報より妥当であり、有益な場合があります。

Simple List Extensions の目的は、発行者の意図をクライアントにより完全な形で説明するためにフィードで使用可能な、一連の XML 要素を定義することにあります。これにより、クライアントはより的確かつ有用なフィードをユーザーに提示できます。

この仕様には、それぞれ独立して使用可能な 2 つの拡張が含まれています。1 つは、フィードが “リスト” であることを発行者が示すことができるようにするもので、これによりクライアントは通常のフィードとは異なる方法でそのフィードを処理しなければなりません。もう一方の拡張は、すべての種類のフィード (フィードとリストの両方) で使用可能で、これにより発行者はクライアントに特定の項目メタデータの処理方法を示すことができます。

2.    例

次の追加機能を使用して、本の項目のリスト (cf:treatAs 要素を使用) を定義するための Simple List Extension 要素の使用例を紹介します。

  1. ユーザーに表示される場合にフィードで提供される既定の並べ替えが “Relevance” とラベル付けできることを発行者が指定 (cf:sort 要素を使用)

  2. ユーザーに対して初版発行日での並べ替えを許可する必要があること (およびユーザーに対してラベル "First Edition" を使用可能にすること) を発行者が指定

  3. リスト内の本をユーザーがジャンル別にグループ化またはフィルタリングできるよう許可する必要があることを発行者が指定 (cf:group 要素を使用)

>rss version="2.0" 
      xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"
      xmlns:book="http://www.example.com/book">
  <channel>
    <cf:treatAs>list</cf:treatAs>
    <title>Books in My Collection</title>
    <link>http://www.example.com/collectionofbooks.htm</link>
    <cf:listinfo>
      <cf:sort label="Relevance" default="true" />
      <cf:sort ns="http://www.example.com/book"
        element="firstedition" label="First Edition" data-type="date" />
      <cf:group ns="http://www.example.com/book" element="genre" label="Genre" />
    </cf:listinfo>
    <item>
      <title>Great Journeys of the Past</title>
      <author>Bob</author>
      <description>A wonderful history of great journeys</description>
      <book:firstedition>Sat, 07 Sep 2002 00:00:01 GMT</book:firstedition>
      <book:genre>Travel</book:genre>
    </item>
    <item>
      <title>Horror Stories, vol 16</title>
      <author>Steve</author>
      <description>Our favorite horror author provides us with another great collection</description>      <book:firstedition>Thu, 25 Aug 2005 00:00:01 GMT</book:firstedition>
      <book:genre>Horror</book:genre>
    </item>
  </channel>
</rss>

3.    Simple List Extensions

3.1 名前空間

次の名前空間宣言がこのドキュメントの XML 要素に使用されています。

名前空間   http://www.microsoft.com/schemas/rss/core/2005 (英語)

説明     この名前空間はこの仕様における全要素を定義します。

プレフィックス        cf

3.2 リストの識別

次の XML 要素によって、フィード ドキュメントの発行者はこのフィードがリストとして消費されることを意図したものであることをフィードの消費者に示すことができます。

構文

<cf:treatAs>list</cf:treatAs>

この要素は、RSS 2.0 <channel> 要素または Atom <feed> 要素の子要素としてフィード内に配置される必要があります。

   <rss>
     <channel>
       <cf:treatAs>list</cf:treatAs>
       <title>...</title>
       ...

フィードの消費者は、この情報を使って、フィードがサーバーの内容の完全な順序付きリストであるかのようにフィードの内容を処理する必要があります。このことは、クライアントがサーバーからの順序を尊重することを示し、リストにない項目は既にリストからは削除されている (リストのローカル コピーを保守している場合は、そのローカル コピーから項目を削除する必要がある) ことを示しています。

3.3 軽量なプロパティ説明

3.3.1 概要

Simple List Extensions には一連の XML 要素が含まれており、これによって発行者は、並べ替えやグループ化 (またはフィルタリング) を行うにはどのプロパティが有用であるかをクライアントに示すことができます。これらの要素は、サポートされているフィード形式の拡張メカニズムを使用して、同じフィードの項目内の子要素である XML 要素を参照します。

構文:

<cf:listinfo>
     <cf:sort
       ns="namespace"
       element="element"
       data-type="date|text|number"
       label="User-readable name for the sort field"
       default="true|false" />
     <cf:group
       ns="namespace"
       element="element"
       label="User-readable name for the grouping" />

詳細:

cf:listinfo 要素には、cf:sort と cf:group の 2 つの子要素のインスタンスをゼロ個以上含めることができます。

cf:sort 要素または cf:group 要素の各インスタンスは、フィードの各項目内にある子要素を参照します。これらの要素は項目のプロパティと見なすことができ、以下のように説明されます。

cf:sort 要素または cf:group 要素の各インスタンスは、フィードの各項目内にある子要素を参照します。これらの要素は項目のプロパティと見なすことができ、以下のように説明されます。

たとえば、本を説明する項目には、初版発行日を表す「book:firstedition」というプロパティが含まれている可能性があります。各項目にはまた、項目のジャンルを説明する「book:genre」プロパティが含まれている場合もあります。この例では、本のプレフィックスが http://www.example.com/book にマッピングされている可能性があります。

Simple List Extensions 1.0 では、一定の型のプロパティのみがサポートされています。以下はその具体例です。

  • 並べ替えまたはグループ化される値は、要素そのもののテキスト コンテンツでなければなりません (たとえば、要素に含まれた文字データ)。属性またはネストされた要素の値は、並べ替えやグループ化には使用できません。

  • 参照されるプロパティは、子要素を持つことができません。

  • 一般的に、各項目にはプロパティのインスタンスが 1 つだけ表示されます。プロパティの反復するインスタンスに対しては、クライアントはそれを無視することができます。

この拡張は、いかなる種類のフィードでも使用可能です。フィードによっては cf:treatAs 要素を含まず cf:listinfo を含む場合があります (その逆の場合もあります)。

3.3.2 並べ替え

cf:sort 要素は、参照先のプロパティが “並べ替え可能” であることをクライアントに知らせるためのものです。つまり、クライアントは、ユーザーがそのプロパティで並べ替えできるユーザー インターフェイスを提供する必要があります。

cf:sort 要素は、リストに表示される既定の並べ替えにラベルを提供するために使用することもできます (この場合、ラベルの属性のみを含む必要があります)。

cf:sort 要素には以下の属性が含まれます。

  • ns - この属性は、プロパティ要素で使用される完全な名前空間です。属性値が空の文字列である場合、そのプロパティは名前空間に存在しないものと見なします。ns 属性が省略されている場合、既定値は空の文字列になります。上記の例では、ns 属性には “http://www.example.com/book” が含まれます。名前空間のプレフィックスは含まれません。

  • element - この属性はプロパティの名前です (名前空間なし)。上記の例では、element 属性には “firstedition” が含まれます。この属性が省略されている場合、ラベル属性が含まれており、かつ、この cf:sort 要素が既定の並び替え順序を参照すると見なします。

  • label - この属性には、cf:sort 要素が参照するプロパティの名前 (人間が判読可能) が含まれます。これが省略されている場合、クライアントは人間が判読できる名前として “element” 属性の値を使用する必要があります。“element” 属性が省略されている場合は、“label” 属性が必要です。

  • data-type - この属性は、cf:sort 要素が参照するプロパティのデータ型をクライアントに知らせます。これには、日付、数字、テキストのいずれかの値が含まれています。省略されている場合、既定値はテキストになります。

  • default - この属性は、cf:sort 要素が参照するプロパティが、リストの既定の並べ替え順序であることを示します。許可されている値は、“true” と “false” です。省略されている場合、既定値は “false” です。リスト内の項目は、要素によって既に並べ替えられている必要があります。したがって、リストの内容が直接表示されている場合、クライアントはこのフィールドで並べ替える必要はありません。クライアントは、最初に検出された default=“true” のインスタンスのみを尊重する必要があります。

3.3.3 グループ化

cf:group 要素は、参照先のプロパティが “グループ化可能” であることをクライアントに知らせるためのものです。つまりクライアントは、ユーザーがそのプロパティ値でグループ化またはフィルタリングできるユーザー インターフェイスを提供する必要があります。グループ化が可能なプロパティには、独立した値の小さなセットが含まれている必要があります (本のジャンルなどはグループに最適です)。

cf:group 要素には以下の属性が含まれます。

  • ns - この属性は、プロパティ要素で使用される完全な名前空間です。属性値が空の文字列である場合、そのプロパティは名前空間に存在しないものと見なします。ns 属性が省略されている場合、既定値は空の文字列になります。上記の例では、ns 属性には “http://www.example.com/book” が含まれます。名前空間のプレフィックスは含まれません。

  • element - この属性はプロパティの名前です (名前空間なし)。上記の例では、element 属性には “firstedition” が含まれます。この属性が省略されている場合、ラベル属性が含まれており、かつ、この cf:group 要素が既定の並び替え順序を参照すると見なします。

  • label - この属性には、cf:group 要素が参照するプロパティの名前 (人間が判読可能) が含まれます。これが省略されている場合、クライアントは人間が判読できる名前として “element” 属性の値を使用する必要があります。“element” 属性が省略されている場合は、“label” 属性が必要です。

4.    追加情報

この仕様はできるだけ単純になるように設計されています。追加情報、説明、および例については、
http://blogs.msdn.com/rssteam/articles/SimpleListExtensionsExplained.aspx (英語) を参照してください。

5.    更新履歴

        1.0 最初の仕様リリース

        1.0a 誤字の修正、例の追加、および明確さの改善を目的として更新された仕様

6.    ライセンス情報

この仕様におけるマイクロソフトの著作権は、Creative Commons Attribution-ShareAlike License (バージョン 2.5) の下にライセンスされています。このライセンスについてはhttp://creativecommons.org/licenses/by-sa/2.5/ * (英語) を参照してください。ソフトウェアの実装に関して、マイクロソフトは本仕様の拡張に従ったソフトウェアの実装によって必然的に侵害される、マイクロソフトが所有または管理する特許請求の範囲について認識していません。今後マイクロソフトがそのような必然的な特許請求の範囲を認識した場合でも、本仕様で明記された拡張の公開および使用を目的としたいかなる特許請求の範囲に対しても、マイクロソフトは妥当かつ非差別的な条件で、無償の特許ライセンスを提供することに同意するものとします。