DTD 개념 DTD 문법 [실습] DTD 활용

47
5 5 ㅎㅎ • DTD 개개 • DTD 개개 • [ 개개 ] DTD 개개 DTD

description

ㅎㅎ. DTD. DTD 개념 DTD 문법 [실습] DTD 활용. 5 장 . DTD. 학습목표 DTD 개념과 필용성 이해 DTD 기본 문법 학습 DTD 를 XML 문서에 적용하는 실습 유효한 XML 문서 작성을 위한 DTD 작성법 실습. DTD(Document Type Definition) 문서 형태를 정의하는 것 XML 문서 구조를 명시적으로 선언 XML 문서가 유효한 문서인지 확인하는데 사용 DTD 필요성 문서 가독성을 높일 수 있다 . - PowerPoint PPT Presentation

Transcript of DTD 개념 DTD 문법 [실습] DTD 활용

Page 1: DTD 개념 DTD 문법 [실습] DTD 활용

55 장장 ㅎㅎ

• DTD 개념• DTD 문법• [ 실습 ] DTD 활용

DTDDTD

Page 2: DTD 개념 DTD 문법 [실습] DTD 활용

2

학습목표 DTD 개념과 필용성 이해 DTD 기본 문법 학습 DTD 를 XML 문서에 적용하는 실습 유효한 XML 문서 작성을 위한 DTD 작성법 실습

5 장 . DTD

Page 3: DTD 개념 DTD 문법 [실습] DTD 활용

3

DTD(Document Type Definition)문서 형태를 정의하는 것XML 문서 구조를 명시적으로 선언XML 문서가 유효한 문서인지 확인하는데 사용

DTD 필요성문서 가독성을 높일 수 있다 .

문서를 교환하는데 이식성이 높아진다 .

애플리케이션에서 XML 문서를 사용할 경우 해당 문서마다 동일한 규칙을 적용할 수 있다 .

XML 문서 제작의 효율성이 높아진다 .

Section 01 DTD 개념

Page 4: DTD 개념 DTD 문법 [실습] DTD 활용

4

DTD 사용 방법내부 DTD, 외부 DTD, 혼합형 DTD

내부 DTDXML 문서 내에 DTD 를 선언하는 경우다른 XML 문서에 적용하기에는 좋지 않은 방법형식

Section 01 DTD 개념

<!DOCTYPE  root_element [   .....   마크업선언 ( 원소선언 | 속성선언 | 개체선언 | 노테이션선언 | PI | 주석 )   ..... ]> XML_ 마크업

css_test.html

Page 5: DTD 개념 DTD 문법 [실습] DTD 활용

5

외부 DTDDTD  문서를 별도 작성하여 XML 문서에 연결 여러 XML 문서에 공통적으로 적용하기에 적합한 방법형식

Section 01 DTD 개념

<!DOCTYPE  root_element [   .....   마크업선언 ( 원소선언 | 속성선언 | 개체선언 | 노테이션선언 | PI | 주석 )   ..... ]>

dtd_file.dtd

<!DOCTYPE root_element SYSTEM “dtd_file.dtd"> XML_ 마크업

xml_file.xml

Page 6: DTD 개념 DTD 문법 [실습] DTD 활용

6

혼합형 DTD내부 DTD 와 외부 DTD 를 혼합하여 적용 형식

Section 01 DTD 개념

<!DOCTYPE  root_element [   .....   마크업선언 ( 원소선언 | 속성선언 | 개체선언 | 노테이션선언 | PI | 주석 )   ..... ]>

dtd_file.dtd

<!DOCTYPE root_element SYSTEM “dtd_file.dtd" [   .....   마크업선언   ..... ]> XML_ 마크업

xml_file.xml

Page 7: DTD 개념 DTD 문법 [실습] DTD 활용

7

DTD 구성요소와 사용 예

Section 02 DTD 문법

Page 8: DTD 개념 DTD 문법 [실습] DTD 활용

8

Section 02 DTD 문법

DTD 문서 작성문서 타입 선언 형식

• DOCTYPE: DTD 문서 정의 키워드• root_element: XML 문서의 최상위 (root) 요소• source: “SYSTEM" 혹은 ” PUBLIC“ 키워드 사용 가능• location#: 외부 선언 DTD 파일 위치• [internal DTD]: 내부 선언 DTD 내용

[!DOCTYPE root_element source location1 location2 [internal DTD]>

Page 9: DTD 개념 DTD 문법 [실습] DTD 활용

9

DTD 작성 기본 규칙DTD 는 <?xml ..... ?> 로 XML 을 선언한다 .

DTD 문서 시작은 <! 로 시작하고 , DTD 문서를 정의하는 지시어인 DOCTYPE 을 선언한다 . • DOCTYPE 은 대문자로 표기해야 한다 .

<!DOCTYPE 다음에는 XML 문서에 최상위 요소 이름을 DTD 문서 이름으로 정의해야 한다 .

XML 문서의 DTD 선언은 [ 와 ] 사이에 정의하고 , DTD 정의 끝은 > 로 종료해야 한다 .

DTD 정의는 한 문서에 한 번만 정의할 수 있다 .

외부 DTD 문서의 정의는 문서 파일의 확장자로 dtd 를 사용한다 .

Section 02 DTD 문법

Page 10: DTD 개념 DTD 문법 [실습] DTD 활용

10

요소 선언요소 : XML 문서의 기본이 되는 논리적 단위XML 문서의 모든 내용물은 반드시 요소 안에 포함선언 형식

• element_name: 정의하려는 XML 문서의 요소 이름• contents: 요소가 가질 수 있는 데이터형 정의 컨텐츠는 크게 내용 모델과 내용 카테고리로 구분

Section 02 DTD 문법

<!ELEMENT element_name contents>

Page 11: DTD 개념 DTD 문법 [실습] DTD 활용

11

컨텐츠 구분 ( 내용 모델과 내용 카테고리 )

내용 모델 (contents model)

• #PCDATA : 요소는 일반 텍스트만을 포함

• 자식 (children) : 자식요소 (child element) 포함

• 혼합 (mixed) : 일반 텍스트 형태 (#PCDATA) 와 자식요소 포함

내용 카테고리 (contents category)

• 공백 (empty) : 요소에 내용을 갖지 않는 빈 요소 선언

• 모든 (any) : 요소에 내용은 모든 데이터를 포함 할 수 있음

Section 02 DTD 문법

Page 12: DTD 개념 DTD 문법 [실습] DTD 활용

12

문자 데이터 선언PCDATA 는 요소에 문자 데이터 ( 텍스트 ) 를 갖는 요소 선언형식

사용 예

Section 02 DTD 문법

<! <!ELEMENT element_name (#PCDATA)>element_name contents>

<!DOCTYPE 학생정보 [ <!ELEMENT 학생정보 (#PCDATA)>]>< 학생정보 > 학생들의 정보를 문자데이터 ( 텍스트 형태 ) 로 표현한다 .</ 학생정보 >

Page 13: DTD 개념 DTD 문법 [실습] DTD 활용

13

자식 요소 선언상위요소에 포함되어 있는 하위요소 선언

형식

Section 02 DTD 문법

[ 그림 5-2] 상위 요소와 자식 요소와의 관계 계층도

<!ELEMENT element_name (child_1, child_2, child_3, ...., child_n)>

Page 14: DTD 개념 DTD 문법 [실습] DTD 활용

14

Section 02 DTD 문법

자식 요소에서 정의할 수 있는 선언자 기호

선언자 기호 설명

  무기호 특별한 기호가 없으면 지정된 요소가 한 번만 정의

   , 선언된 요소의 순서대로 자식 요소를 사용

   | 선언된 요소의 사용을 선택적으로 자식 요소를 사용

   ( ) 요소를 그룹으로 선언해서 정의

   * 선언된 요소가 0 번 이상 사용될 수 있음 (0~n)

   + 선언된 요소가 1 번 이상 사용될 수 있음 (1~n)

   ? 선언된 요소가 0 번 또는 1 번 사용될 수 있음 (0~1)

[ 표 5-2] 자식 요소에서 정의할 수 있는 선언자 기호

Page 15: DTD 개념 DTD 문법 [실습] DTD 활용

15

선언자 기호 사용 예

Section 02 DTD 문법

요소 사용 설명

A A 라는 요소가 한번 정의되어 사용

A,B A 와 B 요소가 순서대로 한 번씩 사용

A|B A 또는 B 요소가 한 번만 나타남

A,B? A 요소가 먼저 한 번 사용되고 , B 요소가 0 또는 1 번 사용

(A,B,C) A,B,C 요소가 순차적으로 한 번씩 사용

A, (B|C)+A 요소가 먼저 사용되고 , B 또는 C 요소가 1 번 이상 사용

A, (B|C)*A 요소가 먼저 사용되고 , B 또는 C 요소가 0 번 이상 사용

[ 표 5-3] 선언자 기호 사용 예

Page 16: DTD 개념 DTD 문법 [실습] DTD 활용

16

혼합형 선언요소에 문자 데이터와 자식 요소를 동시에 선언할 때 사용형식

혼합형 선언을 할 때 주의 사항문자데이터 선언과 (#PCDATA) 함께 정의하는 경우에는 “ |”기호만 사용해서 선언문자데이터 선언 (#PCDATA) 은 반드시 먼저 선언혼합 내용의 반복성은 0 번 이상 (*) 만 정의될 수 있음

Section 02 DTD 문법

<!ELEMENT element_name (#PCDATA | child_1, child_2, ..., child_n)>

Page 17: DTD 개념 DTD 문법 [실습] DTD 활용

17

공백 선언데이터를 가지지 않는 빈 요소를 정의하기 위해 선언빈 요소를 정의하여 표현하는 방법• < 요소 ></ 요소 > : 시작요소와 끝 요소만을 표현하는 경우• < 요소 /> : 요소 하나만 표현하는 경우

형식

Section 02 DTD 문법

<!ELEMENT element_name EMPTY>

Page 18: DTD 개념 DTD 문법 [실습] DTD 활용

18

ANY 선언요소에 대해 조건을 두지 않을 경우에 사용따라서 요소는 모든 데이터 ( 문자 데이터 , 자식요소 , 주석 , CDATA 섹션 ) 를 포함할 수 있음형식

Section 02 DTD 문법

<!ELEMENT element_name ANY>

Page 19: DTD 개념 DTD 문법 [실습] DTD 활용

19

속성 선언요소가 정의되고 속성을 정의하여 사용요소와 관련된 속성 이름 , 속성 타입 , 속성 기본값 등을 정의하여 선언형식

• 대문자 “ ATTLIST" 로 시작• 요소 이름 : XML 문서에서 작성된 요소 이름을 선언한 후 요소에

적용되어질 속성 이름을 지정하여 선언• 속성 타입 : 열거형 , 문자열 , 토큰화된 타입• 속성 _ 기본값 : 초기값을 선언하거나 , #FIXED, #IMPLIED,

#REQUIRED

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 속성타입 속성 _ 기본값 데이터 _ 기본값 >

Page 20: DTD 개념 DTD 문법 [실습] DTD 활용

20

Section 02 DTD 문법

속성 기본값

속성 기본값 설명

속성 초기값 속성값을 지정하지 않은 경우에는 초기값을 사용하여 정의한다 .

#FIEXDXML 문서에서 속성이 정의될 수도 있고 안 될 수도 있다 . 명시된다면 초기값과 일치해야 한다 . 즉 정해진 값 이외의 값은 올 수 없다 .

#IMPLIEDXML 문서에서 속성이 선택적으로 사용된다 . 즉 속성이 명시될 수도 있고 명시되지 않을 수도 있다 .

#REQUIRED 속성이 반드시 명시적으로 사용이 되어야 한다 .

Page 21: DTD 개념 DTD 문법 [실습] DTD 활용

21

속성 타입열거형 : DTD 개발자가 정의한 여러 속성값 중 하나 사용문자열 타입 : CDATA 키워드를 사용하여 속성 값을 임의의 문자열로 가질 수 있음토큰 타입 : 키워드를 사용하여 속성값을 사용

Section 02 DTD 문법

토큰 타입 설명

ID 속성값이 유일한 문자 데이터를 의미 , 요소를 구분하는데 사용

IDREF 속성값이 문서 내부에서 선언된 ID 를 참조

IDREFS 속성값이 문서 내부에서 선언된 여러 ID 를 참조

NMTOKENID 와 유사하고 속성값을 XML 문서 작성 규칙에 맞춰 작성해야 함

NMTOKENS 공백 문자로 구분된 NMTOKEN 값을 여러 개 사용 가능

ENTITY 외부의 이진 데이터 참조

ENTITIES 공백 문자로 구분된 이진 데이터 이름을 여러 개 참조

Page 22: DTD 개념 DTD 문법 [실습] DTD 활용

22

Section 02 DTD 문법

열거형 타입 사용사용 가능한 값 목록은 속성 이름 다음에 괄호 안에 표현“|” 구분기호를 사용해서 속성에 사용할 텍스트를 여러 개 나열한 후 이 중 하나만 선택적으로 지정해서 사용정의 형식

• 괄호 안에 나열한 속성값 이외의 속성값은 사용 불가• 기본 속성값 선언에는 겹따옴표 (“”) 사용

<!ATTLIST 요소이름 속성이름 ( 속성값 _1 | 속성값 _2 .. 속성값 _n) “ 기본속성값” >

Page 23: DTD 개념 DTD 문법 [실습] DTD 활용

23

문자열 타입 (CDATA) 사용속성값에 대해 <, >, &, ‘ 와 “과 같은 특수문자를 제외하고는 어떤 문자열도 사용 가능특수문자를 사용할 때는 개체 참조 문자 (&lt;, &gt;, $amp;, &apos;, &quot) 를 사용형식

DTD 속성에 지정할 수 있는 문자열로 CDATA 만 허용PCDATA 는 지원하지 않음XML 문서 정의 부분에 CDATA 섹션과는 다른 용도이므로 사용할 때 주의가 필요

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 CDATA 속성기본값 >

Page 24: DTD 개념 DTD 문법 [실습] DTD 활용

24

ID 타입 사용XML 문서에서 요소를 식별되어야 할 경우 사용형식

속성기본값은 #IMPLIED 와 #REQUIRED 만 사용가능한 요소에서는 하나의 ID 속성만 정의ID 타입의 속성값은 반드시 XML 이름 부여 규칙을 따름

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 ID 속성기본값 >

Page 25: DTD 개념 DTD 문법 [실습] DTD 활용

25

IDREF 타입 사용ID 속성 타입으로 선언된 속성값 중 하나를 가짐XML 문서 내에서 정의한 ID 속성 중에 일치하는 ID 속성이 있어야 함기본적으로 ID 타입과 IDREF 타입은 1:1 의관계형식

ID 속성 타입을 사용하여 먼저 ID 속성을 정의해야 함정의된 ID 속성 중에서 IDREF 로 정의된 속성값을 지정해야 함IDREF 타입도 ID 타입과 마찬가지로 속성기본값은 #IMPLIED 와 #REQUIRED 만 사용 가능

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 IDREF 속성기본값 >

Page 26: DTD 개념 DTD 문법 [실습] DTD 활용

26

Section 02 DTD 문법

IDREFS 타입 사용ID 속성타입으로 선언된 속성값 중 여러 개 동시 사용 가능XML 문서 내에서 정의한 ID 속성 중에 일치하는 ID속성이 있어야 함 .기본적으로 ID 타입과 IDREFS 타입은 1:n 관계속성값 구분은 공백으로 구별형식

ID 속성 타입을 사용하여 먼저 ID 속성을 정의해야 함 .정의된 ID 속성중에서 IDREFS 로 정의된 속성값을 지정해야 함 .IDREFS 타입도 ID 타입과 마찬가지로 속성기본값은 #IMPLIED 와 #REQUIRED 만을 사용할 수 있음

<!ATTLIST 요소이름 속성이름 IDREFS 속성기본값 >

Page 27: DTD 개념 DTD 문법 [실습] DTD 활용

27

NMTOKEN (Name Token) 타입 선언XML 의 특수 문자와 공백문자를 포함할 수 없음속성값은 이름으로 사용할 수 있는 한 단어만 사용NMTOKEN 속성값은 XML1.0 스펙에 제시된 이름을 작성하는 규칙과 비슷하지만 첫 자리가 꼭 문자일 필요는 없음형식

속성기본값은 #IMPLIED 와 #REQUIRED 만 사용

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 NMTOKEN 속성기본값 >

Page 28: DTD 개념 DTD 문법 [실습] DTD 활용

28

NMTOKENS 타입 사용NMTOKEN 의 복수형태로 IDREFS 와 같이 NMTOKEN 값들을 공백으로 구분하여 여러 개를 연속적으로 사용형식

Section 02 DTD 문법

<!ATTLIST 요소이름 속성이름 NMTOKENS 속성기본값 >

Page 29: DTD 개념 DTD 문법 [실습] DTD 활용

29

개체 정의개체 정의 형식

개체 참조 형식

모든 개체 정의는 대문자 “ <!ENTITY” 로 시작“<!” 와 “ ENTITY” 사이에 공백 사용 금지개체 정의 예와 개체 사용 예

Section 02 DTD 문법

<!ENTITY 개체이름 내용 >

& 개체이름 ;

<!ENTITY 학교주소 “서울 용산구 한남동 산 8 번지 단국대학교” >

& 학교주소 ;

Page 30: DTD 개념 DTD 문법 [실습] DTD 활용

30

문자 개체문자 단위의 개체는 &# 다음에 문자 코드를 작성하고 끝에 세미콜론 (;) 을 붙여 코드 끝을 나타냄문자 코드는 유니 코드 값을 표현하고 , 코드 값은 10 진수 혹은 16 진수를 사용할 수 있다 . 단 , 16 진수를 사용할 때는 문자 코드 값 앞에 16 진수의 뜻으로 엑스 (x) 를 붙인다 .

Section 02 DTD 문법

Page 31: DTD 개념 DTD 문법 [실습] DTD 활용

31

개체 분류

Section 02 DTD 문법

Page 32: DTD 개념 DTD 문법 [실습] DTD 활용

32

일반 개체 선언과 사용매크로와 비슷한 개념으로 사용DTD 에서 일반 개체를 선언하고 , XML 문서 내용 중에서 개체 참조를 이용해서 개체를 사용형식

Section 02 DTD 문법

<!ENTITY 개체이름 개체내용 >

Page 33: DTD 개념 DTD 문법 [실습] DTD 활용

33

파라미터 개체 선언과 사용DTD 내부에서만 사용할 수 있는 개체[ 파라미터 개체 정의 ] 형식

[ 파라미터 개체 참조 ] 형식

Section 02 DTD 문법

<!ENTITY % 개체이름 개체내용 ></ 형식 >

% 개체이름 ;

Page 34: DTD 개념 DTD 문법 [실습] DTD 활용

34

Section 02 DTD 문법

외부 개체 선언과 사용외부 파일에 저장되어 있는 데이터외부 개체 위치는 시스템 식별자를 통해서 제공[ 외부 개체 정의 ] 형식

[ 외부 개체 참조 ] 형식

시스템 식별자로는 “ SYSTEM” 키워드 사용개체내용은 참조할 외부 파일 경로와 파일명을 입력

<!ENTITY 개체이름 SYSTEM 개체내용 >

& 개체이름 ;

Page 35: DTD 개념 DTD 문법 [실습] DTD 활용

35

노테이션 선언과 사용XML 문서에서는 노테이션 (NOTATION) 을 이용해서 이진 데이터를 처리하는 방법을 선언[ 노테이션 개체 선언 ] 형식

[ 노테이션 공용 개체 선언 ] 형식

이진 파일을 처리하면 “ SYSTEM" 키워드 사용이진 파일을 공개 식별자로 처리하면 ” PUBLIC" 키워드 사용

Section 02 DTD 문법

<!NOTATION 개체이름 PUBLIC " 개체경로 1" " 개체경로 2“>

<!NOTATION 개체이름 SYSTEM 개체경로 >

Page 36: DTD 개념 DTD 문법 [실습] DTD 활용

36

Section 02 DTD 문법

조건부 섹션 선언과 사용DTD 문서 내부에서 어떤 조건에 따라서 DTD 의 내용을 포함하거나 포함하지 않는 섹션[ 조건부 섹션 선언 ] 형식

[ 조건적인 DTD 선언 ] 형식

키워드로는 INCLUDE 와 IGNORE 를 사용INCLUDE 키워드로 정의한 부분은 유효성 검사에 대상IGNORE 키워드로 정의한 부분은 파서가 읽기는 하지만 유효성 검사에서는 제외

]>

<![ 키워드

Page 37: DTD 개념 DTD 문법 [실습] DTD 활용

37

영화정보 DTD 작성 1

① 1 단계 : XML 문서 수집

② 2 단계 : XML 문서 분석

③ 3 단계 : 트리 구조 작성

④ 4 단계 : DTD 문법에 맞게 DTD 부분 작성

⑤ 5 단계 : 부분 DTD 를 하나의 DTD 로 통합

⑥ 6 단계 : 유효한 XML 문서인지 확인

Section 03 DTD 활용

Page 38: DTD 개념 DTD 문법 [실습] DTD 활용

38

① 1 단계 : XML 문서 수집 (1/3)<?xml version="1.0" encoding="euc-kr"?><movies> <movie> <movieName>살인의 추억 </movieName> <Company name="싸이더스 "> <Address> < 시 > 서울시 </ 시 > < 구 > 동작구 </ 구 > < 동 >신대방동 </ 동 > </Address> <Phone>02-799-1234</Phone> <Fax>02-788-4321</Fax> <URL href="http://www.movie.com"/> </Company> <Hero>송강호 </Hero> <Hero>김상경 </Hero> <Price unit=" 원 ">6,000</Price> <date> <year>2002</year><month>10</month> <day>28</day> </date> </movie>

movies.xml

[ 실습 ] 영화 정보 DTD 작성 (1/9)

Page 39: DTD 개념 DTD 문법 [실습] DTD 활용

39

① 1 단계 : XML 문서 수집 (2/3)

<movie> <name> 자카르타 </name> <company name=" 연우필름 "> <address> < 시 > 서울시 </ 시 > < 구 >강남구 </ 구 > < 동 >역삼동 </ 동 > </address> <phone>02-787-2989</phone> <url /></Company> <hero>김상중 </hero> <hero> 임창정 </hero> <price unit=" 원 ">7,000</price> <date> <year>2003</year> <month>02</month> <day>10</day> </date> </movie>

movies.xml

[ 실습 ] 영화 정보 DTD 작성 (2/9)

Page 40: DTD 개념 DTD 문법 [실습] DTD 활용

40

① 1 단계 : XML 문서 수집 (3/3)

<movie> <name>똥개 </name> <company name=" 진인사필름 "> <address> < 시 > 서울시 </ 시 > < 구 > 종로구 </ 구 > < 동 > 내수동 </ 동 > </address> <phone>02-909-3746</phone> <Fax>02-287-2938</Fax> <url /></company> <hero> 정우성 </hero> <Price unit=" 원 ">8,000</Price> <date> <year>2003</year> <month>08</month> <day>11</day> </date> </movie></movies>

movies.xml

[ 실습 ] 영화 정보 DTD 작성 (3/9)

Page 41: DTD 개념 DTD 문법 [실습] DTD 활용

41

② 2 단계 : XML 문서 분석최상위 요소는 <movies> 로 한다 . <movies> 요소 안에 <movie> 요소가 여러번 반복하여 나타날 수 있다 .

<movie> 요소에는 <movieName>, <Company>, <Hero>, <Price>, <date> 자식요소가 존재한다 .

<movieName> 요소는 영화 명칭을 나타낸다 .

<Company> 요소는 “ name” 속성을 가지는데 그 값은 반드시 존재한다 .

<URL> 요소는 “ href” 속성을 가지는데 그 값은 없어도 된다 .

<Company> 요소는 <Address>, <Phone>, <Fax>, <URL> 을 자식 요소로 존재한다 .

<Address> 요소는 < 시 >, < 구 >, < 동 > 을 자식 요소로 존재한다 .

<Fax> 요소는 회사에 따라서 값을 가질 수도 있고 , <URL> 은 요소 데이터는 가지지 않는다 .

<Hero> 요소는 한 명이상 여러 명 올 수 있다 .

<Price> 요소는 “ unit” 이라는 속성을 가지는데 , 그 값은 항상 “원”이라는 단위만 올 수 있다 .

<date> 요소는 < 연도 >, <월 >, < 일 > 을 자식 요소로 가진다 .

DTD 는 외부 DTD 를 만들고 XML 에서 선언해서 사용한다 .

[ 실습 ] 영화 정보 DTD 작성 (4/9)

Page 42: DTD 개념 DTD 문법 [실습] DTD 활용

42

③ 3 단계 : 트리 구조 작성

[ 그림 5-7] 내용 기반 트리 구조도

[ 실습 ] 영화 정보 DTD 작성 (5/9)

Page 43: DTD 개념 DTD 문법 [실습] DTD 활용

43

④ 4 단계 : DTD 문법에 맞게 DTD 부분 작성 (1/2)최상위 요소는 <movies> 로 한다 . <movies> 요소 안에 <movie> 요소가 여러번 반복하여 나타날 수 있다 .

==> <!ELEMENT movies (movie+)>

<movie> 요소에는 <movieName>, <Company>, <Hero>, <Price>, <date> 자식요소가 존재한다 .

==><!ELEMENT movie (movieName, Company, Hero+, Price, date)>

<movieName> 요소는 영화 명칭을 나타낸다 .

==><!ELEMENT movieName (#PCDATA)>

<company> 요소는 “ name” 속성을 가지는데 그 값은 반드시 존재한다 .

==> <!ATTLIST Company name CDATA #REQUIRED>

<URL> 요소는 “ href” 속성을 가지는데 그 값은 없어도 된다 .

==> <!ATTLIST URL href CDATA #IMPLIED>

<Company> 요소는 <Address>, <Phone>, <Fax>, <URL> 을 자식 요소로 존재한다 .

==> <!ELEMENT Company (Address, Phone, Fax?, Url?)>

<Address> 요소는 < 시 >, < 구 >, < 동 > 을 자식 요소로 존재한다 .

[ 실습 ] 영화 정보 DTD 작성 (6/9)

Page 44: DTD 개념 DTD 문법 [실습] DTD 활용

44

④ 4 단계 : DTD 문법에 맞게 DTD 부분 작성 (2/2) ==> <!ELEMENT Address ( 시 , 구 , 동 )>

<!ELEMENT 구 (#PCDATA)>

<!ELEMENT 시 (#PCDATA)>

<!ELEMENT 동 (#PCDATA)>

<Fax> 요소는 회사에 따라서 값을 가질 수도 있고 , <URL> 은 요소 데이터는 가지지 않는다 .

==> <!ELEMENT Fax ANY>

<!ELEMENT URL EMPTY>

<Hero> 요소는 한 명이상 여러 명 올 수 있다 .

==> <!ELEMENT movie (movieName, Company, Hero+, Price, date)>

==> <!ELEMENT Hero (#PCDATA)>

<price> 요소는 “ unit” 이라는 속성을 가지는데 , 그 값은 항상 “원”이라는 단위만 올 수 있다 .

==> <!ATTLIST Price unit CDATA #FIXED " 원 ">

<date> 요소는 < 연도 >, <월 >, < 일 > 을 자식 요소로 가진다 .

==> <!ELEMENT date ( 연도 , 월 , 일 )>

<!ELEMENT 연도 (#PCDATA)>

<!ELEMENT 월 (#PCDATA)>

<!ELEMENT 일 (#PCDATA)>

DTD 는 외부 DTD 를 만들고 XML 에서 선언해서 사용한다 .

==> <!DOCTYPE movies SYSTEM "movies.dtd">

[ 실습 ] 영화 정보 DTD 작성 (7/9)

Page 45: DTD 개념 DTD 문법 [실습] DTD 활용

45

⑤ 5 단계 : 부분 DTD 를 하나의 DTD 로 통합<!ELEMENT movies (movie+)> <!ELEMENT movie (movieName, Company, Hero+, Price, date)> <!ELEMENT movieName (#PCDATA)> <!ELEMENT Company (Address, Phone, Fax?, Url?)> <!ATTLIST Company

name CDATA #REQUIRED> <!ELEMENT Address ( 시 , 구 , 동 )> <!ELEMENT 시 (#PCDATA)> <!ELEMENT 구 (#PCDATA)> <!ELEMENT 동 (#PCDATA)> <!ELEMENT Phone (#PCDATA)> <!ELEMENT Fax ANY> <!ELEMENT URL EMPTY> <!ATTLIST URL

href CDATA #IMPLIED> <!ELEMENT Hero (#PCDATA)> <!ELEMENT Price (#PCDATA)> <!ATTLIST Price

unit CDATA #FIXED " 원 "> <!ELEMENT date ( 연도 , 월 , 일 )> <!ELEMENT 연도 (#PCDATA)> <!ELEMENT 월 (#PCDATA)> <!ELEMENT 일 (#PCDATA)>

movies.dtd

[ 실습 ] 영화 정보 DTD 작성 (8/9)

Page 46: DTD 개념 DTD 문법 [실습] DTD 활용

46

⑥ 6 단계 : 유효한 XML 문서인지 확인

[ 그림 5-8] 실행 결과

[ 실습 ] 영화 정보 DTD 작성 (9/9)

Page 47: DTD 개념 DTD 문법 [실습] DTD 활용

Thank you