ePub3 は中身のコンテンツを HTML5 でかつ XHTML (XML) で書くよう要請しています。いわゆる XHTML5 と呼ばれるものです。残念なことに、XHTML5 の書き方の説明が少ないです。そこで、XHTML5 の雛型の書き方を紹介します。
シリアライゼーションについて
HTML5 の特徴の一つに、DTD がなくなったことが挙げられます。DTD とは大雑把に言えば HTML や XHTML を「定義」するものです。HTML は SGML によって DTD を、XHTML は XML によって DTD を定義されていました。HTML5 では DTD がなくなり、DOM で定義されるようになりました。そして、この DOM を HTML として解釈する場合、「HTML シリアライゼーション」と呼びます。一方、XML として解釈する場合、「XML シリアライゼーション」と呼びます。
HTML シリアライゼーションされたものを HTML5、XML シリアライゼーションされたものを XHTML5 と呼びます。大部分において HTML5 と XHTML5 は同じですが、違いもあります。例えば、HTML5 では閉じタグを省略できるケースがありますが、XHTML5 では閉じタグが必須です。HTML5 では <img ...>
と書くところ、XHTML5 では <img .../>
と書きます。XHTML5 では名前空間を使うことができます。
HTML5 を書く者は、自分が「HTML5」で書くのか「XHTML5」で書くのか、ちゃんと区別しなくてはなりません。「HTML5」と「XHTML5」を一つのファイルに混在させることは出来ないからです。
HTML5 と XHTML5 の大まかな分け方
ファイルの先頭に XML 宣言
<?xml version="1.0" encoding="UTF-8"?>
が入っていたら XHTML5 です。入っていなければ HTML5 です。
HTML5 の雛型
先の説明は大雑把すぎるので、少し踏みこんで説明しましょう。
まず HTML5 は Content-Type に text/html
をセットしなければなりません。
そして、最小の HTML5 は下記の様になります:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>タイトル</title>
</head>
<body>
本文
</body>
</html>
DTD がなくなったことで、DOCTYPE がシンプルになったことに注目して下さい。また、meta
要素では charset
属性のみを設定する様になりました。
XHTML5 の雛型
XHTML5 は Content-Type に application/xhtml+xml
とセットしなければなりません。
そして、最小の XHTML5 は下記の様になります。
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<title>タイトル</title>
</head>
<body>
本文
</body>
</html>
さて、ここで互換性の問題。XHTML5 は新しい規格なので、W3C の Validator すら上記 XHTML5 のコードでは「正しい XHTML5」であると認識してくれません。解決策の一つに XHTML5 に DOCTYPE を付ける、というのがあります。幸いなことに、XHTML5 では DOCTYPE の宣言は必須ではない、言い換えると DOCTYPE を付けても良いことになっています。
もう一つ。日本語でテキストを書く場合、XHTML5 では html
要素に lang
属性も指定しないと日本語として認識しない ePub リーダーがあります。最新の HTML5 Last Call を読むと、XHTML5 でも lang
属性がオプションとして認められています (もちろん属性値は xml:lang
の値と同じにしなければなりません)。
以上二点を踏まえて、互換性の高い XHTML5 の雛型を書くと次の様になります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title>タイトル</title>
</head>
<body>
本文
</body>
</html>
謝辞
このエントリーのきっかけはEPUB3チュートリアルの「EPUB 3.0 への対応 — XHTML ファイルの修正」でした。「XHTML ファイルの修正」には XHTML5 の「互換性の高い雛型」が載っていて、私は DOCTYPE や lang 属性は要らないのではないか? と疑問に思ったのです。そこで、チュートリアルを書いたイースト株式会社の中の人とメールのやりとりをしました。
そして、どういう理由で「互換性の高い雛型」が出来たかを教えてもらったのでした。
教えてもらった後、同じ様なことで悩んでいる人が多いのではないかと思い、イーストさんに許可を求めたところ、心良く承知して下さったので、本エントリーを書くことができました。イーストさんに感謝致します。ありがとうございます。
0 件のコメント:
コメントを投稿