#?SuikaWiki/0.9 [10] [[XHTML1]] に[[適合]]することを主張する[[利用者エージェント]]は、 各 XHTML 1 規格で規定された適合性要件を満たす必要があります。 -''XHTML 1.0: The Extensible HyperText Markup Language : 3.2. User Agent Conformance'' -- XHTML 1.0 [[FE]] -- XHTML 1.0 [[SE]] - ''Modularization of XHTML - Conformance Definition : 3.5. XHTML Family User Agent Conformance'' -- XHTML 1.0 FE/SE と m12n では、要件はほとんど同じですが、 >>9 の空白の処理についてが若干異なります。 [1] [整形式性・妥当性] XHTML [[文書]]が[[整形式]]であることを検査しなければなりません。 妥当利用者エージェントであることを主張する場合は、 加えて[[妥当性]]を検証しなければなりません。 [2] [機能定義適合] XHTML 1.0 仕様書で定義された、 又は XHTML 1.0 の[[規定参考文献]]として必須とされている[[機能]]に[[対応]]していることを主張する利用者エージェントは、 その機能を、その機能の定義の通りにしなければなりません。 [3] [素片識別子] 利用者エージェントが一般 (generic) [[XML]] として XHTML 文書を扱う時には、 [CODE(XML)[[[ID]]]] 型の[[属性]]だけを[[素片識別子]]に使える値として扱います。 [4] [未知要素型] 利用者エージェントが認知していない[[要素型]]の[[要素]]が現れたら、 その[[内容]]を処理しなければなりません。 [5] [未知属性] 利用者エージェントが認知していない属性が現れたら、 その[[属性指定]]は無視しなければなりません。 [6] [未知属性値] 利用者エージェントが認知していない[[属性値]]が現れたら、 既定値を使わなければなりません。 [7] [未知実体] XHTML 1.0 仕様書で定義されておらず、 かつ[[実体宣言]]が読まれていない[[一般実体]]が[[参照]]された場合、 そのままの[[実体参照]]を構成する文字列 (例: [SAMP(XHTML)[&ent;]]) として処理するべきです ([[should]])。 [8] [表示不能文字] [[文字]]又は[[文字実体参照]]を利用者エージェントが認知しているものの[[表示]]出来ない時は、 それと同じ意味のほかの [[rendering]] をしてもかまいません ([[may]]) し、 又は通常の rendering が行われなかったことが自明なようにしなければなりません ([[must]])。 [11] >>8 後半の must が前半の may の時にも適用されるのかよく分からん... [9] [空白の処理] >[[空白]]は次の規則に従って取り扱います。 [[XML]] 仕様書では次の文字が空白文字として定義されています。 - [CODE(char)[[[SPACE]]]] ([CODE(XML)[ ]]) - [CODE(char)[HORIZONTAL TABULATION]] ([CODE(XML)[ ]]) - [CODE(char)[CARRIAGE RETURN]] ([CODE(XML)[ ]]) - [CODE(char)[LINE FEED]] ([CODE(XML)[ ]]) [DEL[ > [INS[(XHTML 1.0 FE にのみ存在:)]] > XHTML 利用者エージェントは加えて次の文字を空白として扱わなければなりません。 - [CODE(char)[Form feed]] ([CODE(XML)[ ]]) - [CODE(char)[Zero-width space]] ([CODE(XML)[​]]) > [CODE(XML)[[[xml]]:[[space]]]] 属性が [CODE(XML)[[[preserve]]]] に設定されている要素では、利用者エージェントは全ての空白文字を触らずに残しておかなければなりません (must)。 (例外として、先頭と最後尾の空白文字は削除するべき ([[should]]) です。) それ以外では、空白は次の規則に従って処理します。 ]DEL] [DEL[ > [INS[m12n にのみ存在:]] > 利用者エージェントは XML 処理系から受け取ったデータ中の空白文字を次のように処理しなければなりません (must)。 ]DEL] [DEL[ > [INS[(XHTML 1.0 FE 及び m12n に存在:)]] - [[ブロック要素]]を囲む全ての空白は削除するべき (should) です。 - [[注釈]]は完全に削除し、空白の取扱いには影響しません。 注釈のいずれかの1つの空白文字は2つの空白文字として扱います。 [INS[なぜ?]] ]DEL] [DEL[ - [CODE(XML)[xml:space]] 属性が [CODE(XML)[preserve]] に設定されている時は、 空白文字は保持しなければなりません (must)。 よって、ブロック中の [CODE(char)[LINE FEED]] 文字は変換してはなりません (must)。 - [CODE(XML)[xml:space]] 属性が [CODE(XML)[preserve]] に設定されていない時には、 -- ブロック要素の内側の先頭と最後尾の空白は削除しなければなりません (must)。 -- [CODE(char)[LINE FEED]] 文字は --- [CODE(char)[SPACE]] 文字 --- [CODE(char)[ZERO WIDTH SPACE]] 文字 ([CODE(XML)[​]]) --- 文字なし (つまり削除) -- のいずれかに変換しなければなりません。 結果文字の選択は利用者エージェント依存で、 [CODE(char)[LINE FEED]] 文字の前後にある文字の用字形の[[特性]]により決まります。 -- [CODE(char)[LINE FEED]] 文字を含まない空白文字の連続は、 単一の [CODE(char)[SPACE]] 文字に減らさなければなりません (must)。 -- [CODE(char)[LINE FEED]] 文字を含む空白文字の連続は、 単一の [CODE(char)[LINE FEED]] 文字の場合と同様に減らさなければなりません (must)。 ]DEL] [DEL[ > [INS[(XHTML 1.0 FE に存在:)]] - ブロック要素の内側の先頭と最後尾の空白は削除しなければなりません (must)。 - ブロック要素中の改行文字は1つの[[間隔]]に変換しなければなりません (must)。 (例外として、 [CODE(XML)[xml:space]] 属性が [CODE(XML)[preserve]] の時をのぞきます。 - 空白文字の連続は減らして単一の空白文字としなければなりません (must)。 (例外として、 [CODE(XML)[xml:space]] 属性が [CODE(XML)[preserve]] の時をのぞきます。 - [[rendering]] に当たって、利用者エージェントは内容が書かれている[[言語]]について適当な方法で内容を rendering するべきです (should)。主[[用字系]]が[[ラテン文字]]である言語では、 [[ASCII]] 間隔文字は典型的に文法的語境界と写植的空白の両方を符号化するのに使います。 [[Nagari]] に関連する用字形 (例えば[[梵字]]や[[タイ文字]]など) では、文法的境界は [CODE(char)[[[ZWSP]]]] 文字で符号化されるかもしれませんが、 rendering 出力では典型的には写植的空白として表現されません。 [[アラブ文字]]系用字系を使う言語では空白を間隔文字を使って符号化しますが、 「内部」の文法的境界を区切るのに [CODE(char)[ZWSP]] 文字も使うかもしれません。 [WEAK[(アラビア語の単語は英語的視点ではよく複数の語を符号化しているように見えます。例えば [SAMP[kitAbuhurn]] = [SAMP[kitAbu‐hum]] = [SAMP[book them]] = [SAMP[their book]]。)]] そして[[漢字]]を使う言語では典型的にはこのような区切りも写植的空白もこの方法では符号化しません。 ]DEL] [INS[ > [INS[(XHTML 1.0 SE にのみ存在:)]] >[[XML処理系]]は異なりシステムの行末符号を1つの [CODE(char)[LINE FEED]] 文字に[[正規化]]し、これが[[応用]]に渡されます。 >利用者エージェントは空白文字の処理についての CSS 2 の定義を使わなければなりません ([[must]])。 なお、 CSS 2 勧告は非ラテン文字集合における空白の取り扱いについての問題に陽に触れていないのに注意して下さい。 これは将来の版の CSS では触れられることでしょう。 そのときにはこの参照も更新されることでしょう。 ]INS] (中略) [DEL[ > [INS[(m12n にのみ存在:)]] > 注意 (''参考''): [CODE(char)[LINE FEED]] 文字をどう変換するかの決定に於いて、利用者エージェントは次の場合を考慮するべきです (should)。 ここで [CODE(char)[LINE FEED]] の両側の文字の用字系が置換の選択を決定します。 (句読点など) ''共通''用字系は、反対側の用字系と同じものとして扱います。 - [CODE(char)[LINE FEED]] の前後の文字が [CODE(char)[SPACE]] を語分離子に使っている用字系に属する場合は、 [CODE(char)[LINE FEED]] 文字は1つの [CODE(char)[SPACE]] 文字に変換するべきです (should)。 このような用字形の例: ラテン文字, [[ギリシャ文字]], [[キリル文字]] - [CODE(char)[LINE FEED]] 文字の前後の文字が[[表意文字]]系用字系あるいは表記系で語分離子がないものに属しているなら、 [CODE(char)[LINE FEED]] は文字なしに変換するべきです (should)。 このような用字系や表記系の例: [[中文]], [[日本語]] - [CODE(char)[LINE FEED]] 文字の前後の文字が非表意文字系用字系で語分離子が無いものに属しているなら、 [CODE(char)[LINE FEED]] は [CODE(char)[ZERO WIDTH SPACE]] 文字 ([CODE(XML)[​]] に変換するか、 又は文字なしに変換するべきです (should)。 このような用字系の例: タイ文字, [[クメール文字]] - 以上の条件がいずれも真でない場合は、 [CODE(char)[LINE FEED]] 文字は1つの [CODE(char)[SPACE]] 文字に変換するべきです (should)。 ]DEL] [12] >>9 XHTML 1.0 3rd edition とか出るんですかね? そうでなくても [[errata]] に記載くらいされるのかな? - [13] >>9 で [CODE(char)[FORM FEED]] があったのに消されたのは、そもそも XML では [CODE(char)[[[FF]]]] は扱えないからでしょう。 ([[XML1.1]] では[[数値文字参照]]としては扱えるようになりそうな気配ですが。) * 適合 RDFa 利用者エージェント ** 仕様書 - [14] [CITE@en[RDFa in XHTML: Syntax and Processing]] ([TIME[2008-10-14 00:17:32 +09:00]] 版) ** 要件 [16] [DFN[[RUBYB[適合利用者エージェント]@en[conforming user agent]]]]には次の2要件が課されています。 - [15] [[RDFa]] 仕様書で[[必須]]とされた[[機能]]すべてに対応しなければ[['''なりません''']]。 - [17] [[XHTML m12n 1.1]] [[XHTML族利用者エージェント]]でなければ[['''なりません''']]。 ** 関連 [19] [[適合RDFa処理器]]という[[クラス]]が別途定義されています。 ** メモ [18] あいかわらず「必須とされたすべての機能」などという曖昧な要件を課しています。