컴공지식/웹

DTD의 구성 요소

개강한 공대생 2024. 9. 20. 16:03

DTD는 Document Type Definition의 약자로, XML 문서의 구조를 정의하는 거다.

XML 문서가 어떤 요소(Element)와 속성(Attribute)을 가질 수 있는지, 그리고 그들이 어떤 순서형식으로 나타나야 하는지를 규칙으로 정해 주는 거다.

쉽게 말해서, XML 문서의 설계도 같은 거다.

이걸 통해 XML 문서가 '유효한(valid)'지 아닌지를 검증할 수 있다.

 

이제 구성 요소에 대해 설명하겠다.

 

1. 요소 정의 (Element Declaration)

어떤 태그가 문서에 들어갈 수 있는지, 그리고 그 태그 안에 뭐가 들어갈 수 있는지를 정의한다.

예시 <!ELEMENT message (#PCDATA)>

여기서 message라는 태그가 텍스트 데이터를 담을 수 있다는 뜻이다.

#PCDATA는 Parsed Character Data의 줄임말로 텍스트 데이터를 허용하되, XML 파서(parser)가 그 데이터를 해석(파싱)할 수 있게 한다는 뜻이다.

즉, 그냥 message 요소 안에 텍스트를 쓸 수 있다는거다.

이 구성 요소는 필수이다.

 

 

2. 속성 정의 (Attribute Declaration)

각 요소가 가질 수 있는 속성들을 정의한다.

예시 <!ATTLIST message id ID #REQUIRED>

여기서는 message라는 요소가 id라는 속성을 가지고, 그 값은 고유한 ID여야 한다는 뜻이다.

 

3. 요소의 순서와 중첩

요소들이 어떤 순서로 들어가야 하는지도 DTD로 정의할 수 있다.

예를 들어, 부모-자식 관계나 반복 여부 같은 걸 정하는 거다.

예시 <!ELEMENT myMessage (message+)>

이건 myMessage 안에 하나 이상의 message 요소가 들어가야 한다는 의미다.

 

4. 기타 데이터 타입

DTD에서는 ID, NMTOKEN, CDATA 같은 데이터 타입도 정할 수 있다.

예시 <!ATTLIST message id ID #IMPLIED>

ID는 고유해야 하고, NMTOKEN은 공백 없이 한 덩어리의 문자열을 뜻한다.