目次
lang
と xml:lang
属性本付録は参考的。
本付録は XHTML 文書を既存の HTML ユーザエージェントでレンダリングできるように望む製作者のためのデザインガイドラインをまとめたものである。本勧告では HTML 適合ユーザエージェントが HTML 文書をどのように処理すべきかについては定義しないということに注意されたい。また、インターネット・メディア・タイプ text/html
の意味も定義しない。これらの定義については、おのおの [HTML4] と [RFC2854] を参照されたい。
処理命令はいくつかのユーザエージェントでは描画されることに注意すること。また、いくつかのユーザエージェントは XML 宣言を、その文書が HTML 以外の認識できない XML であることを意味すると解釈する。その結果、文書が予期したようにはレンダリングされないかもしれない。これらのタイプのレガシーなブラウザとの互換性のためには、処理命令や XML 宣言を避けることを望むかもしれない。しかしながら、文書に XML 宣言が含まれなければ、その文書はデフォルト符号化方法 UTF-8 か UTF-16 だけしか使えないということを覚えておかなければならない。
空要素の末尾の /
と >
の前にスペースを含めること。例えば、<br />
, <hr />
, <img src="karen.jpg" alt="Karen" />
。また、空要素のタグ・シンタックスには最小化を使うこと。例えば、XML で許されているが多くの既存のユーザエージェントで予想外の結果を与える <br></br>
の代わりに <br />
。
コンテントモデルが EMPTY
ではない要素で内容が空のもの(例えば、空のタイトルや空の段落)があっても、最小化形は使わない(例えば、<p />
は使わず <p> </p>
を使う)。
スタイルシートで lt;
や &
や ]]>
や --
を使うときは、外部スタイルシートを使うこと。スクリプトで lt;
や &
や ]]>
や --
を使うときは、外部スクリプトを使うこと。XML パーサはコメント内部を何もしないで取り除くことが許されていることに注意すること。そのため、歴史的実践である後方互換のための「コメント」内部の「隠蔽」されたスクリプトやスタイルシートは XML ベースのユーザエージェントでは働かないかもしれない。
属性値内での改行や複数の空白文字は避けること。これらはユーザエージェントで一致しない取り扱いを受ける。
文書の head
内で一つでも isindex
要素を使わないこと。isindex
要素は廃止予定であり、 input
要素が望ましい。
lang
と xml:lang
属性 (The lang
and xml:lang
Attributes)要素の言語を指定するときは lang
と xml:lang
の両方を使うこと。xml:lang
属性の値が優先する。
XML では、"foo"
という形の断片識別子で終わる URI-references [RFC2396] は、属性 name="foo"
を持った要素を参照するのではない;そうではなく、それらは、ID
型に定義された属性(例えば HTML 4 で定義された id
属性)を持つ要素を参照する。多くの既存の HTML クライアントはこのような形で ID
型属性をサポートしていない、そのため前方互換性と後方互換性を最大化するためには、識別する値は両方の方法で提供して良い(例えば、<a id="foo" name="foo">...</a>
)。
更に、ID
型属性の合法的な値のセットは CDATA
型のそれよりもだいぶ少ないので、name
属性の型は NMTOKEN
に変更された。この属性は ID
型か Name
production in XML 1.0 Section 2.3, production 5 のいずれかと同じ値しか持てないように制限されている。不幸にも、この制限は XHTML 1.0 DTD では表現できない。この変更のために、既存の HTML 文書を変換するときには注意しなければならない。これらの属性の値は文書中で一意でなければならず、妥当でなければならず、万一変換時にこれらの値が変更されるようならば、これらの断片識別子の参照(内部的でも外部的でも)は、更新されなければならない。
XML 1.0 Section 2.3, production 5 の合法的な値の集合は HTML 4 で定義されている ID
と NAME
型で使うことが許されているものよりもだいぶ大きいことに注意すること。断片識別子を後方互換になるように定義するときは、パターン [A-Za-z][A-Za-z0-9:_.-]*
にマッチする文字列を使うべきである。より詳細な情報は [HTML4] を参照されたい。
最終的には、 XHTML 1.0 では a
, applet
, form
, frame
, iframe
, img
, map
要素の name
属性を廃止予定としており、後継バージョンでは XHTML から取り除かれることになる。
歴史的には、HTML 文書の文字符号化方法は HTTP Content-Type ヘッダの charset パラメタを通してウェッブ・サーバで指定されていた。もしくは、文書自身の meta
要素で指定されていた。XML 文書では、文書の文字符号化方法は XML 宣言で指定される(例えば、<?xml version="1.0" encoding="EUC-JP"?>
)。文書に対して特定の文字符号化方法を過搬的に提示するために、最善のアプローチはウェッブ・サーバが正しいヘッダを提供することを保障することである。もしこれが可能でないならば、文字符号化方法をセットしたい文書に、 XML 宣言の符号化方法宣言と、 meta
http-equive ステートメント(例えば、<meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />
)の両方を、明示的に含めなければならない。XHTML 適合ユーザエージェントでは、 XML 宣言の符号化方法宣言の値が優先する。
注:もし文書が meta http-equiv ステートメントでの文字符号化方法を含んでいなければならないならば、その文書は HTTP サーバやユーザエージェントによって常にそのステートメントで定義されたインターネット・メディア・タイプとして解釈されなければならない。もし文書が複数のメディア・タイプで提供されるならば、 HTTP サーバはその文書の符号化方法をセットするために使われなければならない。
いくつかの HTML ユーザエージェントは、ブーリアン(ブール代数)属性が完全形(非最小化形)で現れると、 XML 1.0 で要求されたとおりには解釈することができない。この問題は HTML 4 準拠のユーザエージェントには影響しないことに注意すること。次の属性が関係する:compact
, nowrap
, ismap
, declare
, noshade
, checked
,
disabled
, readonly
, multiple
, selected
, noresize
, defer
.
Document Object Model level 1 勧告 [DOM] は、 XML と HTML 4 に対するドキュメント・オブジェクト・モデルのインタフェースを定義する。HTML 4 文書のオブジェクト・モデルは、 HTML の要素と属性の名前が大文字で返されるように指定されている。XML 文書のオブジェクト・モデルは、要素と属性の名前がその指定された文字種で返されるように指定されている。XHTML 1.0 では要素と属性は小文字で指定されている。この明確な差異には、二つの方法で取り組むことができる:
text/html
で配布されるXHTML 文書にアクセスするユーザエージェントは、HTML DOM を使うことが可能であり、要素と属性の名前がそのインタフェースからは大文字で返されることを期待することができる。text/xml
, application/xml
, or application/xhtml+xml
として配布される XHTML 文書にアクセスするユーザエージェントは、 XML DOM も使うことができる。要素と属性は小文字で返される。また、いくつかの XHTML の要素はオブジェクト・ツリーに現れても現れなくても良い。というのも、それらの要素が内容モデルではオプショナルだからである(例えば、 table
要素内の tbody
要素)。HTML 4 では、この現象はいくつかの要素が開始タグと終了タグの両方を省略可能な最小化(SGML 機能)が許されていることから発生する。これは XML では許されない。XHTML では、文書製作者に無関係な要素を挿入するように要求するのではなく、それらの要素をオプショナルにした。ユーザエージェントは、これに従って適合する必要がある。この話題に関する更に詳細な情報は [DOM2] を参照。SGML および XML では、アンパーサンド文字 ("&") は実体参照(例えば、登録商標記号 "®" に対する ®)の開始を宣言する。不幸にも、多くのユーザエージェントは、 HTML 文書内の不正なアンパーサンド文字を何もしないで無視してきた -実体参照に見えないアンパーサンドはリテラル・アンパーサンドとして取り扱うのである。XML ベースのユーザエージェントは、この不正な利用を許容せず、アンパーサンドを不正に利用している文書は全て「妥当」ではなくなり、その帰結として本仕様書にも適合しない。文書が、歴史的 HTML ユーザエージェントと XML ベースのユーザエージェントと互換であることを保障するために、リテラル文字として扱われる、文書内で使われるアンパーサンドはそれ自身実体参照で表現されなければならない(例えば、 "&
")。例えば、 a
要素の href
属性がパラメタをとる CGI スクリプトを参照するとき、それは http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
ではなく、 http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
として表現されなければならない。
Cascading Style Sheets level 2 Recommendation [CSS2] は HTML や XML 文書の構文解析木(パース・ツリー)に適用するスタイル・プロパティを定義している。構文解析における差異は、利用されるセレクタに応じて、異なる視覚的、音声的結果を生成する。次のヒントは、両方のメディア・タイプの変更がなく提供されている文書に対して、この効果を減らすことになる:
HTML 4 と XHTML では、style
要素は文書内スタイル規則を定義するために使うことができる。XML では、 XML スタイル宣言がスタイル規則を定義するために使われる。この慣習に互換であるために、style
要素は断片識別子に id
属性を使うようにすべきであり、XML スタイルシート宣言はこの断片を参照する。例:
<?xml-stylesheet href="W3C-REC.css" type="text/css"?> <?xml-stylesheet href="#internalStyle" type="text/css"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>内部スタイルシートの例</title> <style type="text/css" id="internalStyle"> code { color: green; font-family: monospace; font-weight: bold; } </style> </head> <body> <p> これは我々の <code>internal stylesheet</code> を使っているテキストである。 </p> </body> </html>
HTML 文書で合法的ないくつかの文字は、 XML 文書では非合法的である。例えば、 HTML ではフォームフィード文字(訳注:新規ページの表示要求) (U+000C) は空白文字として取り扱われ、 XHTML では XML の文字定義によれば非合法的である。
命名文字参照 '
(アポストロフィー、U+0027)は XML 1.0 で導入されたが、 HTML では現れていない。従って、HTML 4 ユーザエージェントで想定されたように動作するためには、製作者は '
の代わりに '
を使うべきである。
SEO | [PR] ����!�����u���O �����z�[���y�[�W�J�� �������C�u���� | ||