JAVASCRIPT

게시글 'Script 구문이 XML parser에서 읽혀졌을 때 발생하는 문제'에 대한 정보
Script 구문이 XML parser에서 읽혀졌을 때 발생하는 문제
등록일 2010-02-08 조회 3,946

우리가 사용하는 JavaScript, VBscript 등의 script언어 들에서는 '<', '>' 등의 연산기호의 사용이 불가피 합니다.

그리고 HTML parser는 <script> tag 속의 text content들에 대해서는 CDATA(parser가 parsing 하지 않는 Character DATA)로 취급 합니다.

그 이유는 W3C HTML spec에 script element의 text content 들을 CDATA로 처리 하도록 정의(W3C HTML 4.01 spec의 Script element 참조)해 두었기 때문에 IE, FF 등의 브라우저에 내장된 HTML parser 들이 그 부분에 대해서는 자동적으로 CDATA로 처리하기 때문 입니다.

그런데 '<', '>' 등의 연산기호가 XML parser에 의해 읽혀졌을 때는 사정이 달라집니다.
 
이런 기호를 그냥 쓰게 되면 '<' 나 '>'와 같은 markup 문자들을 반드시 named entity 인 '&lt;' 나 '&gt;' 로 대치시켜서 사용해야 되는 XML 문법 규정에 의해서 error를 일으키게 된다는 겁니다.

물론 XML 문서라면 이런 문자들을 아래와 같이 XML CDATA section으로 처리하면 될 것 입니다.

코드 실행기로 실행할 때 '<![CDATA[' 와 '//]]>' 부분을 지우고 실행하면 에러를 볼 수 있습니다.