Smart Communication Design Company
ホーム > ナレッジ > Blog > Web標準Blog > 2008年2月 > 非整形式なXHTMLのエラー表示

非整形式なXHTMLのエラー表示

2008年2月25日
フロントエンド・エンジニア 矢倉

タグを閉じ忘れたり、引用符で属性値を囲み忘れたXML文書は、非整形式のエラーとなります。さて、このようなエラーを持つXHTML文書をXMLとしてブラウザに処理させた場合、どのように表示されるのでしょうか。スクリーンショットと共に解説したいと思います。

非整形式のXHTMLソースは、次のようなものとなっています(エラー部分は強調表示しています)。

<?xml version="1.0"?>
<!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>
<title>An Ill-formed XHTML Document</title>
</head>
<body>
<h1>非整形式 (XMLエラー) なXHTML文書のサンプル</h1>
<div>
<p>段落です。</p>
<p>この段落は終了タグを書き忘れています。
</div>
<p>この段落はきちんと終了タグを記述しています。</p>
</body>
</html>

この文書をapplication/xhtml+xmlで送出し、Firefox、Opera、Safari(Windows版)で表示させてみました。

Firefox

Firefoxでは、この文書が整形式のエラーであることを伝え、またエラーを起こしたと考えられるタグを表示しています。また、どこでXMLエラーが発生したのか、その位置を行番号と共に伝えています。

なお、エラーが起こった位置の表示は等幅フォントで表示されていますが、タブでインデントを行うとその位置がずれてしまうようです。

Opera

OperaもFirefoxと同じく、エラーの種類、エラーの起こった位置が表示されます。
しかし、エラーが起こったタグ前後のソースも見ることができ、またエラーに関連するタグがハイライトされています。簡単なチェックツールとして利用できそうです。

さて、特徴的なのがエラーページにある「ページをHTML文書として処理する」というリンクです。これをクリックすると、ページをXMLとして処理するのではなく、HTMLとして処理します。text/htmlでXHTMLを公開したときと同じ処理を行っているものと考えられます。

エラーは最初に表示されてしまいますが、このような「迂回路」が用意されていることはユーザーにとってマイナスではないでしょう。

Safari

Safariのエラー表示はFirefoxやOperaと趣向の異なるものとなっています。エラーの種類や発生位置は他の二つと同じく表示されますが、その後に、エラーが起こった部分まで文書を表示しているのです。

ページのデザインによって、エラーを表示しているボックスが広告やヘッダに見えてしまう可能性はありますが、面白いですね。

XHTML文書はXMLですから、たとえtext/htmlで処理させる場合においても、整形式を維持する必要があります。しかし残念ながら、そのようなXHTML文書はとても少ないものとなっています。W3CのHTML Validatorなどで間違いがないかしっかり検証し、XMLとして処理できる文書を公開してゆくことが重要なのです。