XML 입문 | DTD를 사용하여 XML 구조의 정의 | DTD란?
XML에서는 자유롭게 태그를 정의하여 문서를 작성 할 수 있지만, 어떤 태그를 사용할지 XML 문서의 구조를 결정 해두면 유용하다. XML은 구조를 작성할 때 DTD라는 언어를 사용한다. 여기에서는 DTD는 무엇으로 어떤 경우에 사용하는지에 대해서 간단하게 설명한다.
예를 들어 지점마다 재고 데이터를 XML 문서로 작성하여 본부에서 집계하는 경우를 생각해 보겠다. 각 지점에서 각 지점만의 태그를 사용하여 문서를 작성하게 된다면, 각 지점으로 부터 XML 문서를 받아서 처리하는 쪽에서는 너무 힘들어질 것이다.
A 지점 :
<?xml version="1.0" encoding="UTF-8" ?>
<재고>
<상품>
<이름>자전거</이름>
<재고수량>20</재고수량>
</상품>
</재고>
B 지점 :
<?xml version="1.0" encoding="UTF-8" ?>
<재고정보>
<상품>
<제품정보>
<상품명>책장</상품명>
<취득일자>2019년 10월</취득일자>
</제품정보>
<개수>12</개수>
</상품>
</재고정보>
그러기에 어떤 요소를 어떻게 사용하는지 XML의 구조를 정의하여, 각 지점은 동일한 규칙에 따라 XML 문서를 작성하게 하도록 한다. 아래는 동일한 규칙에 따라 생성된 XML 문서이다.
A 지점 :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 재고정보[
<!ELEMENT 재고정보 (상품)>
<!ELEMENT 상품 (이름, 개수)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 개수 (#PCDATA)>
]>
<재고정보>
<상품>
<이름>자전거</이름>
<개수>20</개수>
</상품>
</재고정보>
B 지점 :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 재고정보[
<!ELEMENT 재고정보 (상품)>
<!ELEMENT 상품 (이름, 개수)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 개수 (#PCDATA)>
]>
<재고정보>
<상품>
<이름>책장</이름>
<개수>12</개수>
</상품>
</재고정보>
공통 규칙에 따라 XML 문서가 작성되어 있기에, 어떤 요소의 값이 어떤 값을 나타내고 있는지 명확하게 알 수 있게 되었다. 또한 프로그램 등에서 문서를 처리하는 경우에도 사용되는 태그를 알고 있기 때문에 처리하기가 쉬워진다.
이렇게 XML 문서의 구조를 정의하는 데 사용하는 것이 DTD이다. DTD는 XML 문서의 구조를 정의하기 위한 언어라고 생각하면 된다. DTD를 사용하여 정의하는 XML 구조는 XML 문서에 직접 작성하거나 외부 파일로 저장하고 읽어 올 수 있다.
이제 DTD가 어떤 경우에 이용되는 것인지 알게 되었다. 다음 페이지부터 DTD의 구체적인 작성 방법에 대해 설명한다.