itsource

DTD에서 PCDATA와 CDATA의 차이

mycopycode 2023. 10. 19. 22:19
반응형

DTD에서 PCDATA와 CDATA의 차이

사이의 차이점은 무엇입니까?#PCDATA그리고.#CDATADTD?

  • PCDATA파서에서 파싱할 텍스트입니다.텍스트 내부의 태그는 마크업으로 처리되고 엔티티는 확장됩니다.
  • CDATA구문 분석기에서 구문 분석할 수 없는 텍스트입니다.텍스트 내부의 태그는 마크업으로 처리되지 않으며 엔티티는 확장되지 않습니다.

기본적으로 모든 것은PCDATA. 다음 예제에서는 루트를 무시하고<bar>파싱이 되고 내용물은 없지만 아이는 한 명뿐입니다

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

요소에 텍스트만 포함하고 하위 요소는 포함하지 않도록 지정하려면 키워드를 사용합니다.PCDATA, 이 키워드는 요소에 구문 분석 가능한 문자 데이터(즉, 문자를 제외한 모든 텍스트)가 포함되어야 한다고 지정하기 때문입니다.< (보다 큼, >(), ()&), 따옴표()') 및 큰따옴표()").

다음 예에서는,<bar>포함하다CDATA. 내용물은 파싱되지 않으므로<test>content!</test>.

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

SGML에는 여러가지 컨텐츠 모델이 있습니다. 그#PCDATA내용 모델은 요소가 일반 텍스트를 포함할 수 있다고 말합니다.여기서 "파싱"된 부분은 마크업(PI, 주석 및 SGML 지시어 포함)이 원시 텍스트로 표시되지 않고 파싱된다는 것을 의미합니다.이는 또한 엔티티 참조가 대체됨을 의미합니다.

평문 내용을 허용하는 또 다른 유형의 내용 모델은 다음과 같습니다.CDATA. XML에서 요소 내용 모델은 암시적으로 다음과 같이 설정되지 않을 수 있습니다.CDATA, 그러나 SGML에서 마크업과 엔티티 참조는 요소의 내용에서 무시된다는 것을 의미합니다.의 속성에서CDATAtype 그러나 엔티티 참조가 바뀝니다.

XML 에서#PCDATA는 유일한 일반 텍스트 내용 모델입니다.요소에 텍스트 내용을 허용하고 싶을 때 사용합니다.CDATA콘텐츠 모델은 명시적으로 사용될 수 있습니다.CDATA마크업을 막다#PCDATA, 그러나 요소 내용은 다음과 같이 정의되지 않을 수 있습니다.CDATA채무 불이행시마다

DTD에서 텍스트를 포함하는 속성의 유형은 다음과 같아야 합니다.CDATA.CDATA속성 선언에서 키워드는 다음과 다른 의미를 갖습니다.CDATAXML 문서의 섹션입니다.에.CDATA섹션 모든 문자가 합법적입니다(포함).<,>,&,'그리고.") ]]>

#PCDATA속성 유형에 적합하지 않습니다.이것은 "잎" 텍스트 유형에 사용됩니다.

#PCDATA이 키워드를 다음 이름의 요소와 구별하기 위해 컨텐츠 모델의 해시 앞에 붙습니다.PCDATA(그것은 완벽하게 합법적일 것입니다.)

PCDATA - 구문 분석된 문자 데이터

XML 구문 분석기는 일반적으로 XML 문서의 모든 텍스트를 구문 분석합니다.

CDATA - (분석되지 않은) 문자 데이터

CDATA라는 용어는 XML 파서에서 구문 분석하지 않아야 하는 텍스트 데이터에 대해 사용됩니다.

"<" 및 "&"과 같은 문자는 XML 요소에서 사용할 수 없습니다.

PCDATA – 구문 분석된 문자 데이터.XML 문서의 모든 데이터를 구문 분석합니다.

예:

<family>
    <mother>mom</mother>
    <father>dad</father>
</family>

서.<family>요소는 2개의 요소를 더 포함합니다: 그리고 . 그래서 더 파싱하여 어머니와 아버지의 텍스트를 "엄마 아빠"로서 가족의 텍스트 가치를 부여합니다.

CDATA – 구문 분석되지 않은 문자 데이터.이것은 xml 문서에서 더 이상 구문 분석해서는 안 되는 데이터입니다.

<family>
    <![CDATA[ 
       <mother>mom</mother>
       <father>dad</father>
    ]]>
</family>

여기서 가족의 텍스트 값은<mother>mom</mother><father>dad</father>.

지금부터(Google은 당신의 친구입니다):

DTD에서 PCDATA와 CDATA는 각각 요소와 속성의 허용 내용에 대해 주장하는 데 사용됩니다.요소의 내용 모델에서 #PCDATA는 요소가 "오래된 텍스트"를 포함(포함할 수 있음)한다고 말합니다(아래에 언급된 예외는 제외).CDATA는 속성의 선언에서 속성의 허용 값에 적용할 수 있는 제약 조건의 하나입니다(다른 유형에는 모두 상호 배타적이며 ID, IDREF 및 NMTOKEN이 포함됨).허용 값이 CDATA인 속성(요소의 PCDATA와 같이)은 "이전 텍스트"를 포함할 수 있습니다.

잠재적으로 정말 혼란스러운 문제는 표시된 섹션이라고도 하는 또 다른 "CDATA"가 있다는 것입니다.표시된 섹션은 특수 문자열로 구분된 요소(#PCDATA) 내용의 일부입니다. 이 섹션을 닫으려면.그 PCDA를 기억한다면TA는 "parsed 문자 데이터"이며 CDATA 섹션은 "parsed 문자 데이터" 없이 문자 그대로 동일한 것입니다. 파서는 < 및 &>와 같은 특수 문자를 접할 때마다 표시된 섹션의 내용을 딸꾹질 없이 다운스트림 애플리케이션으로 전송합니다.이 기능은 특수 문자(예: 스크립트 및 코드 조각)가 많이 포함된 문서를 코딩할 때 유용하며, 해당 엔티티 참조보다 데이터 입력 및 읽기가 더 쉽습니다.

따라서 "오래된 텍스트" 규칙의 예외는 PCDATA가 CDATA로 표시된 섹션의 범위에 포함되지 않는 한 PCDATA는 이러한 회피되지 않은 특수 문자를 포함할 수 없다는 것입니다.

PCDATA와 CDATA의 가장 큰 차이점은

PCDATA - 기본적으로 Elements에 사용되는 동안

CDATA - XML, 즉 ATTLIST의 속성에 사용됨

CDATA(문자 데이터):주석과 유사하지만 문서의 일부입니다. 즉, CDATA는 데이터이며 문서의 일부이지만 XML로 구문 분석할 수 없습니다.
참고: XML 주석은 XML을 구문 분석하는 동안 생략되지만 CDATA는 그대로 표시됩니다.

PCDATA(Parsed Character DATA) : 기본적으로 모든 것이 PCDATA이며, PCDATA는 데이터이며, XML로 파싱할 수 있습니다.

PCDATA

PCDATA: (Parsed Character Data): XML 파서는 XML 문서의 모든 텍스트를 파싱하는 데 사용됩니다.PCDATA는 구문 분석된 문자 데이터를 의미합니다.PCDATA는 파서에서 파싱할 텍스트입니다.PCDATA 내부의 태그는 마크업(markup)으로 취급되고 엔티티는 확장됩니다.

즉, 구문 분석된 문자 데이터는 XML 구문 분석기가 데이터를 검사하고 해당 데이터가 대체될 내용을 포함하는 경우 내용 엔티티가 없는지 확인하는 것을 의미한다고 할 수 있습니다.

예를 들어 보겠습니다.

<?xml version="1.0"?>  
<!DOCTYPE employee SYSTEM "employee.dtd">  
<employee>  
  <firstname>vimal</firstname>  
  <lastname>jaiswal</lastname>  
  <email>vimal@javatpoint.com</email>  
</employee>   

위의 예제에서 직원 요소에는 'first name', 'last name' 및 'email' 요소가 3개 더 포함되어 있으므로, 이 요소를 추가로 구문 분석하여 first name, last name 및 e-메일의 데이터/텍스트를 가져와 직원의 값을 다음과 같이 제공합니다.

vimal jaiswal vimal@javatpoint.com

CDATA

CDATA: (분석되지 않은 문자 데이터): CDATA는 XML 문서에서 더 이상 분석되지 않은 텍스트를 포함합니다.CDATA 텍스트 내부의 태그는 마크업으로 취급되지 않으며 엔티티는 확장되지 않습니다.

CDA를 예로 들어보겠습니다.TA:

<?xml version="1.0"?>  
<!DOCTYPE employee SYSTEM "employee.dtd">  
<employee>  
<![CDATA[  
  <firstname>vimal</firstname> 
  <lastname>jaiswal</lastname> 
  <email>vimal@javatpoint.com</email> 
]]>   
</employee>   

위의 CDATA 예에서 CDATA는 요소 직원 바로 뒤에 사용되어 데이터/텍스트를 구문 분석하지 않은 상태로 만들기 때문에 직원의 가치를 제공합니다.

<firstname>vimal</firstname><lastname>jaiswal</lastname><email>vimal@javatpoint.com</email>

언급URL : https://stackoverflow.com/questions/918450/difference-between-pcdata-and-cdata-in-dtd

반응형