CDATA
CDATA이 글은 검증을 위해 인용구가 추가로 필요하다.– · · · · (2021년 12월)(이 템플릿 |
문자 데이터를 뜻하는 CDATA라는 용어는 마크업 언어인 SGML과 XML에서 구별되지만 관련성이 있는 용어로 사용된다. 이 용어는 문서의 특정 부분이 비문자 데이터나 보다 구체적이고 제한된 구조를 가진 문자 데이터가 아닌 일반 문자 데이터임을 나타낸다.null
XML의 CDATA 섹션
XML 문서나 외부 엔티티에서 CDATA 섹션은 표시된 내용이 아닌 문자 그대로 텍스트 데이터로 해석되도록 표시된 요소 컨텐츠의 한 부분이다.[1]CDATA 섹션은 문자 데이터를 표현하기 위한 대체 구문일 뿐이다. CDATA 섹션의 문자 데이터와 표준 구문의 문자 데이터 사이에는 의미적 차이가 없다. 예를 들어, "<" 그리고 "&"는 "으로 대표된다.<" 그리고 "&", 각각.null
구문 및 해석
CDATA 섹션은 다음 순서로 시작한다.
<![CDATA]그리고 다음 순서의 발생으로 끝난다.
]]>이 두 시퀀스 사이에 둘러싸인 모든 문자는 마크업이나 엔티티 참조가 아닌 문자로 해석된다.모든 등장인물은 문자 그대로 받아들여지는데, 유일한 예외는 오직 "The"이다.]]>등장인물의 순서인:
<<sender>>존 스미스시작 태그와 끝 태그는 마크업으로 해석된다.그러나 이 코드는 다음과 같다.
<![CDATA]존 스미스(/sender)] 다음 항목과 동일하다:
<message>존 스미스</sender>따라서, "태그"는 "존 스미스"와 정확히 같은 지위를 가질 것이고, 그것들은 텍스트로 취급될 것이다.null
마찬가지로, 숫자 문자 참조인 경우 ð요소 내용에 나타나며, 단일 유니코드 문자 00F0(작은 글자 eth)으로 해석된다.그러나 CDATA 섹션에 동일한 문자가 표시되면 앰퍼샌드, 해시 마크, 숫자 2, 숫자 4, 숫자 0, 세미콜론 등 6개의 문자로 구문 분석된다.null
CDATA 섹션의 사용
XML 문서의 새로운 저자는 CDATA 섹션의 목적이 처리 중 데이터가 일반적인 문자 데이터로 취급되지 않도록 "보호"하는 것이라고 잘못 알고 CDATA 섹션의 목적을 오해하는 경우가 많다.XML 문서로 작업하기 위한 일부 API는 CDATA 섹션에 대한 독립적 접근을 위한 옵션을 제공하지만, 그러한 옵션은 XML 처리 시스템의 정상적인 요구 조건 이상에 존재하며, 여전히 데이터의 암묵적 의미를 변경하지 않는다.문자 데이터는 CDATA 섹션 또는 일반 마크업을 통해 표현되는지 여부에 관계없이 문자 데이터다.CDATA 섹션은 XML 문서 내에 텍스트 데이터로 XML 코드를 작성할 때 유용하다.예를 들어 XML 응용프로그램의 사용을 설명하는 XSL로 책을 타이핑하려면 책 자체에 표시될 XML 마크업이 CDATA 섹션의 원본 파일에 기록된다.null
내포
CDATA 섹션에는 " 문자열을 포함할 수 없음]]>따라서 CDATA 섹션에는 중첩된 CDATA 섹션이 포함될 수 없다."삼각형 "이 포함된 텍스트를 인코딩하는 데 CDATA 섹션을 사용하는 방법]]>"는 " 직전에 발생되는 3중첩의 각 발생을 분할하여 여러 CDATA 섹션을 사용하는 것이다.>". 예를 들어, "를 인코딩한다.]]>"라고 쓴 사람은 다음과 같다.
<![CDATA[]]]]><![CDATA[]]] 이는 "인코딩"을 한다는 것을 의미한다.]]>" CDATA 섹션의 중간에 "의 모든 항목을 교체하십시오.]]>"는 다음과 같이 한다.
]]<![CDATA[]이렇게 하면 CDATA 섹션이 효과적으로 중지 및 재시작된다.null
인코딩 문제
텍스트 데이터에서 유니코드 문자를 사용할 수 없는 경우<?xml ...?>헤더를 사용하여 표시할 수 있음&#nnn; 숫자 참조그러나 CDATA 섹션 내의 텍스트는 인코딩에서 사용할 수 있는 문자로 엄격히 제한된다.null
이 때문에 CDATA 섹션을 프로그래밍 방식으로 사용하여 잠재적으로 '을(를) 포함할 수 있는 데이터를 인용한다.&' 또는 '<' 문자는 데이터가 인코딩에 나타낼 수 없는 문자를 포함할 때 문제를 일으킬 수 있다.인코더의 구현에 따라 이들 문자는 분실될 수 있고, 문자로 변환될 수 있다.&#nnn;문자 참조 또는 인코딩 실패의 원인이 될 수 있다.그러나 그것들은 유지되지 않을 것이다.null
또 다른 문제는 XML 문서가 전송 중에 한 인코딩에서 다른 인코딩으로 변환될 수 있다는 것이다.XML 문서가 ASCII와 같이 더 제한적인 문자 집합으로 변환되면 더 이상 나타낼 수 없는 문자는 다음 문자로 변환된다.&#nnn;무손실 변환에 대한 문자 참조.그러나 CDATA 섹션 내에서 이러한 문자는 전혀 표현할 수 없으며, CDATA 섹션의 내용을 변경하여 제거하거나 동등한 것으로 변환해야 한다.null
프로그램 출력에 CDATA 사용
XHTML 문서의 CDATA 섹션은 HTML로 렌더링할 경우 웹 브라우저에 의해 다르게 구문 분석되기 쉽다. HTML 파서들은 CDATA 시작 및 끝 마커를 인식하지 못하며, <와 같은 HTML 엔티티 참조는 <스크립트> 태그 내에서 인식하지 못하기 때문이다.이는 웹 브라우저에서 렌더링 문제를 야기할 수 있으며 CDATA 섹션이 끝나는 위치에 대해 두 종류의 파서가 일치하지 않기 때문에 신뢰할 수 없는 소스의 데이터를 표시하기 위해 사용될 경우 사이트 간 스크립팅 취약성으로 이어질 수 있다.null
웹 페이지 스크립트에서 보다 적은 기호(<)와 앰퍼샌드(&)를 사용할 수 있고, 작은 범위 스타일(&)을 사용할 수 있기 때문에, 피할 필요 없이 CDATA 마커를 XHTML 문서의 인라인 <스크립트>와 <스타일> 요소의 텍스트 주위에 사용하는 것이 일반적이다.그러나 CDATA 마커를 인식하지 못하는 HTML 파서에서도 문서를 구문 분석할 수 있도록 CDATA 마커는 이 JavaScript 예에서와 같이 일반적으로 주석 처리된다.
<각본을 뜨다 타자를 치다="텍스트/텍스트"> //<![CDATA] 문서화하다.글씨를 쓰다("<"); //]]> </각본을 뜨다> 또는 이 CSS 예제:
<문체를 하다 타자를 치다="text/css"> /*<![CDATA[*/] 보디 { 배경 이미지: url("마블.png?너비=300&386=300") } /*]]>*/ </문체를 하다> 이 기법은 인라인 스크립트 및 스타일시트를 사용할 때만 필요하며 언어별로 다르다.예를 들어 CSS 스타일시트는 두 번째 스타일의 코멘트 아웃(/* … */)만 지원하지만, CSS는 JavaScript보다 < 및 & 문자 필요성도 적어 명시적 CDATA 마커의 필요성이 적다.null
CDATA(DTD)
CDATA 유형 특성 값
SGML 및 XML용 DTD(Document Type Definition) 파일에서 속성 값은 CDATA: 임의 문자 데이터 유형으로 지정할 수 있다.CDATA 유형 속성 내에서 문자 및 엔티티 참조 마크업이 허용되며 문서를 읽을 때 처리된다.null
예를 들어 XML DTD에 포함된 경우
<!ATTLIST foo a CDATA #IMPLED> 그것은 foo라는 이름의 요소들이 선택적으로 CDATA 타입의 "a"라는 속성을 가질 수 있다는 것을 의미한다.이 DTD에 따라 유효한 XML 문서에서 다음과 같은 요소가 나타날 수 있다.
<후후후후우 a="1 & 2는 < 3 
" /> XML 파서는 "a" 속성의 값을 문자 데이터 "1 & 2는 < 3"으로 해석할 것이다.null
CDATA형 엔티티
또한 SGML 또는 XML DTD에는 토큰 CDATA를 사용하여 엔티티가 문자 데이터로 구성되었음을 나타내는 엔티티 선언이 포함될 수 있다.문자 데이터는 선언문 자체 내에 나타나거나 URI가 참조하는 외부에서 사용할 수 있다.어느 경우든 문자 참조와 매개변수 도면요소 참조 표시가 엔티티에서 허용되며, 읽을 때 이와 같이 처리된다.null
<DISPLAY_NAME> 속성="Y"><![CDATA[PFTEST0__CURTOR_6__:4:199:, PFTEST0__CURTOR_7__:4:199:]>></DISPLAY_NAME> <SVL Object><롱 이름을 붙이다"" val="" 정수 이름을 붙이다"" val="" 롱 이름을 붙이다"" val=""/></SVLOBLE>