문제

PCDATA와 CDATA의 느슨한 정의는 다음과 같습니다.

  1. PCDATA는 문자 데이터이지만 ~이다 구문 분석됩니다.
  2. CDATA는 문자 데이터이고, 아니다 구문 분석됩니다.

그런데 누군가 CDATA가 실제로 구문 분석되거나 PCDATA가 실제로 구문 분석되지 않는다고 말했습니다.그래서 약간 혼란스럽습니다.실제 거래가 무엇인지 아는 사람이 있습니까?

업데이트:실제로 Wikipedia에 PCDATA 정의를 추가했습니다.그러니 그 대답은 제가 대략적으로 이해한 것일 뿐이므로 너무 심각하게 받아들이지 마십시오.

도움이 되었습니까?

해결책

Wiki에서 :

pcdata

간단히 말해서, pcdata는 문자 데이터를 나타내는 것입니다. 즉, XML, XHTML 또는 HTML Parser가 문자를 구문 분석해야합니다. (&lt; <,로 변경됩니다. <p> 단락 태그 등을 의미하기 위해 사용됩니다). XML, XHTML 또는 HTML 파서에 의해 문자를 구문 분석하지 않아야하는 CDATA와 비교하십시오.

cdata

문자 데이터를 의미하는 CDATA라는 용어는 마크 업 언어 SGML 및 XML에서 뚜렷하지만 관련 목적으로 사용됩니다. 이 용어는 문서의 특정 부분이 비 특이한 데이터 또는보다 구체적이고 제한된 구조를 가진 문자 데이터가 아닌 일반적인 문자 데이터임을 나타냅니다.

다른 팁

PCDATA와 CDATA가 모두 구문 분석됩니다.그들은 둘 다 성격 데이터.

둘 다 유효한 문자만 포함해야 합니다.예를 들어 문서 인코딩이 UTF-8인 경우 CDATA 섹션의 콘텐츠는 여전히 유효한 UTF-8 문자여야 합니다.따라서 임의의 이진 데이터로 인해 문서가 제대로 구성되지 않을 수 있습니다.또한 CDATA 섹션은 끝 섹션 태그를 찾기 위해서만 구문 분석됩니다.그러나 <, > 및 &와 같은 다른 마크업 유사 문자는 무시되고 파서에 의해 있는 그대로 전달됩니다.

PCDATA 리터럴 < 및 &(및 속성 값의 ' 또는 ")의 OTOH는 이스케이프되어야 하며 그렇지 않으면 마크업으로 해석됩니다.엔터티도 확장됩니다.

그렇습니다. CDATA 섹션은 실제로 구문 분석됩니다.그런데 왜 PCDATA가 구문 분석되지 않았다는 말을 들었는지 모르겠습니다.

PCDATA- 문자 데이터

CDATA- (비교) 문자 데이터

http://www.w3schools.com/xml/xml_cdata.asp

  • PCDATA는 파서에 의해 구문 분석되는 텍스트입니다. 텍스트 내부의 태그는 마크 업으로 취급되며 엔티티가 확장됩니다.
  • cdata는 텍스트입니다 ~ 아니다 파서에 의해 구문 분석됩니다. 텍스트 내부의 태그가 있습니다~ 아니다 마크 업으로 취급되며 엔티티는 확장되지 않습니다.

기본적으로 모든 것은 pcdata입니다. 다음 예에서는 루트를 무시하고 구문 분석되며 내용이 없지만 한 아이가 없습니다.

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>

요소에 텍스트 만 포함되도록 지정하려면 하위 요소가 포함되어 있지 않으면 키워드 pcdata를 사용합니다.이 키워드는 요소에 매개 가능한 문자 데이터가 포함되어야한다고 지정하기 때문에 (즉, 문자보다 <<<< ), 더 큰 (>), Ampersand (&), quote ( ') 및 double quote ( ").

다음 예에서 Bar는 Cdata이며 구문 분석되지 않으며 콘텐츠 "콘텐츠!"가 있습니다.

<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>

SGML에는 몇 가지 컨텐츠 모델이 있습니다. #pcdata 컨텐츠 모델에 요소에 일반 텍스트가 포함될 수 있다고 말합니다. 그것의 "구문 분석"부분은 원시 텍스트로 표시되는 대신 마크 업 (PIS, 댓글 및 SGML 지시문 포함)이 구문 분석 된 것을 의미합니다. 또한 엔티티 참조가 대체되었음을 의미합니다.

일반 텍스트 내용을 허용하는 또 다른 유형의 컨텐츠 모델은 CDATA입니다. XML에서, 요소 컨텐츠 모델은 암시 적으로 CDATA로 설정되지 않을 수 있지만 SGML에서는 요소의 내용에서 마크 업 및 엔티티 참조가 무시된다는 것을 의미합니다. 그러나 CDATA 유형의 속성에서는 엔티티 참조가 대체됩니다.

XML에서 #pcdata는 유일한 일반 텍스트 콘텐츠 모델입니다. 요소에서 텍스트 내용을 허용하려는 경우 사용합니다. CDATA 컨텐츠 모델은 #PCDATA의 CDATA 블록 마크 업을 통해 명시 적으로 사용될 수 있지만 요소 내용은 기본적으로 CDATA로 정의되지 않을 수 있습니다.

DTD에서 텍스트를 포함하는 속성 유형은 CDATA 여야합니다. 속성 선언의 CDATA 키워드는 XML 문서의 CDATA 섹션과 다른 의미를 갖습니다. CDATA 섹션에서 모든 문자는 합법적이며 (<,>, '및“문자)는“]]> 끝 태그를 제외하고는 합법적입니다.

#pcdata는 속성 유형에 적합하지 않습니다. "잎"텍스트 유형에 사용됩니다.

#pcdata는 역사적 이유로 단순히 해시 ( "해시 태그"또는 Octothorp라고도 함)에 의해 선불됩니다.

첫 번째 정의가 정확합니다.

PCDATA는 구문 분석되므로 엔티티가 확장되고 텍스트가 마크 업으로 취급됩니다. CDATA는 XML 파서에 의해 구문 분석되지 않습니다.

XHTML DTDS에서 기본적으로 요소 만 CDATA로 설정된 경우 많은 추악한 수동 재정의를 절약 할 수 있습니다 ... 왜 스크립트 블록에 다른 요소가 포함되어 있습니까? 이러한 요소가있는 경우 DOM 조작 조치에서 JS 통역사가 처리합니다.이 경우 문서 삽입 및 렌더링 전에 XML 파서에 의해 완전히 무시되어야합니다. 외부 스크립트 리소스 파일의 사용을 강요하도록 설계되었을 수 있습니다. 궁극적으로 좋은 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top