[6] [DFN[[RUBYB[[[外来マーク付け]]]@en[foreign markup]]]]は、 [[Atom]] において [[Atom]] 以外の[[マーク付け]]を指します。 * 仕様書 -[5] [CITE@en[RFC 4287 - The Atom Syndication Format]] ([TIME[2009-08-20 17:27:51 +09:00]] 版) - [2] [CITE@en[RFC 5023 - The Atom Publishing Protocol]] ([TIME[2008-11-20 18:52:14 +09:00]] 版) * 文書の要件 [7] [[Atom文書]]は[[外来マーク付け]]を含めることができます。特に [CODE(XMLe)@en[[[atom:content]]]] [[要素]]は任意の[[外来マーク付け]]を含められるようになっています。 [SRC[[[RFC 4287]] 6.1.]] [1] [[AtomPub文書]]中の認識できない[[マーク付け]]は [[Atom 1.0]] の[[外来マーク付け]]とみなします。[[外来マーク付け]]は、 [[分類文書]]と[[サービス文書]]の中の明示的に禁じられていない任意の場所で用いることができます。 [SRC@en[[[AtomPub]]]] * 処理モデル [9] [[Atom処理器]]は、[[外来マーク付け]]が認められている場所で[[外来マーク付け]]を見つけても処理を停止しては[['''なりません''']]し、[[誤り]]を通知しては[['''なりません''']]。 [SRC@en[[[RFC 4287]] 6.3.]] [3] [[処理器]]は、[[外来マーク付け]]で処理を停止しては[['''なりません''']]し、[[誤り]]を通知しては[['''なりません''']]。 [SRC@en[[[AtomPub]]]] [10] [[Atom処理器]]は[[外来マーク付け]]を処理できるかもしれませんが、処理できないものは[DFN[[RUBYB[未知外来マーク付け]@en[unknown foreign markup]]]]といいます。 [SRC@en[[[RFC 4287]] 6.3.]] [11] [CODE(XMLe)@en[[[atom:entry]]]] [[要素]]、 [CODE(XMLe)@en[[[atom:feed]]]] [[要素]]、[[Person construct]] の[[子要素]]の[[未知外来マーク付け]]に関しては、 それらおよびその[RUBYB[[[文字内容]]]@en[textual content]]を読み飛ばして[['''構わず''']]、 [[マーク付け]]があるからといって動作を変更しては[['''なりません''']]。 [SRC@en[[[RFC 4287]] 6.3.]] [12] [CODE(XMLe)@en[[[atom:content]]]] [[要素]]や [[Text construct]] で[[未知外来マーク付け]]があったときは、その[[マーク付け]]を無視してその[RUBYB[[[文字内容]]]@en[textual content]]だけがあったかのように処理する[['''べきです''']]。 [SRC@en[[[RFC 4287]] 6.3.]] [8] [[クライアント]]は[[文書]]の[[転送]]にあたって[[外来マーク付け]]を保持する[['''べきです''']]。 [SRC@en[[[AtomPub]]]] [4] [CODE(URI)@en[[[http://www.w3.org/2005/Atom]]]] [[名前空間]]、 [CODE(URI)@en[[[http://www.w3.org/2007/app]]]] [[名前空間]]は将来の拡張のために予約されていますが、 この[[名前空間]]の[[要素]]や[[属性]]であっても、 認識できない[[マーク付け]]は[[外来マーク付け]]として扱わなければ[['''なりません''']] [SRC@en[[[RFC 4287]] 6.2.、[[AtomPub]]]]。 * 拡張要素 [13] [[外部マーク付け]]は、特に禁じられている箇所以外の [[Atom文書]]のあらゆるところで認められていますが、 [[意味]]が定義されているのは >>14 の場合だけで、それ以外の[[外部マーク付け]]の[[役割]]は未定義となっています。 [SRC[[[RFC 4287]] 6.4.]] [14] [CODE(XMLe)@en[[[atom:feed]]]]、[CODE(XMLe)@en[[[atom:entry]]]]、 [CODE(XMLe)@en[[[atom:source]]]]、[[Person construct]] の各[[要素]]の[[子要素]]は [[Metadata要素]]であり、[[単純拡張要素]]または[[構造化拡張要素]]です。 [SRC[[[RFC 4287]] 6.4.]] [15] [[RELAX NG]] [[スキーマ]] ([[参考]]) によると[[単純拡張要素]]と[[構造化拡張要素]]の総称が [DFN[[CODE(XML)@en[[[extensionElement]]]]]] です。 [SRC[[[RFC 4287]] 6.4.]] ([[規定]]の部分では「[RUBYB[[[拡張要素]]]@en[extension element]]」の定義は明記されていません。) ** 単純拡張要素 *** 意味 [18] [DFN[[RUBYB[[[単純拡張要素]]]@en[Simple Extension element]]]]は、 それが含まれる[[親要素]]の1つの[[特性]] ([[名前]]・[[値]]の組) を表します。[[要素]]の[[名前空間URL]]と[[局所名]]の組が[[特性]]の[[名前]]となります。 [[要素]]の[[文字データ]][[内容]]が[[特性]]の値となります。 [[要素]]が[[空]]の場合、[[特性]]の値は[[空文字列]]です。 [SRC[[[RFC 4287]] 6.4.1.]] *** 構文 [16] [[単純拡張要素]]には、[[属性]]や[[子要素]]があっては[['''なりません''']]。 [[文字データ]]を含んでも[['''構いません''']]し、 [[空]]であっても[['''構いません''']]。 [[Language-Sensitive]] ではありません。 [SRC[[[RFC 4287]] 6.4.1.]] [17] [[RELAX NG]] [[スキーマ]]上の名称は [CODE(XML)@en[[[simpleExtensionElement]]]] であり、[[データ型]]は [CODE(XML)@en[[[text]]]] です。 [SRC[[[RFC 4287]] 6.4.1.]] ** 構造化拡張要素 *** 意味 [21] [DFN[[RUBYB[構造化拡張要素]@en[Structured Extension element]]]]の構造は、 [[子要素]]の順序も含み、意味を持つかもしれません。 [SRC[[[RFC 4287]] 6.4.2.]] [22] [[Atom]] では[[構造化拡張要素]]の解釈を定義しておらず、 [[要素]]内の[[構文]]やその解釈は [[Atom]] 拡張の仕様書によって定義されます。 [SRC[[[RFC 4287]] 6.4.2.]] *** 構文 [19] [[構造化拡張要素]]の[[根要素]]は、最低1つ、[[属性]]か[[子要素]]を持たなければ[['''なりません''']]。 [[構造化拡張要素]]は [[Language-Sensitive]] です。 [SRC[[[RFC 4287]] 6.4.2.]] [20] [[RELAX NG]] [[スキーマ]] ([[参考]]) 上の[[名前]]は [CODE(XML)@en[[[structuredExtensionElement]]]] です。 [SRC[[[RFC 4287]] 6.4.2.]]