일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HTTP
- 자바
- XML DOM
- Java
- 스프링프레임워크
- Session
- 세션
- java annotation
- JavaScript
- 데이터규정
- JSTL
- 웹프로그래밍
- 공문서작성규정
- JSP
- Servlet
- 데이터포맷
- Request/Response Header
- 프로그래밍용어
- Multipart
- 카카오APi
- xml
- 자바스크립트
- 데이터문서포맷
- Database
- XML Core
- 반응형웹
- Ajax
- java컴파일
- 데이터베이스
- xml mapping
- Today
- Total
KyungHwan's etc.
DTD(Document Type Definition) 본문
문서 타입 정의(DTD)는 XML 문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의한다.
DTD는 엔티티를 정의할 수 있으며, 빠른 개발을 위한 내부 DTD를 사용 할 수 있다.
이러한 DTD는 XML 문서 내부에 명시할 수도 있으며, 별도의 파일로 분리할 수도 있다.
HTML5
선언 형태, 현재 가장 많이 사용하고 웹 표준 형식.
XHTML 1.0 Transitional (호환모드)
국내에서 가장 많이 사용하는 DOCTYPE. 하위 브라우저 호환성 때문.
-> DOCTYPE 선언은 어떤 버전의 HTML 문서를 작성했는지 브라우저에게 알려주는 것으로, 브라우저가 문서를 오류없이 렌더링하도록 한다. HTML 버전에 따라 사용되는 태그와 속성들이 조금씩 다르기 때문에 꼭 선언해주는 것이 좋다. DOCTYPE은 HTML 문서가 시작되는 맨 위에 선언된다.
1. DTD의 사용 목적
l DTD를 사용하여 새로운 XML 문서의 구조를 정의함으로써 새로운 문서 타입을 만들 수 있다..
l 이렇게 생성된 DTD는 새로운 문서 타입을 이용한 데이터의 교환에서 표준으로써 활용된다.
l 또한, 응용 프로그램은 DTD의 정의에 따라 XML 문서의 구문 및 구조에 대한 유효성을 검사할 수 있다.
2. DTD 문법
DTD는 <!DOCTYPE 으로 시작하여 루트(root) 요소는 XML 파서(parser)에 명시된 루트 요소부터 파싱(parsing)을 시작하고 알려준다.
만약에 DTD 식별자가 외부 주소를 가리키고 있으면, 그것을 외부 서브셋**(subset)**이라고 한다.
괄호([]) 안에는 내부 서브셋(subset)이라 불리는 추가로 선언한 엔티티(entity)의 리스트가 존재합니다.
3. 내부 서브셋(subset)
DTD가 XML 파일 내부에서 선언되면, 그 선언은 반드시 <!DOCTYPE>안에 위치해야 한다.
위의 예제에서 !DOCTYPE food 는 이 문서의 루트(root) 요소가 <food>요소라는 사실을 명시한다.
!ELEMENT food는 <food>요소가 <name>, <type>, <cost>의 세 요소를 반드시 포함해야 한다는 사실을 명시한다.
!ELEMENT name은 <name>요소가 #PCDATA 타입의 요소라는 사실을 명시한다.
!ELEMENT type은 <type>요소가 #PCDATA 타입의 요소라는 사실을 명시한다.
!ELEMENT cost은 <cost>요소가 #PCDATA 타입의 요소라는 사실을 명시한다.
4. DTD 외부 서브셋(subset)
DTD가 XML파일 외부에서 선언되면 <!DOCTYPE>은 반드시 외부 DTD파일의 주소 정보를 포함해야 한다.
5. XML 문서의 구성 요소
DTD에서는 모든 XML 문서가 다음과 같은 구성 요소로 이루어져 있다고 본다.
1. 요소(elements)
2. 속성(attributes)
3. 엔티티(entities)
4. PCDATA
5. CDATA
1)요소(elements)
DTD에서 요소(Elements)란 XML문서를 구성하는 가장 중요한 요소이다.
2)속성(attributes)
DTD에서 속성은 요소에 대한 추가적인 정보를 제공하여, 해당 요소의 특징을 정의한다.
3)엔티티(entities)
XML에서는 예약되어 있는 다섯 개의 특별한 기호가 있는데, 이렇 게 예약 되어 있는 기호를 XML 문서에서 사용하면 XML 파서는 다른 의미로 해석한다.
예약된 기호를 기존에 사용하던 의미 그대로 사용하기 위해 만든 문자셋을 엔티티(entity) 라고 한다.
DTD 에서 내부 엔티티는 ENTITY 구문으로 작성할 수 있다.
문서 외부에 존재하는 경우 외부 엔티티는 다음과 같이 SYSTEM 키워드를 사용한다.
4) PCDATA
PCDATA(Parsed Character DATA)란 XML 파서에 의해 분석될 문자 데이터를 의미한다.
간단히 말해 XML 요소의 시작 태그와 종료 태그 사이에 위치한 텍스트를 PCDATA라고 생각하면 된다.
5) CDATA
CDATA(Character DATA)란 XML 파서가 분석하지 않는 문자 데이터를 의미한다.
DTD에서 요소의 콘텐츠에는 PCDATA만이 올 수 있으며, 속성의 속성값으로는 CDATA만이 올 수 있다.
실전 DTD 정의 예제
=>위문서를* DTD로** 정의하면
<!ELEMENT 훈련일지 (훈련기관정보,훈련과정,결제정보,출결사항,훈련사항,지시사항,특기사항)>
<!ELEMENT 훈련기관정보 (#PCDATA|기관명)*>
<!ELEMENT 기관명 (#PCDATA)>
<!ELEMENT 훈련과정 (과정명,훈련일)>
<!ELEMENT 과정명 (#PCDATA)>
<!ELEMENT 훈련일 (년,월,일,요일,금일차,전체일차)>
<!ELEMENT 년 (#PCDATA)>
<!ELEMENT 월 (#PCDATA)>
<!ELEMENT 일 (#PCDATA)>
<!ELEMENT 요일 (#PCDATA)>
<!ELEMENT 금일차 (#PCDATA)>
<!ELEMENT 전체일차 (#PCDATA)>
<!ELEMENT 결제정보 (담당강사,관리자)>
<!ELEMENT 담당강사 (#PCDATA)>
<!ELEMENT 관리자 (#PCDATA)>
<!ELEMENT 출결사항 (계좌제적용자,일반인)>
<!ELEMENT 계좌제적용자 (재적,출석,결석,지각,조퇴)>
<!ELEMENT 일반인 (재적,출석,결석,지각,조퇴)>
<!ELEMENT 재적 (#PCDATA)>
<!ELEMENT 출석 (#PCDATA)>
<!ELEMENT 결석 (#PCDATA)>
<!ELEMENT 지각 (#PCDATA)>
<!ELEMENT 조퇴 (#PCDATA)>
<!ELEMENT 훈련사항 (교시별훈련사항)+>
<!ELEMENT 교시별훈련사항 (교시,훈련과목,담당교사,훈련내용,비고)>
<!ELEMENT 교시 (#PCDATA)>
<!ELEMENT 훈련과목 (#PCDATA)>
<!ELEMENT 담당교사 (#PCDATA)>
<!ELEMENT 훈련내용 (#PCDATA)>
<!ELEMENT 비고 (#PCDATA)>
<!ELEMENT 지시사항 (#PCDATA)>
<!ELEMENT 특기사항 (지각자,결석자,조퇴자*,기타사항?)>
<!ELEMENT 지각자 (#PCDATA)>
<!ELEMENT 결석자 (#PCDATA)>
<!ELEMENT 조퇴자 (#PCDATA)>
<!ELEMENT 기타사항 (전달사항,외출자)>
<!ELEMENT 전달사항 (#PCDATA)>
<!ELEMENT 외출자 (#PCDATA)>
=>이 DTD 형식대로를 XML을 작성하면
<!DOCTYPE 훈련일지 SYSTEM "훈련일지.dtd">
<훈련일지>
<훈련기관정보>
<기관명>KH정보교육원</기관명>
</훈련기관정보>
<훈련과정>
<과정명>필승취업</과정명>
<훈련일>
<년>2011</년>
<월>5</월>
<일>14</일>
<요일>금</요일>
<금일차>54</금일차>
<전체일차>100</전체일차>
</훈련일>
</훈련과정>
<결제정보>
<담당강사>
확인
</담당강사>
<관리자>
확인
</관리자>
</결제정보>
<출결사항>
<계좌제적용자>
.
.
.
즉 DTD에 정의한 데이터 정의대로 XML에 데이터값을 지정할 수 있다.
DTD는 DB에 메타데이터 같은 느낌
Reference
'XML' 카테고리의 다른 글
JSTL XML Tag (0) | 2018.05.31 |
---|---|
XML DOM (0) | 2018.05.31 |
XML( EXtensible Markup Language) Reference Document (0) | 2018.05.31 |