5 に答える
<
およびは XML で事前定義されたエンティティ&
の一部であり、ページをまたはとして検証するときにエスケープする必要があります。XML
XHTML
<
<
(未満)に置き換える必要があります。
&
&
(アンパサンド)に置き換える必要があります。
ただし、JavaScript でこれらの文字を使用する場合は、(代わりに) スクリプトを<![CDATA[]]>
セクションで囲むことができます。これにより、パーサーはコードをマークアップとして解釈しないように指示され、検証エラーも発生しなくなります。
<![CDATA[]]>
次のようなタグで Javascript をラップしてみてください。
<script>
//<![CDATA[
// Javascript goes here.
//]]>
</script>
また、関心の分離を検討する必要があります。ロジックをビューの外に移動してみてください。JavaScript が HTML ページにある場合は、別のファイルから含めるようにしてください。
ウィキペディアから:
ハイパーテキスト マークアップ言語 (HTML)、カスケーディング スタイル シート (CSS)、および JavaScript (JS) は、Web ページおよび Web サイトの開発に使用される補完的な言語です。HTML は主に Web ページ コンテンツの構成に使用され、CSS はコンテンツ プレゼンテーション スタイルの定義に使用され、JS はコンテンツがユーザーとどのように対話し、動作するかを定義します。ただし、歴史的にはそうではありませんでした。CSS が導入される前は、HTML はセマンティクスとスタイルを定義する両方の役割を果たしていました。
XML 規則により、「アンパサンド文字 (&) と左山かっこ (<) は、マークアップ区切り文字として、またはコメント、処理命令、または CDATA セクション内で使用される場合を除き、リテラル形式で表示してはなりません。他の場所で必要な場合は、数字参照または文字列 " &
" と " <
" をそれぞれ使用してエスケープする必要があります。」したがって、「&&」は のように記述し&&
ます。
ただし、これが機能するのは、ドキュメントが XML コンテンツ タイプ (HTTP ヘッダーなど) で送信されたため、「実際の XHTML」として処理される場合のみContent-Type: application/xhtml+xml
です。そうすることは、古いバージョンの IE がそれを詰まらせることを意味し、最新のブラウザーは、整形式エラーが含まれている場合、ドキュメントのレンダリングをまったく拒否します。人々は通常それを行いません – 誰かがそうするように指示したので XHTML を使用し、ドキュメントは HTML ドキュメント タイプで送信されます。これは、script
要素のコンテンツが異なる方法で処理されることを意味します。これは、バリデータを満たす修正が改ページを作成する理由を説明しています。
XHTML 1.0 仕様の (悪名高い)付録 Cには、「スクリプトで < または & または ]]> または -- を使用する場合は、外部スクリプトを使用する」と記載されています。これは、XHTML を使用する必要がある場合の簡単な解決策です。スクリプトを外部ファイルに入れて、 で「呼び出す」だけ<script src="foo.js"></script>
です。
- XHTML ではなく、HTML を使用してください (または、どうしても XHTML を使用する場合は、HTML として解析できる XHTML の書き方に関するガイドラインを参照してください)。
- どうやってそのエラーを生成したのかわかりません。もう少しコンテキストが役立ちます。
最初のエラーについては、XHTML から HTML5 への切り替えを検討してください。XHTML を使用する理由はほとんどありません。これを使って:
<!DOCTYPE html>
W3C バリデーターはクライアント側のコード用ですが、サーバー側のコードを検証しようとしているように見えるため、PHP タグです。検証のためにレンダリングされたコードを送信すると、2 番目のエラーはなくなります。レンダリングされたコードは、ブラウザーの [ソースの表示] の下に表示されるコードです。すでにどこかでオンラインになっている場合は、URL を指定できます。