ここ 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 属性の両方を指定