2010-01-08 3 views

답변

4

이것은 15 년 전의 HTML 2.0 브라우저를 지원하기위한 고풍스러운 기술입니다. 이러한 브라우저는태그와 <style> 태그에 대해 알지 못 했으므로 주석 태그 안에 내용이 숨겨져 있지 않으면 텍스트 내용으로 페이지에 뱉어내어 엉망진창을 만듭니다.

오늘 연습에는 전혀 목적이 없지만 잘라 내기 및 붙여 넣기 코딩과 Dreamweaver와 같은 저작 도구가 좋지 않아 계속 작동합니다.

XML로 제공되는 XHTML에서 에 주석 마크 업을 포함해서는 안됩니다. 그렇지 않으면 스크립트 또는 스타일 시트는 실제로 주석 일 뿐이며 완전히 무시됩니다.

일부 제작자는 XHTML의 스크립트 및 스타일 시트에 <![CDATA[ ... ]]> 섹션을 사용하지만 완전히 다른 이유로 사용합니다. 올바른 XML 것을 사용하지 않고 < 또는 & 문자를 포함하여 &lt; 또는 &amp;으로 이스케이프 처리 할 수 ​​있습니다. 코드를 읽기가 더 어렵게 만드는 것 외에도 스크립트와 스타일의 HTML 이탈은 레거시가 아닌 XML HTML 파서를 혼란스럽게합니다. HTML4에서 스크립트와 스타일 요소는 마법적이고 이스케이프없이 문자를 가질 수 있습니다 (한 시퀀스를 ' 요소가 끝나기 때문에 사용은 </입니다.를 들어

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

<style type="text/css">/* <![CDATA[ */ 
    ... 
/* ]]> */</style> 

: 당신은 XML이 아닌 HTML 파서에서 읽을하려는 문서에서 CDATA 섹션을 사용 할 때

, 당신은 CDATA 섹션 마크 업을 숨기기 위해 CSS 나 자바 스크립트 주석을 사용해야합니다 HTML 3.2에서 일반적인 구식 주석 처리가 적용된 경우 CSS 및 JS 구문 분석에서 예외가 발생하여 <!----> 시퀀스가 ​​눈에 띄지 않게 통과 할 수 있지만 <![CDATA[ 또는 ]]>은 CSS 또는 JavaScript에서 볼 수 없습니다. 파서를 구문 오류로 해석합니다.

하늘이 금지, 경우, HTML 2.0, 3.2 이상 XHTML 파서를 지원하는 데 필요한,이 끔찍한 혼란을 필요로 끝날 것 :

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

<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    ... 
/*]]>*/--></style> 

을 고맙게도이 결코 일어날되지 않습니다.

CSS 거의 결코 < 또는 & 문자를 사용할 필요가 없기 때문에 당신은 일반적으로 멀리 전혀 코멘트 나 CDATA의 cruft에로 얻을 수 있고, 자바 스크립트는 일반적으로 무해한 > 등의 비교보다 작음 개주 수 있으며, 논리의 ands 거꾸로 논리 연산을 수행합니다. CSS와 JavaScript는 < 또는 & 문자를 문자열 리터럴 (예 : '\x3C')에 넣을 때 기본 이스케이프를 제공합니다.

어떤 경우에도 스타일 및 스크립트의 상당 부분 (일반적으로 해당 문자를 사용하려는 경우)은 일반적으로 외부 링크 파일에 있어야만 문제가 발생합니다.

+0

명예! – sthg

+0

좋은 답변입니다! 나는 새로운 것을 배웠다. – Joel

2

스타일 태그를 인식하지 못하는 렌더링 엔진과의 하위 호환성을 위해 수행되었습니다. 주석에 스타일을 배치하면 엔진이 일반 텍스트로 렌더링하지 않게됩니다.

대다수의 클라이언트가 스타일을 올바르게 렌더링 할 수 있지만이 관행은 덜 중요합니다. 그러나 여전히 보편적입니다. 나는 일반적으로 내 자신의 코드에서 그것을 무시하지만, 그것은 개인적인 취향이다.

+0

브라우저 사용자가 평범한 HTML 페이지, CSS 없음 –

+1

을 볼 수 있음을 의미합니다. 브라우저가'style' 태그로 무엇을해야할지 모르는 경우 브라우저가 브라우저에 규칙을 표시하지 못하게됩니다. 사용자. – Joel

+0

브라우저가 스타일 태그로 무엇을해야할지 모르는 경우 일반 HTML 페이지가 표시됩니까? –

1

가능한 경우 외부 스타일 시트에 항상 styles을 포함시켜야합니다. 페이지에 이들을 포함해야 할 경우 <!CDATA[[ ... ]]> 블록으로 둘러싸인 내용이 주석보다 많이 보입니다.

현대적인 브라우저에서 규칙을 사용할 수 없게됩니다.

+0

하지만 CDATA는 CSS 용으로 CDATA를 사용해야합니까? –

+0

@Doug : XHTML을 사용하는 경우에만. @Jitendra : 템플릿 텍스트에 'XML-illegal'문자가 포함 된 경우 (예 : 앰퍼샌드 '&'등 – BalusC

-1

Dreamweaver (DW)에서이 페이지의 doctype 선언을 변경하는 것이 매우 편리합니다.

XHTML을 사용하는 경우 <!-- .... --> 또는 <!CDATA[[ ... ]]>을 입력하면 엄격한 구문 분석 및 준수가 가능해집니다.

어쨌든 다른 doctype 선언과 거의 (와) 호환됩니다. DW는 항상이 규칙을 사용하는 것이 좋습니다.

+0

이고 는 XHTML 문서, 인 페이지 자바 스크립트 및 CSS에서 동일하게 작동합니다 양자 모두? –

+0

글쎄, 나는 그들이 JS와 CSS에 대해 100 % 동일하다고 생각하지 않지만 꽤 많이 추측한다. –

+0

그래서 CSS의 경우에는 을 사용하고 XHTML 문서에서는 항상 자바 스크립트의 경우 를 사용하는 것이 더 좋습니다. –

관련 문제