XML 입문 | DTD를 사용하여 XML 구조의 정의 | DTD에서 여러 요소 중에 하나를 선택하여 작성

DTD에서 요소의 정의 방법은 지금까지는 (1) 요소를 1개 포함, (2) 요소를 여러개 포함, (3) 문자 데이터 이렇게 3개의 패턴이 있었다.

<!ELEMENT 요소명 (요소명1)>
<!ELEMENT 요소명 (요소명1, 요소명2, ...)>
<!ELEMENT 요소명 (#PCDATA)>

여기에서는 여러 요소 중에서 어느 하나의 요소가 선택하여 포함되는 경우의 정의 방법을 살펴 보겠다. 정의식은 다음과 같다.

<!ELEMENT 요소명 (요소명1 | 요소명2 | ...)>

위와 같이 요소를 “|“로 구분하여 작성한다.

예를 들어 “연락처"요소에는 “집"요소 또는 “회사"요소 또는 “휴대"요소 중 하나만 나오면 되는 경우라면 다음과 같이 작성한다.

<!ELEMENT 연락처 (집 | 회사 | 핸드폰)>

그럼 XML 문서 샘플를 작성해보자.

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 고객정보[
  <!ELEMENT 고객정보 (고객+)>
  <!ELEMENT 고객 (이름, 성별, 취미*, 연락처)>
  <!ELEMENT 이름 (#PCDATA)>
  <!ELEMENT 성별 (#PCDATA)>
  <!ELEMENT 취미 (#PCDATA)>
  <!ELEMENT 연락처 (집 | 회사 | 핸드폰)>
  <!ELEMENT 집 (#PCDATA)>
  <!ELEMENT 회사 (#PCDATA)>
  <!ELEMENT 핸드폰 (#PCDATA)>
]>

<고객정보>
    <고객>
        <이름>김혜진</이름>
        <성별>여</성별>
        <연락처>
            <집>02-xxx-xxxx</집>
        </연락처>
    </고객>

    <고객>
        <이름>박정혁</이름>
        <성별>남</성별>
        <취미>피아노</취미>
        <취미>수영</취미>
        <연락처>
            <핸드폰>010-xxxx-xxxx</핸드폰>
        </연락처>
    </고객>
</고객정보>

위에서는 “연락처"라는 요소를 만들고 그 중에 하나를 선택할 수 있는 요소를 작성하고 있지만 만, 아래와 같이 작성할 수도 있다.

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 고객정보[
  <!ELEMENT 고객정보 (고객+)>
  <!ELEMENT 고객 (이름, 성별, 취미*, (집 | 회사 | 핸드폰))>
  <!ELEMENT 이름 (#PCDATA)>
  <!ELEMENT 성별 (#PCDATA)>
  <!ELEMENT 취미 (#PCDATA)>
  <!ELEMENT 집 (#PCDATA)>
  <!ELEMENT 회사 (#PCDATA)>
  <!ELEMENT 핸드폰 (#PCDATA)>
]>

<고객정보>
    <고객>
        <이름>김혜진</이름>
        <성별>女</성별>
        <집>02-xxx-xxxx</집>
    </고객>

    <고객>
        <이름>박정혁</이름>
        <성별>남</성별>
        <취미>피아노</취미>
        <취미>수영</취미>
        <핸드폰>010-xxxx-xxxx</핸드폰>
    </고객>
</고객정보>

위 예제에는 “고객” 요소에 포함된 네번째 요소가 “집”, “직장”, “휴대폰” 중에 하나가 작성한다는 규칙으로 되어 있다.




최종 수정 : 2019-10-07