クライアントで解析エラーをキャッチすることは可能かもしれませんが、実際には間違った問題を解決しています。
これはあなたが要求したものではないことは承知していますが、他のマークアップ言語を埋め込むなど、真に XHTML 固有のことを行っている場合を除き、ページを application/xhtml+xml ではなく text/html として提供する必要があります。XHTMLであっても。これを text/html として提供することで、発生している問題を回避し、ページを IE でも動作させることができます。どのパーサーが使用されるかを決定するのは doctype 宣言ではなく、MIME タイプであることに注意してください。
とはいえ、ページを XHTML として解析することが本当に必要な場合は、この種のエラーをサーバーで処理することをお勧めします。DOM を構築してページを生成し、それをシリアル化した結果を送信します。それができない場合は、現在行っているようにページを生成することから始めますが、まだクライアントに送信しないでください。生成した XHTML をサーバー側で検証用 XHTML パーサー (または少なくとも汎用 XML パーサー) で解析します。エラーが発生した場合は、必要なエラー ページを表示します。それ以外の場合は、解析された DOM をシリアル化し、それをクライアントに送信します。
要約すると、application/xhtml+xml を使用するための基本的な規則は次のとおりです。
- しないでください。
- (上級ユーザー向け) ページが text/html として提供されている場合に機能しないことを行っていることが証明されていない限り、使用しないでください。これは、XHTMl ドキュメントのごく一部に当てはまります。
- ページを application/xhtml+xml として提供する必要がある場合は、有効性を保証する何らかの方法でページを生成してください。
- 自分が何をしているのか本当にわかっていない限り、ユーザー入力を含むページに application/xhtml+xml を使用しないでください。
XHTML は、HTML 4 の再定式化に他の言語を埋め込む機能を加えたものに過ぎないことを思い出してください。埋め込みを使用しない場合は、異なるがほぼ完全に互換性のある構文を持つ HTML 4 になります。XHTML ドキュメントの圧倒的多数は text/html として提供されるため、ブラウザーでは HTML 4 のように扱われます。