특별한딸기이야기
xml dtd 본문
DTD
DTD란?
Document Type Definition
태그를 어떻게 사용하는지에 대한 규정
<!DOCUMENT name [
<!ELEMENT name (#PCDATA)>
]>
외부 DTD선언
<!DOCTYPE name SYSTEM "filename">
name = 루트요소
요소 선언
<!DOCTYPE id[
<!ELEMENT id (no, name)>
<!ELEMENT no(#PCDATA)>
<!ELEMENT name(#PCDATA)>
]>
사용 예
<id>
<no>123456</no>
<name>특별한딸기</name>
</id>
요소 선언 순서
.
순서지정
사용예
<!ELEMENT name (first, middle)>
<name>
<first>특별한</first>
<middle>딸기</middle>
|
하나만선택
사용예
<!ELEMENT name (first | middle)>
<name>
<first>특별한</first>
</name>
또는
<name>
<middle>딸기</middle>
</name>
?
사용하든말든 상관없음
사용예
<!ELEMENT name (first)?>
<name>
<first>특별한</first>
</name>
또는
<name>
</name>
+
1번이상 반복 사용 상관없음
사용예
<!ELEMENT name (first+)>
<name>
<first>특별한</first>
</name>
또는
<name>
<first>특별한</first>
<first>특별한</first>
</name>
*
사용안해되 상관없으며 1번이상 반복 사용 상관없음
사용예
<!ELEMENT name (first*)>
<name>
</name>
또는
<name>
<first>특별한</first>
<first>특별한</first>
</name>
<![CDATA[태그로 해석되지 않는 텍스트 삽입]]>
아마도 HTML의 <PRE>태그와 비슷한 기능인듯...
<!ATTLIST 요소명 속성명 속성유형 속성기본값>
요소는 부가적으로 지정되는 데이터를 의미한다.
<!DOCTYPE name[
<!ELEMENT name(first, middle)>
<!ATTLIST name national CDATA "ROK" #REQUIRED>
<!-- 속성명은 national이고 속성유형은 CDATA 기본값은 "ROK" 반드시 입력해야 하는 녀석 -->
<!ATTLIST name number CDATA #IMPLIED>
<!-- 속성명은 number이고 속성유형은 CDATA 입력 안해도 되는 녀석 -->
<!ATTLIST name version CDATA #FIXED "1.0">
<!-- 속성명은 version이고 속성유형은 CDATA 값은 무조건 "1.0" -->
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
]>
<name national="korea">
<first>특별한</first>
<middle>딸기</middle>
</name>
속성의 유형
CDATA
속성이 문자 데이터만 포함되는 녀석
ID
속성의 값이 유일해야 하는 녀석
IDREF
문서 내부의 다른 곳에서 선언된 다른 ID 참조
ENTITY/ENTITIES
ENTITY는 DTD 내부에서 선언된 이전 외부 개채의 이름에 대응
ENTITIES는 공백으로 구분된 개채 이름들을 여러개 참조
NMTOKEN/NMTOKENS
속성값이 알파벳, 숫자, '.', '-' 등이어야 한다.
ID와 비슷하다
열거형
여러 개를 나열하고 이중에서 하나만 선택
<!ATTLIST fruit name (apple|melon|banana) "apple">
예제(ID)
<!DOCTYPE box[
<!ELEMENT group (fruit+)>
<!ELEMENT fruit (#PCDATA)>
<!ATTLIST fruit name ID #REQUIRED>
<!ATTLIST fruit color IDREF #IMPLIED>
]>
<box>
<fruit name="strawberry">딸기</fruit>
<fruit name="apple">사과</fruit>
<fruit name="melon" color="strawberry">멜론</fruit>
</box>