web-dev-qa-db-ja.com

HTML5で<![CDATA [...]]>を使用すべきですか?

私はかなり確信しています <![CDATA[...]]>セクションはXHTML5で使用できますが、HTML5はどうですか?

78
Darryl Hein

CDATA構造は実際にはHTML用ではなく、XML用です。

特定の特殊文字をエスケープする必要がなくなるため、人々は時々scriptタグ内のHTMLでそれらを使用します。ただし、それは決して要件ではありません(HTML 4または5のいずれか)。

編集:ここで、XHTMLをtext/htmlまたはapplication/xhtml+xmlあなたが「想定されている」ように:-)

56
hollsk

同じページから @ pstリンク先

scriptおよびstyleタグの要素固有の解析XHTML-HTML互換性のガイダンス:「エスケープを使用した次のコードにより、スクリプト要素とスタイル要素がXHTMLと古いブラウザを含むHTMLの両方で機能することを保証できます。」

最大の後方互換性:

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

より単純なバージョンで、「はるかに古いブラウザ」とは互換性がありません。

<script>//<![CDATA[
   ...
//]]></script>

したがって、CDATAはHTML5で使用でき、XHTMLとHTMLの互換性に関するガイダンスで推奨されています。これは polyglotHTML/XML/XHTMLページ に便利です。開発中にXMLとして作成および解析されますが、HTML5として機能しますブラウザ間の互換性を向上させるため。 ポリグロットページには利点があります 。XML/XHTML5をデバッグする方がはるかに簡単なので、自分でこれを使用しました。たとえば、Google Chromeは無効なXML/XHTML5(たとえば、 character escaping を含む)に対してエラーをスローしますが、HTML5として提供される同じページは「機能する」または「機能する」と考えられます。

23
Joel Purra

仕様はこの問題を解決しているようです。スクリプトおよびスタイルタグは「生のテキスト要素」と見なされます。 CDATAは必要ありませんし、許可されません。 CDATAは「外部コンテンツ」、つまりMathMLおよびSVGでのみ使用されます。スクリプトタグに含めることができるものにはいくつかの制限があることに注意してください。基本的に、var x = '</script>'があります。タグを閉じて、答えに記載されているpstのように分割する必要があるためです。 http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions

14
rmarscher

おそらく: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

<![CDATA [...]]>は偽のコメントです。

HTMLでは、<script>はすでに保護されています。これが、a = "<" + "/script>"、ブラウザの混乱を避けるため。コードは、HTMLのCDATAで有効outsideであることに注意してください。

5
user166390