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