블로그 보관함

2014년 2월 24일 월요일

DTD 란?

Document Type Definition 을 말한다.

xml 문서에서 사용할 ENTITY, ELEMENT, 규칙들을 정의한다.

HTML 의 참조 DTD의 경우 strict 와 loose 규칙이 있다. 이 때 loose DTD 를 사용하게 되면 HTML 에서 사용자의 편의를 고려하여 잘못된 문법들에 대해서 어느정도 해석을 해서 받아들인다. 하지만 strict 규칙을 사용하면 보다 정확한 문법을 사용자에게 요구하게 된다.

* dtd 파일의 이름은 거의 root element 의 이름을 사용한다.


1) 엘리먼트 선언

<!ELEMENT 이름 (자식태그들)>
<!ELEMENT 이름 (자식태그, 자식태그, 자식태그)> : 태그는 순서대로 작성해야한다.
<!ELEMENT 이름 (#PCDATA)> : 엘리먼트의 콘텐츠가 문자열임을 선언
<!ELEMENT 이름 EMPTY> : 엘리먼트의 콘텐츠가 없음을 선언 (태그의 유무로 구분 가능)

PCDATA (Parsed Character data)

예)

<!DOCTYPE students[
<!ELEMENT students (student)>
<!ELEMENT student (name, age, tel, email, intro, working)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT intro (#PCDATA)>
<!ELEMENT working EMPTY>
]>


2) 사용 개수 지정

    - student : 1개
    - student? : 0 또는 1
    - student* : 0개 이상
    - student+ : 1개 이상

예)

<!DOCTYPE students[
<!ELEMENT students (student*)>
<!ELEMENT student (name, age?, tel, email, intro?, working?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT intro (#PCDATA)>
<!ELEMENT working EMPTY>
]>

따로 표시되지 않은 자식태그에 대해서는 data를 가지고 있지 않더라도 명시해 주어야 한다. 다만 EMPTY 값을 갖는 엘리먼트는 태그의 유무로 구분을 할 수 있다.



3) ','와 '|'의 응용


<!ELEMENT student (name, age?, tel, email, intro?, working?, (man|woman)?)>

   man 엘리먼트와 woman 엘리먼트 중에 하나를 선택하는 상황을 만들어준다.

4) MIXED ELEMENT

콘텐츠로 자식태그와 문자열을 동시에 갖는 엘리먼트를 말한다.

예)

 <intro><strong>학생</strong>이다.
 멋진 사람이다. <tag>비트교육센터</tag>에 <strong>다닌다</strong>.</intro>
 - MIXED 구조는 사용하지 않는 것이 바람직하다. xml 의 목적이 data를 구조화 하기 위함인데 MIXED 의 경우에는 체계적인 구조화가 어렵기 때문이다.

댓글 없음:

댓글 쓰기