0

まず、私が理解しているように、XHTML ドキュメントでは数値エンティティを使用する方が適切"です"

次に、RSS XML フィードの場合、どのエンティティ タイプが正しいですか? 名前付きか数値か? 数値だと思いますが、検索で両方の例を参照してください。

第三に、インライン JavaScript 内のエンティティについて正しいものは次のうちどれですか?

<span onmouseover="tooltip_on( '<strong>Tooltip inside a span</strong>
<br />Lorem ipsum dolor sit amet.<span>Lorem ipsum <code>dolor sit</code>
amet, consectetur adipisicing elit.</span>' );"
onmouseout="tooltip_off();">tooltip inside a span</span>

または... ( 内のタグJS functionは名前付きエンティティに変換されます):

<span onmouseover="tooltip_on( '&lt;strong&gt;Tooltip inside a
span&lt;/strong&gt;&lt;br /&gt;Lorem ipsum dolor sit amet.
&lt;span&gt;Lorem ipsum &lt;code&gt;dolor sit&lt;/code&gt;
amet, consectetur adipisicing elit.&lt;/span&gt;' );"
onmouseout="tooltip_off();">tooltip inside a span</span>

編集1:

以下の素晴らしい回答ですが、質問の言い方を変えるべきだったかもしれません。

Web サイトと RSS フィードに使用する JavaScript の質問は無視します。

(1) すべての数値エンティティ、(2) すべての名前付きエンティティ、(3) 両方の混合: &amp; &quot; &lt; &gt;、残りは数値。

私のサイトはすでに&amp; &quot; &lt; &gt; &#039;深く埋め込まれておりhtmlspecialchars()、かなりの数の場所で使用されているため、3 に傾いています。

編集2:

以下のすべての良い答え、皆さん。残念ながら、1つだけを選択する必要がありました。

4

3 に答える 3

0
  • <&およびが区切り文字である"属性値では、それぞれ、およびを使用します。"&lt;&amp;&quot;

これらは XML で定義済みのエンティティであるため、ドキュメント タイプを読み取るかどうかに関係なく、任意のパーサーで機能します。これらは、HTML で定義された通常のエンティティでもあります。

数字参照も同様に有効ですが、読みにくいです。

  • >テキスト コンテンツの場合: 使用する&gt;かそのままにしておきます。

>]]>通常、エスケープは必要ありません。属性値では常に完全に合法であり、シーケンスの一部を形成しない限り、テキスト コンテンツでは合法です。(これは、XML 仕様のあいまいで無意味な部分であり、時には無視されます。) 安全を期し、この規則を覚える必要がないようにするために、テキスト コンテンツでは常にエスケープすることを好むかもしれません。(それが Canonical XML の機能です。)

数字参照も同様に有効ですが、読みにくいです。

  • '属性値で'は、 は区切り文字です: を使用します&#39;

&apos;XML 定義済みエンティティは HTML4 標準によって技術的に定義されていないため (現在のすべてのブラウザーで動作しますが) 、ここでは数字の参照が最も正確です。このエンティティを追加するのが遅いのは、常に"属性値の区切り記号として使用するという一般的な慣行を反映しています。

  • 非 ASCII 文字: そのまま含める

UTF-8 を使用して宣言している限り、文字をそのまま吐き出すことができます。より小さく、より読みやすい結果。

  • 非 ASCII 文字 (Unicode なし): 数字参照を使用

なんらかの理由で UTF-8 を使用できない場合 (boooo!!!)、&#xE9;HTML エンティティよりも文字参照を使用してください。とにかく、HTML エンティティは Unicode 文字セットのごく一部しかカバーしていません。すべての IMO にそれらを使用することもできます。&#x...Unicode 文字を 'U+xxxx' 16 進コードで参照するのが伝統的であるため、個人的には非 ASCII 文字に 16 進エスケープを使用することを好みます。

XHTML ドキュメントでは HTML エンティティを使用することは非常に有効ですが、これは、パーサーが DTD などの外部エンティティをフェッチして、エンティティが何であるかを判断する必要があることを意味します。定義済みのエンティティと文字参照に固執する場合は、文書内のテキストを含むエンティティ参照を見つける能力を失うことなく、軽量の非外部エンティティを含む XML パーサーを使用できます。

いつものように、さまざまなバージョンの RSS が潜んでいるため、RSS の状況は不透明です。RSS 0.91 には、古い HTML 3.2 標準のエンティティを含む DTD がありましたが、DTD の以前の公式の SYSTEM URL は無効になりました。(厄介で不必要なインターネット荒らし行為で、Netscape の所有者である AOL は、数年前に再編成でリンクを壊しました。それだけでなく、彼らは、ホームページや他のアドレスにアクセスしようとすると、302 でホームページにアクセスします。そのため、DTD を期待しているクライアントに不適切に作成された HTML ページを提供します. 悪い AOL、302-404 は非常に偽物です.)

RSS 2.0 には公式の DTD がまったくありません。いずれにせよ、事前定義されたエンティティと数字参照を優先して使用して、HTML エンティティを避けてください。

onmouseover="tooltip_on( '<strong>Tool...

どのドキュメント タイプでも使用できません。<属性値が無効です。

onmouseover="tooltip_on( '&lt;strong&gt;Tooltip...

有効ですが、判読できません。私は、David の Unobtrusive JavaScript の提案を支持します。

于 2009-11-14T19:02:24.177 に答える
0

まず、私が理解しているように、XHTML ドキュメントでは " の代わりに " などの数値エンティティを使用する方が適切ですよね?

ではない正確に。

気になる点は2つ。

これは単純な古い XHTML になるのでしょうか、それとも HTML 互換の XHTML になるのでしょうか?

HTMLが&apos;ないため、HTML 互換の XHTML では使用できません (ただし、' で区切られた属性値でのみ使用する必要があるため、代わりに " を使用してください。

これは、DTD を認識しない XML パーサーで処理されますか?

その場合、一般的な XML エンティティ (quot、apos、gt、lt、amp) のみが認識されます。

一方、名前付きエンティティははるかに読みやすいです。実際の文字 (UTF-8 経由など) が最も読みやすいです。

次に、RSS XML フィードの場合、どのエンティティ タイプが正しいですか?

必要に応じて quot、gt、lt、amp を使用し、その他の場所では実際の文字を使用します。

第三に、インライン JavaScript 内のエンティティについて正しいものは次のうちどれですか?

固有のイベント属性の代わりに控えめな JSを使用することをお勧めします。

とは言っても、ルールは他の HTML 属性と同じです —&属性値を区切るために使用した文字は、エンティティで表す必要があるだけです。

于 2009-11-14T16:22:03.423 に答える