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




최종 수정 : 2019-10-07