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의 구체적인 작성 방법에 대해 설명한다.