2

W3C Validatorが、一部の URL のアンパサンドに関するエラーを発生させています。例えば:

<link href="min/?f=static/css/reset.css,static/css/main5.css&2" rel="stylesheet">

ただし、 HTML5 仕様によると、バリデーターは間違っています。

あいまいなアンパサンドは、U+0026 アンパサンド文字 (&) の後に 1 つ以上の英数字 ASCII 文字が続き、その後に U+003B セミコロン文字 (;)が続きます。文字参照セクション。

このサイトは同じ結論に達し、現在仕様を正しく実装しているバリデーターはないと述べています。

これについて決定的なものはありますか?

4

2 に答える 2

1

まず、HTML 5 の仕様は常に変化しているため、バリデーターとこの回答の有効性が損なわれることが予想されます。

そうは言っても、「あいまいなアンパサンド」を定義する引用を繰り返します。

あいまいなアンパサンドは、U+0026 アンパサンド文字 (&) の後に 1 つ以上の英数字 ASCII 文字が続き、その後に U+003B セミコロン文字 (;) が続きます。文字参照セクション。

つまり、名前付きの文字参照のように見えますが、仕様には不明です。仕様は、そのようなあいまいなアンパサンドが発生してはならない場合を定義する用語を定義したため、次のようになります。

  • textarea, title: エスケープ可能な生のテキスト要素には、テキストと文字の参照を含めることができますが、テキストにあいまいなアンパサンドを含めてはなりません。
  • MathML、SVG 要素: … ただし、テキストに文字 U+003C LESS-THAN SIGN (<) またはあいまいなアンパサンドを含めてはなりません。
  • 通常の空でない HTML 要素: … ただし、テキストに文字 U+003C LESS-THAN SIGN (<) またはあいまいなアンパサンドを含めてはなりません。
  • 属性値: … テキストにあいまいなアンパサンドを含めることはできないという追加の制限があります。

箇条書きも仕様から引用されています。ここで省略されている完全な文については、「あいまいなアンパサンド」の仕様を検索してください。

scriptただし、HTML 5 仕様では、生のテキスト要素 (およびstyleタグ) であいまいなアンパサンドを使用できます。HTML 5 で「あいまいなアンパサンド」の定義が提供され、ブラウザが「あいまいなアンパサンド」にほとんどの場合対処できるからといって、それが一般的な使用に有効であるとは限りません。

そのため、 「あいまいなアンパサンド」をエスケープして、およびタグ以外で明確にします。scriptstyle

あなたのケースに戻りましょう。アンパサンドの後に英数字とセミコロンが続いていないため、「あいまいなアンパサンド」はありません。アンパサンドの後にはそのシーケンスが続かないため、アンパサンドは文字どおりに解釈され、そのまま保持されると想定する必要があります。したがって、アンパサンドは、HTML 5 仕様に従って有効であると見なされる必要があります。

備考: 不安定な仕様の詳細に依存しているため、アンパサンドをエスケープすることをお勧めします。さらに、すべてのソフトウェアがアンパサンドが発生するたびに終了し、アンパサンドが発生するたびにエスケープするというより単純なルールに従うという仕様に従うとは思わないでしょう。

于 2013-09-05T19:11:19.050 に答える