HTML5에서 <! [CDATA […]]>를 사용해야합니까?


80

<![CDATA[...]]>XHTML5에서 섹션을 사용할 수 있다고 확신 하지만 HTML5는 어떻습니까?

답변:


56

CDATA구조는 XML에 대한의 모든 정말로 HTML에 대한 없습니다.

사람들 script은 특정 특수 문자를 이스케이프 할 필요가 없기 때문에 때때로 태그 내부의 HTML에서 사용합니다 . 그러나 결코 요구 사항은 아닙니다 (HTML 4 또는 5의 경우).

편집 : 우리는 당신이로 XHTML을 보내는 여부를 통해 2002 년부터 웜의 정말 곰팡이가 핀 오래된 캔을 열 곳이다 text/html또는 application/xhtml+xml당신이있는 거에 "가정"과 같은 :-)


1
나는 HTML (XHTML이 아님)을 보내고 있는데 그것을 원합니다. 답변에 대한 Thxs :)
Darryl Hein

모든 꺾쇠 괄호를 고칠 필요가 없도록 태그 CDATA내부에 사용할 수 있습니까 pre?
gman

1
정확하지 않습니다. CDATA는 SGML 및 XML 하위 집합 모두에 사용됩니다. 그래서 그것은 HTML과 XHTML 모두를위한 것입니다.
Johan Boulé

24

동일한 페이지에서 @pst 링크 :

scriptstyle태그에 대한 요소 별 파싱 , XHTML-HTML 호환성에 대한 지침 : "이스케이프 처리 된 다음 코드는 스크립트 및 스타일 요소가 이전 브라우저를 포함하여 XHTML 및 HTML 모두에서 작동하도록 보장 할 수 있습니다."

최대 이전 버전과의 호환성 :

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

더 간단한 버전, "훨씬 오래된 브라우저"와 호환되지 않는 종류 :

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

따라서 CDATAHTML5에서 사용할 수 있으며 XHTML-HTML 호환성 에 대한 지침 에서 권장 됩니다 . 이는 개발 중에 XML로 생성 및 파싱되지만 브라우저 간 호환성 향상을 위해 HTML5로 제공되는 다중 언어 HTML / XML / XHTML 페이지에 유용합니다 . Polyglot 페이지에는 장점 이 있으며 XML / XHTML5를 디버그하는 것이 훨씬 더 쉽기 때문에 직접 사용했습니다. 예를 들어 Google 크롬은 잘못된 XML / XHTML5 (예 : 문자 이스케이프 포함)에 대해 오류를 발생 시키는 반면, HTML5로 제공된 동일한 페이지는 "작동 가능"(일명 "작동 가능")합니다.


12
당신은 약 20 세의 브라우저를 지원하려면 스크립트 태그 내 의견이 필요, 그 NSCA 모자이크 또는 Netscape 하나입니다 ...
안티 Haapala

15

사양은이 문제를 해결하는 것 같습니다. 스크립트 및 스타일 태그는 "원시 텍스트 요소"로 간주됩니다. CDATA는 필요하지 않거나 허용되지 않습니다. CDATA는 "외부 콘텐츠"(예 : MathML 및 SVG)에만 사용됩니다. 스크립트 태그에 들어갈 수있는 것에 대한 몇 가지 제한 var x = '</script>'사항이 있습니다. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions


5

아마도 http://wiki.whatwg.org/wiki/HTML_vs._XHTML을 참조하십시오.

<! [CDATA [...]]>는 가짜 댓글입니다.

HTML에서는 <script>이미 보호되어 있습니다 a = "<" + "/script>". 이것이 브라우저 혼동을 피하기 위해 때때로로 작성되어야하는 이유 입니다. 코드는 HTML의 CDATA 외부 에서 유효합니다 .


2
끝 태그를 이스케이프하는 가장 좋은 방법은 "<\ / script>"입니다. 일부 파서가 "</ script>"가 아닌 "</"만 검사한다는 것을 읽었습니다.
marcus

@marcus 당신의 말이 맞고 그것이이 </맥락에서 유일한 특별한 토큰입니다. 내 지식이 시간이 지남에 따라 업데이트되었으므로 주제에 대한 나의 새로운 답변은 동의합니다 ;-) 나는 이것을 업데이트 할 것입니다. 즉, </scr+ ipt>분할 이있는 것이 일반 적이고 작동하지 않는 주류 브라우저를
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.