xhtmlを検証するにはどうすればよいですか?
XHTML を検証する方法とは、ドキュメントが「XML 構文」と「宣言された DTD またはスキーマ」という 2 つのルール層に準拠しているかを確認することを意味します。XHTML 1.0 は HTML 4.01 を XML で再定式化したものであるため、XHTML 1.0 Strict で <a target="_blank"> が使用されている場合のように、ドキュメントが「整形式(well-formed)」であっても「無効(invalid)」である可能性があります。
XHTML の検証では、ドキュメントが次の 2 つのルール層に同時に準拠しているかをチェックします:
- XML 構文規則: タグが正しくネストされているか、属性が引用符で囲まれているか、すべての要素(
<br />などの空要素を含む)が必ず閉じられているか、ルート要素が単一であるか、宣言されたエンコーディングが一貫しているか、など。 - DTD ルールまたは宣言されたスキーマ: どのような要素と属性が存在し、どのようなコンテキストで出現し、どのような値が許可されるか。ここでは、XHTML 1.0 (Strict, Transitional, Frameset)、XHTML 1.1、XHTML Basic、および XHTML Modularization の古典的な DTD を指します。
ドキュメントは整形式の XML であっても、依然として無効である場合があります。たとえば、XHTML 1.0 Strict で <a target="_blank"> を使用した場合、構文は完璧ですが、その DTD に target 属性は存在しません。この「整形式(well-formed)」と「有効(valid)」の区別は、エラーが発生した際にその理由が理解できず、混乱を招く最大の原因となります。
また、XHTML 1.0 は W3C によって定義された XML による HTML 4.01 の再定式化であることを覚えておくと便利です。今日におけるその実用的な価値は 2 つあります。1 つは、依然として application/xhtml+xml または text/html として提供されているレガシープロジェクトに役立つこと、もう 1 つは、クリーンなマークアップを書くための精神的な規律として役立つことです。XHTML の検証方法に関する完全な規範的コンテキストについては、W3C の XHTML 1.0 仕様 が一次ソースとなります。
おすすめのバリデータ(および使い分け)
唯一の「正しい」バリデータというものは存在しません。選択は、フラグメント、本番ページ、サイト全体、または既に XHTML5 であるドキュメントのどれを検証するかによって異なります。
| ツール | 検証内容 | 最適な用途 | 主な制限 |
|---|---|---|---|
| W3C Markup Validation Service (validator.w3.org) | XHTML 1.0/1.1, HTML4, HTML5 | URL、ファイル、または直接貼り付けによる単発の検証 | 最新の “Nu Html Checker” は HTML5 を優先するため、古い DTD は手動選択が必要 |
| Nu Html Checker (vnu) | HTML5 および XHTML5 | 新規プロジェクト、ローカル検証、CI への組み込み | XHTML 1.x の古典的な DTD は検証不可 |
| ローカルバリデータ (vnu.jar, tidy) | 設定による | 自動化、プリコミット、パイプライン | Java またはバイナリのインストールが必要。初期設定の手間 |
| xmllint | XML の整形式および DTD/XSD に対する検証 | 純粋な XML 層のチェック | スキーマ以外の HTML 固有のルールは認識しない |
| ブラウザ拡張機能 / IDE | ライブマークアップ | コーディング中の即時フィードバック | エンジンが古かったり不完全な場合が多い |
W3C Markup Validation Service
XHTML をどう検証すべきか迷う人にとって、依然として出発点となるツールです。URI による検証、ファイルアップロードによる検証、直接入力による検証の 3 つのモードをサポートしています。従来の XHTML の場合、ポイントは Document Type ドロップダウンにあります。ドキュメントが DOCTYPE を介して独自の DTD を宣言している場合、バリデータはそれを尊重します。そうでない場合は、手動で指定する必要があります。
関連: — 簡単な操作で計画を立てるためのウィジェットを無料で利用できます.
多くの人が気づいていない詳細として、最新の W3C バリデータは Nu Html Checker に依存しており、HTML5 と XHTML5 は理解しますが、古い DTD の優先順位は低くなっています。XHTML 1.0 Strict でも動作しますが、結果が期待した DTD を反映しているか、あるいは緩い解釈になっていないかを確認することをお勧めします。
Nu Html Checker (vnu)
これは W3C 自体が内部で使用しているバリデータです。Web サービス、JAR 実行ファイル、Docker イメージとして提供されています。最大の利点は、ローカルおよび継続的統合 (CI) で実行できることであり、これは大規模なサイトを維持する場合に不可欠です。application/xhtml+xml として提供される XHTML の場合、vnu は寛容な HTML バリデータが見逃すようなネストや属性のエラーを検出します。
xmllint
純粋な XML 層が懸念される場合(たとえば XSLT テンプレートから XHTML を生成している場合など)は、xmllint が不可欠です。--noout --valid documento.xhtml を使用すると、参照された DTD に対する整形式性と有効性をチェックします。高速でスクリプト化可能であり、ネットワークに依存しません。
一見の価値があります: — Accesibilidad gestionada: 人間性の見直しと自動化の組み合わせ.
エディタでの検証
VS Code の拡張機能、IDE プラグイン、コマンドラインツールは即時のフィードバックを提供します。便利ではありますが、標準規格への追従が遅れる傾向があります。これらは第一線の防御策として使用し、唯一の検証手段にしないでください。
XHTML を段階的に検証する方法
1. DOCTYPE とエンコーディングを正しく宣言する
DOCTYPE によって、どのルールに基づいて検証されるかが決まります。XHTML 1.0 Strict の場合は以下の通りです:
<!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="es" lang="es">
<head>
<meta http-equiv="Content-Type"
content="application/xhtml+xml; charset=UTF-8" />
<title>有効な例</title>
</head>
ここでの典型的なエラーは 2 つあります。xmlns 属性(XHTML では必須)を忘れることと、meta で宣言したエンコーディングが実際のファイルと一致していないことです。バリデータは両方を検出しますが、後者は文字化けとしてのみ現れることがあります。
2. 有効性の前に整形式(well-formedness)を確認する
DTD と格闘する前に、XML が整形式であることを確認してください。xmllint --noout archivo.xhtml を実行すれば数秒でわかります。ここで失敗した場合、どの DTD バリデータも役に立ちません。まずタグを閉じ、ネストを修正し、エンティティ (&, <, >) をエスケープしてください。
3. DTD に対して検証する
整形式のドキュメントができたら、W3C Validator または vnu に通します。エラーの数だけでなく、種類を確認してください。単一のネストエラーが二次的なエラーを連鎖的に発生させることがあり、最初のエラーを修正すればそれらは消えます。
4. ホームページだけでなくサイト全体を検証する
よくある間違いは、メインページだけを検証して他も問題ないと思い込むことです。テンプレート、コンポーネント、動的に生成されるページで無効なマークアップが導入されることがよくあります。自動化しましょう。スクリプトで主要な URL を巡回し、各レスポンスに対して vnu を実行します。
関連: — La certificación que acredita tu experiencia en accesibilidad.
5. 検証をワークフローに統合する
手動検証はスケールしません。パイプライン(プリコミットフック、ビルドタスク、または CI ジョブ)に検証ステップを追加し、新しいエラーが出た場合に失敗するようにします。これにより、無効なマークアップが本番環境に到達することを防げます。
エラーの解釈:繰り返し遭遇するエラー
- “end tag for X omitted, but OMITTED end tags are not allowed”: 閉じタグのない
<li >,<p>,<td >などで典型的です。XHTML ではすべてを閉じなければなりません。 - “there is no attribute X”: その属性は DTD に存在しません。よくある例:一部の要素での
targetやname、XHTML 1.0 でのdata-*属性(古典的な DTD には存在しません)。 - “element X undefined”: DTD が想定していない要素が使用されています。HTML5 のマークアップを XHTML 1.0 ドキュメントにコピーした際によく起こります。
- “character data is not allowed here”: DTD が要素のみを期待している場所にテキストコンテンツがあるか、エスケープされていない
&がある場合です。 - “reference to entity X for which no system identifier could be generated”: XML で定義されていない名前付き HTML エンティティ(例:宣言なしの
)です。純粋な XHTML では を使用するか、エンティティを宣言してください。
XHTML 検証の黄金律は、**「上から下へ修正すること」**です。最初のエラーが原因であり、それに続くエラーはその結果であることがほとんどです。
XHTML5:ルールを変えるニュアンス
HTML5 構文に従ってシリアル化された XHTML である XHTML5 を提供する場合、ルールが変わります。もはや DTD は存在しません。適合性は WHATWG HTML 仕様および W3C の HTML 仕様 で定義されています。正しいバリデータは、古典的な DTD バリデータではなく Nu Html Checker です。
XHTML の検証方法に関して注意すべき実用的な違いは以下の通りです:
data-*属性は XHTML5 では有効ですが、XHTML 1.0 では無効です。- DOCTYPE は
<!DOCTYPE html>に簡略化されます。 - 検証は HTML5 の conformance checker に対して行われます。これはある点では許容的ですが、別の点(特定の廃止された要素の使用など)ではより厳格です。
XHTML 1.0 と XHTML5 の選択は単なる技術的な問題ではありません。新規プロジェクトであれば、vnu 検証を備えた XHTML5 が賢明な道です。DTD を使用したレガシーシステムを保守している場合は、XHTML 1.0 に留まり、その DTD に対して検証してください。
検証とアクセシビリティ:2 つの異なる層
有効なドキュメントであれば自動的にアクセシブルになると信じるのはよくある間違いです。そうではありません。検証は構文とスキーマの適合性をチェックしますが、アクセシビリティは、認識、操作性、支援技術との互換性をカバーする W3C の WCAG に基づいて評価されます。
とはいえ、実際的な重複はあります。無効なマークアップは通常、不完全な構造(不適切にネストされた見出し、壊れたリスト、正しいラベルのないフォーム)を意味し、これはアクセシビリティに影響します。XHTML などのドキュメントを検証する賢明な戦略は、「まず検証して構造的なノイズを取り除き」、**「その後に axe, Lighthouse, または手動レビューなどのツールでアクセシビリティを監査する」**ことです。検証は必要条件ですが、十分条件ではありません。
XHTML 検証時のよくある間違い
XHTML の検証方法を学ぶ際は、以下の間違いを避けてください:
- ホームページのみを検証する: 問題のあるマークアップは通常、内部テンプレートにあります。
- エンコーディングを無視する: 不適切に宣言された
charsetは幽霊のようなエラー(ghost errors)を生成します。 - 整形式と有効を混同する: これらは異なるレイヤーです。順番に解決してください。
- 間違ったバリデータを使用する: XHTML5 には vnu、XHTML 1.x には DTD バリデータを使用してください。
- 最初のエラーを読まずに連鎖的なエラーを修正する: 時間を浪費し、症状だけを直そうとすることになります。
- 自動化しない: 手動検証は 2 回目のスプリントまで持ちません。
- 「有効 = アクセシブル」と想定する: これらは目的の異なる別の標準です。
Key Takeaways
- XHTML の検証には、XML の整形式(well-formedness)と宣言された DTD またはスキーマへの準拠という 2 つの層があります。
- W3C Markup Validation Service と Nu Html Checker (vnu) が XHTML 検証の参照ツールであり、
xmllintは純粋な XML 層をカバーします。 - XHTML 1.0/1.1 には DTD 検証を使用し、XHTML5 には vnu を使用して古典的な DTD を忘れてください。
- エラーは上から下へ修正してください。最初のエラーが後続のエラーを引き起こしていることが一般的です。
- パイプラインで検証を自動化してください。手動レビューはスケールしません。
- 「有効」は「アクセシブル」と同義ではありません。これらは同等ではなく、補完的な標準です。
Sources & Further Reading
- XHTML — Wikipedia: Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages which mirrors or extends versions of the widely used HyperText Markup…
- XHTML Basic — Wikipedia: XHTML Basic is an XML-based markup language designed for simple user agents with limited computing power, such as early mobile phones, PDAs, pagers, and set-top…
Frequently Asked Questions
整形式の XHTML と有効な XHTML の違いは何ですか?
整形式のドキュメントは、閉じタグ、正しいネスト、引用符で囲まれた属性などの XML 構文規則に従っています。有効なドキュメントは、さらに、宣言した DTD またはスキーマを尊重し、そのコンテキストで許可された要素と属性のみを使用しています。たとえば、XHTML 1.0 Strict に存在しない属性を使用した場合、整形式ではあっても無効なドキュメントになります。
2024 年になっても XHTML を検証することに意味はありますか?
はい、2 つの理由があります。第一に、多くのレガシープロジェクトが引き続き XHTML を提供しており、XML モードで動作しなくなるのを防ぐために有効な状態を維持する必要があるためです。第二に、検証はアクセシビリティやメンテナンスに影響する構造的エラーを検出する規律となるためです。新規プロジェクトでは HTML5 や XHTML5 が使われるでしょうが、検証する習慣には依然として価値があります。
XHTML5 にはどのバリデータを使用すべきですか?
Nu Html Checker (vnu) です。Web サービス、実行可能 JAR、Docker イメージとして利用可能です。これは最新の W3C Markup Validation Service が使用しているものと同じエンジンであり、HTML5 構文とその XHTML シリアル化を理解します。XHTML5 に古典的な DTD バリデータを使用しないでください。data-* 属性やその他の HTML5 機能を認識できません。
なぜ W3C のバリデータで理解できないエラーが出るのですか?
多くのエラーが前のエラーの結果として発生しているからです。不適切なネストは数十個の二次的なメッセージを生成することがあります。正しい戦略は、最初のエラーを修正し、再度検証し、それを繰り返すことです。また、バリデータは DOCTYPE で宣言された DTD を適用するため、その DTD が想定と異なる場合、エラーが恣意的に見えることがあります。
コマンドラインから XHTML を検証できますか?
はい。 CLI 経由で XHTML を検証する方法が気になる場合は、「xmllint —noout —valid archive.xhtml」を使用して、DTD に対して整形式性と妥当性をチェックします。 HTML5/XHTML5 の場合、「vnu.jar archive.xhtml」は同じことを行います。どちらのオプションも、手動検証が拡張できないビルド スクリプト、コミット前フック、または継続的統合ジョブに統合するのに最適です。
有効な XHTML サイトは自動的にアクセシブルになりますか?
いいえ。検証では構文とスキーマの適合性がチェックされます。アクセシビリティは、コントラスト、キーボード ナビゲーション、代替テキスト、意味構造などの側面をカバーする WCAG に対して評価されます。文書は完全に有効であっても、依然としてアクセシブルではない場合があります。最初に検証してからアクセシビリティを監査します。これらは補完的なレイヤーです。
よくある質問
XHTML の形式と XHTML の違いは何ですか?
整形式のドキュメントは、閉じたタグ、正しいネスト、引用符で囲まれた属性などの XML の構文規則に従います。さらに、有効なドキュメントは、そのコンテキストで許可されている要素と属性のみを使用して、宣言する DTD またはスキーマを尊重します。たとえば、XHTML 1.0 Strict に存在しない属性を使用した場合など、形式は整っていても無効なドキュメントが存在する可能性があります。
¿2024 年の XHTML は有効ですか?
はい、理由は 2 つあります。まず、多くの従来のプロジェクトは引き続き XHTML を提供しており、XML モードで中断されないように有効な状態を維持する必要があります。 2 番目に、検証は、アクセシビリティとメンテナンスに影響を与える構造エラーを検出する規律です。新しいプロジェクトの場合、おそらく HTML5 または XHTML5 が使用されますが、検証する習慣は依然として価値があります。
XHTML5 の有効性について質問しますか?
Nu Html Checker (vnu)。Web サービス、実行可能な JAR および Docker イメージとして利用できます。これは、最新の W3C Markup Validation Service が使用し、HTML5 構文とその XHTML シリアル化を理解するのと同じエンジンです。 XHTML5 には従来の DTD バリデータを使用しないでください。データ属性やその他の HTML5 機能は認識されません。
W3C でエラーが発生しましたか?
なぜなら、多くのエラーは以前のエラーの結果であるからです。ネストが正しくないと、多数の二次メッセージが生成される可能性があります。正しい戦略は、最初のエラーを修正し、再度検証し、それを繰り返すことです。また、バリデーターが DOCTYPE で宣言された DTD を適用することもあります。その DTD が期待したものと異なる場合、エラーは恣意的なものであるように見えます。
¿コマンドのラインで XHTML を検証しますか?
はい。 CLI 経由で XHTML を検証する方法を知りたい場合は、xmllint --noout --valid archive.xhtml が DTD に対して整形式性と有効性をチェックします。 HTML5/XHTML5 の場合、vnu.jar archive.xhtml は同じことを行います。どちらのオプションも、手動検証が拡張できないビルド スクリプト、コミット前フック、または継続的統合ジョブに統合するのに最適です。
XHTML は自動でアクセス可能ですか?
いいえ。検証では構文とスキーマの適合性がチェックされます。アクセシビリティは、コントラスト、キーボード ナビゲーション、代替テキスト、意味構造などの側面をカバーする WCAG に対して評価されます。文書は完全に有効であっても、依然としてアクセスできない場合があります。最初に検証してからアクセシビリティを監査します。これらは補完的なレイヤーです。
¿Cumplir WCAG はどのような罪を犯しますか?
48 時間で IA が WCAG に最高の瞬間をもたらす