XML

DTD(Document Type Definition) ck

닉넥임 2013. 8. 7. 17:15
반응형

DTD(Document Type Definition) 란?

- DTD는 데이터를 포함하는 문서에서 일관성을 유지하도록 데이터 구조를 미리 정의하는데 돕기 위한 것이다. 

- XML문서에서 아용되는 마크업 문서에 대한 논리 구조를 정의


DTD 타입 

- ELEMENT(엘리먼트 정의)

- ATTLIST(속성 정의)

- ENTITY(엔티티 정의)

- NOTATION(데이터 타입 표기법 선언)

- COMMENT(주석)

- CDATA섹션


 엘리먼트

 (ELEMENT) 

 <!ELEMENT Name contentspec -> 일반적인 형태

 Name: 선언될 엘리먼트 타입명 , contentspec : 어떤것을 담을지 정의하는 컨텐츠 스펙(content specification)  

  컨텐트 스펙 종류

 - EMPTY 

 : 전혀 내용을 가지고 있지 않으면 빈 엘리먼트라 하며, 이를 표시하기 위해 "EMPTY" 키워  드 사용 

ex) <!ELEMENT IMAGE EMPTY>

 

- ANY 컨텐트 

 : ANY키워드를 사용하면 엘리먼트가 모든 컨텐트를 담을 수 있다. 순서에 관계 없이 문자 방식도 포함할수 있다

ex) <!ELEMENT MISC NAY>

 

-엘리먼트 컨텐트(일명 자식컨텐트)  

 : 엘리먼트는 자식 엘리먼트를 담을 수 있지만, 문자 데이터를 직접담을 수는 없다. 

ex) <!ELEMENT book (title, author)> -> 부모(book)은 자식(title,author)가진다 

     <!ELEMENT title (#PCDATA)> -> 문서텍스트를 표현하기 위해 "#PCDATA사용 

     <!ELEMENT author (#PCDATA)>

 -> 이런식으로 자식 엘리먼트의 타입과 순서를 나타낸다.

 

- 혼합된 컨텐트 

 : 엘리먼트는 문자 데이터와 함께 특정한 타입의 엘리먼트를 가질수 있다.

 : 자식 엘리먼트 타입은 규제할수 있지만 개수나 순서는 규제할 수 없다.

ex) <!ELEMENT title (#PCDATA|subtitle)*>  -> 이렇게 선언할경우

 <title>

  제목입니다.

  <subtitle> 부제목입니다.</subtitle>

 </title>

또는 가운데 부분을 반대로 바꾸어 사용할수 도 있다.


추가

: <!ELEMENT XXX(A|B|C)>  -> 선택규칙(Choice Rule)

: <!ELEMENT 이름(name?)> -> "?" (0번이나 1번 발생(선택))

: <!ELEMENT 이름(name+)> -> "+(1번이상(필수))

: <!ELEMENT 이름(name*)> -> "*(0번이상) 


 속성

(ATTRIBUTE)

 <!ATTLIST Name AttDefs Class CDATA "fictional">

: Name은 속성에 연결된 엘리먼트 타입 이름이다. 

: AttDefs는 하나 혹은 그이상의 속성 정의이다.

: Class는 속성 이름이다.

: CDATA는 속성 타입이다.

: "fictional" 디폴트 선언이다.


 - 속성 타입(attribute type)

 1.문자열 타입 

: 문자열 타입(String type) 속성은 CDATA 키워드를 사용하여 선언한다.

ex) <!ATTLIST FILM Class CDATA "fictional"> 

 2. 토큰화된 타입(tokenized type)

 - ID 

       ID 의 값은 name

       문서 내에서 각 엘리먼트 ID값은 고유값을 가져야함

 - IDREF / IDREFS

       IDREF : 지정된 ID로 엘리먼트를 가리킨다

       IDREFS : while space로 구분되는 IDREF 값들

 - ENTITY / ENTITIES

       ENTITY : external entity

       ENTITIES : white space로 구분되는 ENTITY 값들

 - NMTOKEN / NMTOKENS

       NMTOKEN : 단일 단어나 토큰을 나타내며, 토큰들의 구분은 공백으로 구분


3. 열거형 타입

 : 여러 토큰들 중의 하나가 선택된다.

 : 열기 괄호 다음에 | 로 구분된 네임 토큰의 리스트 다음에 닫기 괄호의 형태를 가진다.

ex) <!ATTLIST 제목정렬 (왼쪽|오른쪽|가운데) "왼쪽">  ->"왼쪽" 은 기본값


 - 디폴트 선언(default declaration)

: #REQUIRED

->  엘리먼트 선언시 반드시 값이 지정

ex) <!ATTLIST 순차목록분리자 NMTOKEN #REQUIRED>

: #IMPLIED

-> 속성값이 요구되지 않고 디폴트 값을 제공하지 않는다

-> 값이지정되지 않으면 XML 처리기는 값 없이 처리 

: AttValue

-> AttValue는 디폴트 속성값이 된다.

-> 엘리먼트 타입에서 속성을 생략할 수도 있고 포함할수도 있지만 생략한다면 디폴트값을 사용할것이다.

: #FIXED AttValue

->위와 비슷하지만 속성을 생략한다면 프로세서가 지정된 디폴트값을 사용할 것이다.

-> 만약 속성을 포함시킨다면, 그 디폴트 값을 꼭 지정해야 한다.

 

 

 

 


반응형