時悠帖・五差路

まだ若いつもりでいたがついに老いを隠せなくなった爺の 時悠生活雑記

XHTML 1.1 and 1.0

ここ LOVELOG は XHTML1.0 Transitionalです。最近は、特にブログで、XHTML のページを見掛けます。

そこで、主に HTML4.01 Strict で作っている 私の maruyosi's Home でも XHTML1.1 のページを作ってみました。

いや、実は、100kBを超えた HTMLページを分割し、XHTMLに修正、EUC-JP を UTF-8 にしただけなんですけど。

W3C Markup Validation でチェックしました。URL指定でも、ファイルアップロードでもエラーは出ません。

しかし、Another HTML-lint gateway では、ファイルアップロードではエラーは出ませんが、URL指定では重要度1と5のエラー(少ない数字は軽く、9 になるほど致命的)が各1個出ます。

サーバの問題のようです。

・「HTTPレスポンスヘッダに指定されているメディアタイプ text/html は XHTML1.1 には指定しないようにしましょう(重要度1)」

・「HTTPレスポンスヘッダに charset 指定が含まれていません(重要度5)」

XHTML1.1 を維持したままエラーをなくす解決策としては、

1. Content-Type: xhtml+xml; charset=UTF-8 となるように、サーバの設定を変える。(自宅サーバならできそうですね。)

サーバの設定を変えることができないなら、

2. 次の記述を追加する。

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

ただし 1.1 の場合、本来は http-equiv を記述すべきではなく、サーバの設定によって HTTP レスポンスヘッダに含める方法が推奨されるようです。

また、application/xhtml+xml だと表示できないブラウザがあるようです。

XHTML1.1 を諦めて XHTML1.0 とし、

3. 次の記述を追加する。

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

で、いいのかな?

そもそも、XHTML1.1, UTF-8 のページを HTML4.01, EUC-JP のページと混在させることに問題があるのかもしれません。また、なぜ、厳しい XHTML1.1 にしなければならないのか、という必要性もあります。それ以前に、エラーがなければそれでいいのか、中身をもっと充実させなさい、ということを言われそうです。

まあ、何ごともお勉強ということで。

--

(XHTML1.1)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">

<head>

(XHTML1.0)

<?xml version="1.0" encoding="UTF-8"?>

<!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>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<meta http-equiv="Content-Script-Type" content="text/javascript" />

ついでに

<a> には name 属性と id 属性の両方を指定