XHTML 5のお話し。

テーマ

HTML 5のXML応用言語版である、XHTML 5についてのメモです。

XHTMLは支持されなかったのか?

W3CがHTML 5の策定を受容れた理由として、XHTMLが現場に支持されていないと言う現状を突きつけられ、その反省として現場の声を積極的に聞き入れる方針に転換したと言うのがあります。

では、XHTMLは本当に支持されていなかったのでしょうか。

支持されていなかったのはXHTMLではなくXMLだった。

正確に言うなら、ウェブ文書のXML化が、一部のHTMLマニア(HTMLオタクとも言う)以外には全くと言って良いほど支持されていなかったと言うのが実情でした。

寧ろXHTML 1.x自体は幅広く、いや、今日ではそれこそHTML 4.01よりも利用されております。

ですが、それらはほぼ全てが在来HTMLとしての利用しかされていなかったのです。

  • 但し、データ形式の分野では、XMLは幅広く使われておりますし、ウェブでもHTML以外の目的では様々な応用言語が考案され利用されております。文書形式としてのXMLだけが現場から否認されていただけなのです。

XHTML 1.0が採用されていた理由。

XHTMLがXMLとしてではないものの採用されてきた理由は、やはり文法に於ける例外が殆どないため、機械が処理し易かった事ではないでしょうか。

お恥ずかしい話ですが、制作者は在来HTMLで属性値を引用符で囲まなくても良い場合がどのような場合かを全く知りません。基本的な事であるにも拘らず、いちいち調べないと分からないし、今後も分かろうとも思ってさえいないのです。

何故なら、そんな面倒な例外事項に当て嵌まるかどうかを判断するくらいなら、一律に引用符で囲んだ方が遙かに簡単だからです(逆に囲んではいけない例など存在しません)。

この他、タグの省略などもいちいち覚えなければいけないものであり、それらの面倒な例外は、処理プログラムの作成にも影響を与えるものです。

こう言った面倒な例外が尽く排除された事で、ウェブプログラミングにも好都合だった。そのため、ウェブログやウィキ或いはCMSなどに於いても積極的に採用された理由だったのではないかと思うのです。

HTML 5ではXMLのクールさは否定されるのか?

それでは、HTML 5では、XHTMLが持つクールさ、すなわち文法上の例外事項が排除された文法は否定されるのでしょうか。

実は、HTML 5はSGMLのしがらみから解き放たれた事で、XML流のクールな記述が引続き利用出来るようになるのです。

それどころか、XHTMLで追加された記述、すなわちxmlns属性やxml:lang属性などもわざわざ消さなくてもHTML 5への移行が可能になっております。

  • 但し、在来HTMLでの例外も許されるので、文書を処理するプログラムを書く場合には注意が必要です。

XHTML 5と言う言語〜XML化されたHTML 5〜。

さて、XHTML 5とは、その名の通り、HTML 5のXML版です。

ベースとなるのがXMLであるため、XMLでのクールな文法がそのまま利用出来ます。

但し、HTML 5の仕様を準用する事としているため、従来のXHTML 1.0のように在来HTMLの代用として利用する事は絶対に許されません。

在来HTMLが必要な場面では、必ずXHTML 5を用いず、HTML 5にしなければならないのです。

XHTML 5文書にする必要があるのはどんな場合か。

正直なところ、XHTML 5にしなければならない場面は殆ど思い付きません。

XML応用言語の強みとされた他の応用言語の組み込みも、MathMLやSVGに限られるとは言え、HTML 5でも可能になっております。

制作者が思い付く"限られた条件"には以下のようなものがあります。

仕様にないXML応用言語を組込む場合

現状、HTML 5で組込める他XML応用言語はMathMLとSVGだけです。

  • もしかしたら、HTML 5文書に一般のXML構文の組み込みも認めるメカニズムを追加して来ないとも限りませんが。

それ以外のXML応用言語を組込む必要がある場合には、xmlns属性で言語の種類を判別出来る機構があるXML上でHTML 5を用いる、すなわちXHTML 5を用いなければならないでしょう。

Ajaxで用いるHTML文書を記述する場合

Ajax(アジャックス)ではプレインテキストとXML文書のみが扱えます。

XML文書であれば、受け取った文書をDOM形式で受け取れるため、簡単に要素の抽出などの加工が可能になります。

一方、プレインテキストの場合、生テキストで受け取らなければならないため、要素の抽出などが必要な場合には自分でテキストを解析して要素を切り出す必要があります。

在来のHTMLはXMLとして扱う事が出来ないため、プレインテキストとして取扱わなければならず、その場②jaxでの処理は大変面倒なものとなります。

でも、XHTML 5を用いれば、XMLなので、DOM処理が可能になり、簡単に要素の抽出などが可能になります。

HTML 5文書はそのままXHTML 5文書になるのか。

厳密に言えば、HTML 5文書とXHTML 5文書は別物となります。

HTMLとXMLの違いだけでなく、JAVAスクリプトが扱うDOMなどやその他ウェブブラウザのCSSの処理など、少なからぬ相違点があります。

ですが、以下の点に注意すれば、双方の相違点による動作の違いを吸収する事が可能になり、従って文書型宣言を<?xml?>宣言に書換えるだけでXHTML 5として取扱う事が可能になります。

HTML文書のマークアップ
  • <html>要素には xmlns="http://www.w3.org/1999/xhtml"属性を附与する
  • lang属性を伴う要素には、xml:lang属性を併記する
  • タグは全てXMLの文法に従った記述(空要素であっても終了タグを表わす斜線をタグの末尾に付けるなど)とする
  • タグの記述が省略可能な要素であっても、絶対に省略しない
  • <noscript>要素を用いない。初めからスクリプトを当てにしない文書にして、DOM処理で代替記述となる要素を削除する。
  • JAVAスクリプトやCSSは全て外部ファイルとする。已むを得ず文書内に記述する場合には、<script>要素ないし<style>要素の内容の一行目はコメントアウトした <![CDATA[、最後の一行はやはりコメントアウトした ]]> とする
  • <table>要素の直下に直接<tr>要素要素を記述しない。必ず<tbody>要素を間に入れる
JAVAスクリプト
  • DOM処理で要素名や属性名を評価する場合には、必ず toLowerCase() メソッドで小文字化してから評価する
CSS

XHTML 5文書の実例。

基本的にはHTML 5文書と大差ありません。

強いて言えば、XMLの文法に従った記述で、冒頭が文書型宣言ではなく<?xml?>宣言(UTF-8またはUTF-16でエンコードされている場合には不要)となっているくらいです。

<?xml version="1.0" encoding="shift_jis"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
    <title>XHTML 5の例。</title>
    </head>

<body>
    <article>
        <h1>XHTML 5について。</h1>
        <section>
            <h2>XHTML 5とはどんな言語か。</h2>
            <p><dfn>XHTML 5</dfn>とは、XML化されたHTML 5です。</p></section>
        </article>

    </body>
</html>

尚、HTML 5で有用とされる <meta charset""> 要素やlang属性はXHTML 5では無効ですが、書いてもエラーにはなりません。

最後に:制作者の場合。

制作者は基本的にHTML 5に移行しているのですが、ファイヤーフォックスなどXHTMLをXML応用言語として取扱える環境に対しては、XHTML 5文書として配信しております。

そうしなければならない理由は、ファイヤーフォックス 2.x以外には無いのですが、ファイヤーフォックス 2だけにXHTML 5として配信しようとするくらいなら、対応出来る全ての環境にそうしたって問題はないと判断した事に依ります。

こう言った事が簡単に出来るHTML 5は旧来の在来HTMLとXMLとの橋渡しとしても機能出来るのではないかと思っております。