web-dev-qa-db-ja.com

HTMLのCDATAとは何ですか?

JavaScriptタグとHTML内でのCDATAの使用は何ですか?

<script type="text/javascript"> 
// <![CDATA[

// ]]>
</script> 
162
SexyMF

XML文書内のすべてのテキストは、パーサーによって解析されます。

ただし、CDATAセクション内のテキストはパーサーによって無視されます。

CDATA 未解析)文字データ

CDATAという用語は、XMLパーサーによって解析されるべきではないテキストデータについて使用されます。

「<」や「&」などの文字は、XML要素では無効です。

「<」は、パーサーが新しい要素の開始として解釈するため、エラーを生成します。

「&」は、パーサーが文字エンティティの開始として解釈するため、エラーを生成します。

JavaScriptコードなどの一部のテキストには、多くの「<」または「&」文字が含まれています。エラーを回避するために、スクリプトコードをCDATAとして定義できます。

CDATAセクション内のすべては、パーサーによって無視されます。

CDATAセクションは「<![CDATA[」で始まり、「]]>」で終わります

プログラム出力でのCDATAの使用

HTMLパーサーはCDATAの開始マーカーと終了マーカーを認識せず、&lt;タグ内の<script>などのHTMLエンティティ参照も認識しないため、XHTMLドキュメントのCDATAセクションは、ドキュメントをHTMLとしてレンダリングする場合、Webブラウザーによって異なる方法で解析される傾向があります。これにより、Webブラウザーでレンダリングの問題が発生する可能性があり、信頼できないソースからのデータを表示するために使用すると、2種類のパーサーがCDATAセクションの終了位置に同意しないため、クロスサイトスクリプティングの脆弱性が生じる可能性があります。

---(SGMLの簡単なチュートリアル

また、 CDATAのウィキペディアエントリ を参照してください。

119
Ahsan Rathod

CDATAはHTMLではまったく意味がありません。

CDATAは、通常は#PCDATA-解析された文字データであるタグのコンテンツを設定するXML構成体であり、代わりに#CDATA、つまり解析されていない文字データとして解釈されます。 XHTMLでのみ有効で有効です。

<および&の解析を回避するために、scriptタグで使用されます。 HTMLでは、scriptはすでに#CDATAであるため、HTMLではこれは必要ありません。

82
Delan Azabani

http://en.wikipedia.org/wiki/CDATA から:

Webページスクリプトで小なり記号(<)とアンパサンド(&)を使用し、それらをエスケープすることを忘れずにスタイルを小さくできると便利なので、CDATAマーカーを使用するのが一般的ですXHTMLドキュメントのインラインおよび要素のテキスト。ただし、CDATAマーカーを認識しないHTMLパーサーでもドキュメントを解析できるように、このJavaScriptの例のように、CDATAマーカーは通常コメントアウトされています。

<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
16
user823959

移植性の向上を期待して、HTMLとXHTMLの共通サブセットを記述する方法

HTMLでは、<script>は、</script>が現れるまですべてをエスケープする魔法です。

だからあなたは書くことができます:

<script>x = '<br/>';

<br/>はタグと見なされません。

これが、次のような文字列の理由です。

x = '</scripts>'

次のようにエスケープする必要があります。

x = '</scri' + 'pts>'

参照: document.write()で書き込むときに<script>タグを分割する理由

しかし、XML(したがって、XMLの「サブセット」であるXHTML HTMLとは異なり )には、その魔法がありません。<br/>はタグと見なされます。

<![CDATA[はXHTMLの言い方です:

次の]]>までタグを解析せず、すべて文字列とみなします

//が追加され、CDATAがHTMLでも適切に機能するようになりました。

HTMLでは、<![CDATA[は魔法ではないので、JavaScriptによって実行されます。したがって、//を使用してコメント化します。

XHTMLは//も参照しますが、問題のない空のコメント行としてそれを観察します。

//

それは言った:

  • 準拠ブラウザは、ドキュメントが最初のDoctype <!DOCTYPE html> vs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">からHTMLまたはXHTMLであるかどうかを認識する必要があります
  • 準拠ウェブサイトは準拠ブラウザに依存し、単一の有効なscript構文でdoctypeを調整できます

しかし、それはインターネットの黄金律に違反しています。

サードパーティを信用しないでください。

CDATAはObsoleteです。

CDATAセクションはHTML内で使用しないでください。 XMLでのみ機能します。

したがって、HTML 5では使用しないでください。

https://developer.mozilla.org/en-US/docs/Web/API/CDATASection#Specifications

Screenshot from MDN

6
Daniel De León

CDATAは、ドキュメントの文字セットからの一連の文字であり、文字エンティティを含めることができます。ユーザーエージェントは、属性値を次のように解釈する必要があります。文字エンティティを文字に置き換え、

改行を無視し、

各キャリッジリターンまたはタブを単一のスペースに置き換えます。

4
Tushar Ahirrao