4

はい、グーグルで検索しましたが、驚くほど紛らわしい答えが得られました。

あるページには< > & "、(X)HTML の予約文字はこれだけであると書かれています。間違いなく、これは理にかなっています。

このページでは < > & " '、(X)HTML の予約文字について説明しています。少し混乱しますが、これも理にかなっています。

そして、改行なしスペース ( ) はすべて (X)HTML の予約文字であると書かれているこのページが表示されます。これはまったく意味がなく、私の混乱をかなり助長しています。< > & " © ° £&nbsp

実際にこのことを知っている知識のある人は、(X)HTML の予約文字が実際にどれであるかを明確にすることができますか?

編集<pre>:また、タグでラップされている場合、コード内のすべての予約文字をエスケープする必要がありますか? それともこの3つだけです< > &か??

4

5 に答える 5

9

XHTML 1.0 仕様は、http : //www.w3.org/TR/2002/REC-xhtml1-20020801/#xhtml で次のように述べています。

XHTML 1.0 [...] は、3 つの HTML 4 ドキュメント タイプを XML 1.0 [XML] のアプリケーションとして再構築したものです。

XML 1.0 仕様は、http : //www.w3.org/TR/2008/REC-xml-20081126/#syntax で次のように述べています。

文字データとマークアップ: テキストは、文字データとマークアップが混在して構成されます。[...] アンパサンド文字 ( &) と左山括弧 ( <) は、マークアップの区切り記号として使用する場合、またはコメント、処理命令、または CDATA セクション内で使用する場合を除き、リテラル形式で表示してはなりません。他の場所で必要な場合は、数字参照または文字列 " &amp;" と " &lt;" をそれぞれ使用してエスケープする必要があります。右山かっこ ( >) は、文字列 " " を使用して表すことができ、互換性のために、コンテンツ内の文字列 " " に表示される場合は " " または文字参照&gt;を使用してエスケープする必要があります (その文字列が末尾をマークしていない場合)。 CDATA セクションの。&gt;]]>

これは、XHTML ドキュメントのテキスト部分を記述する場合、&、<、および > をエスケープする必要があることを意味します。

もっと多くのことをエスケープすることができます。ウムラウト u の場合。ドキュメントがたとえば UTF-8 でエンコードされていることを示し、代わりにバイト シーケンス 0xc3bc を記述して、同じウムラウト u を取得することもできます。

ドキュメントの要素部分 (col. "tags") を記述する場合、さまざまな規則があります。", ' や、コメント、CDATA などに関する多くの規則に注意する必要があります。また、要素名や属性名に使用できる文字の規則もあります。XML 仕様で調べることができますが、要素と属性の名前には、文字、数字、および "-" を使用してください。"_" は使用しないでください。属性値については、& と (引用スタイルに応じて) ' または " をエスケープする必要があります。

多くのライブラリの 1 つを使用して XML / XHTML ドキュメントを記述する場合、他の誰かが既にこれを処理しているため、ライブラリにテキストまたは要素を書き込むように指示するだけで済みます。すべてのエスケープはバックグラウンドで行われます。&

于 2012-04-29T11:21:24.217 に答える
8

エスケープする必要<があるだけです。属性内、または(属性の値に使用する引用スタイルに応じて) もエスケープする必要があります。& "'

<a href="#" onclick="here you can use ' safely"></a>
<a href="#" onclick='here you can use " safely'></a>
于 2012-04-29T10:45:36.227 に答える
1

「(X)HTML」と書くことで、(少なくとも) 2 つの異なる質問をすることになります。

HTML の規則により、"HTML" は HTML 4.01 までのすべての HTML バージョンを意味し、"<" と "&" のみが予約されています。ルールはやや複雑です。タグ、エンティティ参照、および文字参照での構文上の使用を除いて、文字どおりに表示しないでください。しかし、形式的な規則によって、それらは文字通り "A & B" や "A < B" のような文脈で現れるかもしれません (しかしA&B、形式的に間違っているので、そうなるでしょうA<B)。

XML に基づく XHTML ルールは、やや厳密で単純です。「<」と「&」は無条件に予約されています。

ASCII 引用符 " および ASCII アポストロフィ ' は予約されていません。ただし、引用符で囲まれた属性値に、引用符として使用される文字を文字どおり含めてはならないという非常に特殊な意味を除きます。 'foo' では、文字列 foo に ' 自体を含めてはなりません。

于 2012-04-29T13:35:00.553 に答える
0

文字< > & "は XML 形式で予約されています。

  • これは、タグ ( ) を定義するためにのみ < および > 文字を使用できることを意味します<mytag></mytag>

  • 二重引用符 (") は、属性の値を定義するために使用されます ( <mytag attribute="value" />)

  • アンパサンド (&) は、エンティティを記述するために&amp;使用されます (実際にアンパサンドを書きたい場合は、 NOT を使用します&)。また、XML 文書に url を記述するときは、:&amp;だけでなくを使用する必要があります。- いいね!&www.aaa.com?a=1&b=2www.aaa.com?a=1&amp;b=2

XHTML は XML に基づいているため、私が書いたことは XHTML に当てはまります。

© ° £- これらは予約文字ではありません。これらは、XML 用ではなく、XHTML 用に特別に定義されたエンティティです。

XML では、単純に©. XHMTL では、単純に © と書くことも、entity&copy;や numeric entity を使用することもできます&00A9;

于 2012-04-29T10:58:19.463 に答える