본문 바로가기

XML

XML - 3# 유효한 문서 DTD 만들기


선택

선택 기능은 특정 위치에 나타날 수 있는 여러 개의 구성요소들 중에 하나를 선택하여 사용할 수 있도록 해주는 기능입니다.
(A I B I C)와 같은 형식으로 <A>, <B>, <C> 요소 중 하나만 포함 될 수 있게 할 때 사용합니다.

<!ELEMENT ITEM (PRODUCT, NUMBER, (PRICE I CHARGEACCT I SAMPLE))>
.
.
.
<ITEM>
<PRODUCT>tomato</PRODUCT>
<NUMBER>8</NUMBER>
<PRICE>$80<RRICE>
</ITEM>
.
.

위와 같이 <PRODUCT>와 <NUMBER>는 반드시 들어가고 <PRICE>, <CHARGEACCT>, <SAMPLE>중 <PRICE>하나만 들어갈 경우 사용 할 수 있죠.

혼합 내용

#PCDATA와 기타요소들을 함께 포함하도록 지정한 것을 혼합내용이라 합니다.

<!ELEMENT PRODUCT (#PCDATA I PRODUCT_ID)*)

여기서 단점은 혼합 내용 모델 안에서는 +, *, ? 등의 연산자를 사용할 수 없다는 것입니다.


빈 구성요소

"빈-내용 모델(empty-content model)"은 선언한 구성요소에 어떠한 내용도 포함할 수 없습니다.
이를 선언할 때 간단히 EMPTY라는 키워드를 사용하기만 하면 됩니다.

<!ELEMENT CREDIT_WARNING EMPTY>

위의 <CREDIT_WARNING>라는 새요소는

<CREDIT_WARNING />

이렇게 사용할 수 있습니다.

DTD 주석

DTD가 길어지고 문서와 복잡하게 연결될 때 DTD 작성자가 좀더 편하기 위해 DTD 내부에 주석문을 답니다.
주석문은 그 구성요소가 무엇을 의미하는 것인지 설명을 적을 수 있는 것입니다.
<!-- 내용 --> 이와 같은 형태로 XML 처리기는 주석문을 제외시켜 처리합니다.

DTD 예제

앞에서 설명한 DTD의 총예제 입니다. 앞의 내용을 되새겨 보세요


<?xml version="1.0" standalone="yes"?>
<!DOCTYPE BOOK [
<!ELEMENT p (#PCDATA)>
<!ELEMENT BOOK (OPENR, SUBTITLE?, INTRODUCTION?, (SECTION I PART)+)>
<!ELEMENT OPENER (TITLE_TEXT)*>
<!ELEMENT TITLE_TEXT (#PCDATA)>
<!ELEMENT SUBTITLE (#PCDATA)>
<!ELEMENT INTRODUCTION (HEADER, p+)+>
<!ELEMENT PART (HEADER, CHAPTER+)>
<!ELEMENT SECTION (HEADER, p+)>
<!ELEMENT HEADER (#PCDATA)>
<!ELEMENT CHAPTER (CHAPTER_NUMBER, CHAPTER_TEXT)>
<!ELEMENT CHAPTER_NUMBER (#PCDATA)>
<!ELEMENT CHAPTER_TEXT(p)+>
]>
<BOOK>
<OPENER>
<TITLE_TEXT>
ALL ABOUT ME
</TITLE_TEXT>
</OPENER>
<PART>
<HEADER>Welcome To My Book</HEADER>
<CHAPTER>
<CHAPTER_NUMBER>CHAPTER 1</CHAPTER_NUMBER>
<CHAPTER_TEXT>
<P>나에 대해 들어봤닝?</P>
<P>내가 자세히 알려줄게</P>
<P>이제 시작해 볼까?</P>
<P>시작</P>
</CHAPTER_TEXT>
</CHAPTER>
</PART>
</BOOK>

'XML' 카테고리의 다른 글

XML - JavaScript 이해하기  (0) 2012.01.17
XML - 4# 유효한 문서 DTD 만들기  (0) 2012.01.17
XML - 2# 유효한 문서 DTD 만들기  (0) 2012.01.17
XML - 1# 유효한 문서 DTD 만들기  (1) 2012.01.17
XML - XML의 기본  (0) 2012.01.17