XML 입문 | DTD를 사용하여 XML 구조의 정의 | DTD에서 요소와 문자 데이터의 조합
HTML에서는 아래와 같이 작성을 할 수 있다.
<p>
아버지는 <strong>자산가</strong>이다.
</p>
<p>
요소의 문자 데이터에 인라인 요소인 <strong>
태그를 사용하여 작성하고 있다.
맞찬가지로 XML에도 문자 데이터에 요소를 (몇 번이라도) 작성 할 수 있다. 이러한 경우의 DTD 작성 방법이지만, 바로 이전에 설명했던 여러 요소 중에서 하나를 선택하는 방법을 사용하여 작성 할 수 있다.
먼저 아래와 같이 작성한다.
<!ELEMENT 요소명 (#PCDATA | 요소명)>
|
을 사용하여 작성 방법은 요소뿐만 아니라, #PCDATA
와 요소
를 같이 작성할 수도 있다. 이대로라면 문자 데이터가 다른 요소가 어느 쪽이든 하나만 작성 할 수 밖에 없게 되지 겠지만, 아래와 같이 작성하면 이 문제는 해결할 수 있다.
<!ELEMENT 요소명 (#PCDATA | 요소명)*>
위와 같이 작성 가능 횟수로 0번 이상 지정하는 *
를 마지막으로 작성한다. 이렇게 작성을 하게 되면 문자 데이터나 요소 중 하나가 각각 0회 이상 여러 번 작성 할 수 있게 된다. 예를 들어 방금 전의 HTML의 예제는 아래와 같은 의미이다.
아버지는 <strong>자선자</strong> 입니다.
------ --------------------- -----
#PCDATA 'strong'요소 #PCDATA
이것은 #PCDATA
와 <strong>
요소가 반복하여 작성되고 있는 것이다.
그럼 이전 XML 문서 샘플에 추가하는 형태로 작성해 보자.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 고객정보[
<!ELEMENT 고객정보 (고객+)>
<!ELEMENT 고객 (이름, 성별, 취미*, (집 | 회사 | 핸드폰), 비고?)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 성별 (#PCDATA)>
<!ELEMENT 취미 (#PCDATA)>
<!ELEMENT 집 (#PCDATA)>
<!ELEMENT 회사 (#PCDATA)>
<!ELEMENT 핸드폰 (#PCDATA)>
<!ELEMENT 비고 (#PCDATA | 중요)*>
<!ELEMENT 중요 (#PCDATA)>
]>
<고객정보>
<고객>
<이름>김혜진</이름>
<성별>女</성별>
<집>02-xxx-xxxx</집>
</고객>
<고객>
<이름>박정혁</이름>
<성별>남</성별>
<취미>피아노</취미>
<취미>수영</취미>
<핸드폰>010-xxxx-xxxx</핸드폰>
<비고>
아버지는 <중요>자산가</중요>이며, 대기업 <중요>회장</중요>이다.
</비고>
</고객>
</고객정보>
최종 수정 : 2019-10-07