22
XML DTD 의 의의 XML DTD 의 의의 [email protected] 한한한한한한한한 한한한한한한

Xml 4)xml dtd의 이해

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Xml 4)xml dtd의 이해

XML DTD 의 이해

XML DTD 의 이해

김 현[email protected]한국학중앙연구원

한국학대학원

Page 2: Xml 4)xml dtd의 이해

XML DTD 의 이해XML 의 이해1. DTD 란 ?

1. DTD 란 ?

Page 3: Xml 4)xml dtd의 이해

XML DTD 의 이해

3

1. DTD 란 ? DTD (Document Type Definition)

문서의 구조를 정의하기 위한 문서 XML 문서의 구조를 명시적으로 선언하는 역할 내용 요소의 계층 관계 , 순서나 반복성 등을 미리 정의

DTD 의 필요성 문서의 구조를 미리 정의하고 , 이를 여러 XML 문서가 공유하도록

함으로써 , 문서의 구조와 형식을 표준화 문서의 구조를 명시적으로 드러냄으로써 정보 요소 처리의 자동화를

가능하게 함 .

※ DTD 와 XML 의 작성 순서 ‘DTD 작성’ → ‘ XML 작성’이 바른 순서 그러나 반드시 DTD 를 만든 후 XML 문서를 만들 수 있는 것은 아니

다 . 현실적인 방법 : 프로토타입 XML 문서 작성 → DTD 작성 → XML

작성

1. DTD 란 ?

Page 4: Xml 4)xml dtd의 이해

XML DTD 의 이해

4

2. DTD 의 종류 (1)

내부 DTD XML 문서 속에 DTD 를 포함시키는 방법

<!DOCTYPE  root_element [

  .....

  .....

]>

<root_element>

…..

…..

</root_element>

Page 5: Xml 4)xml dtd의 이해

XML DTD 의 이해

5

외부 DTD DTD  문서를 별도로 작성하여 XML 문서에 연결

DTD 파일 *.dtd

XML 파일 *.xml

<!ELEMENT root_element ..... > ..... …..

<!DOCTYPE root_element SYSTEM “filename.dtd"> <root_element> ..... …..</root_element>

2. DTD 의 종류 (2)

Page 6: Xml 4)xml dtd의 이해

XML DTD 의 이해XML 의 이해2. DTD 작성 방법

2. DTD 작성 방법

Page 7: Xml 4)xml dtd의 이해

XML DTD 의 이해

7

문서 구조 분석

< 편지 >        < 수신 > 영이에게 </ 수신 >        < 본문 > < 문단 >< 지명 > 서울 </ 지명 > 을 떠난 지 1 년이군요 . </ 문단 > < 문단 >< 인명 > 돌이 </ 인명 > 는 잘 있지요 ? </ 문단 >                 < 문단 > 당신을 사랑합니다 .</ 문단 >        </ 본문 >        < 날짜 >2007. 4. 26</ 날짜 >        < 발신 > 철수 </ 발신 ></ 편지 >

편지

수신TEXT

본문 날짜TEXT

발신TEXT

문단TEXT

인명

지명

상위요소 ( 부모요소 )

하위요소 ( 자식요소 )

형제요소

2. DTD 작성 방법

Page 8: Xml 4)xml dtd의 이해

XML DTD 의 이해

8

문서 요소 추출

편지

수신TEXT

본문 날짜TEXT

발신TEXT

문단TEXT

인명

지명

<!ELEMENT 편지 ( 수신 , 본문 , 날짜 ?, 발신 )>

<!ELEMENT 인명 (#PCDATA)>

<!ELEMENT 지명 (#PCDATA)>

<!ELEMENT 문단 (#PCDATA | 인명 | 지명 )*>

<!ELEMENT 수신 (#PCDATA)><!ELEMENT 본문 ( 문단 +)><!ELEMENT 날짜 (#PCDATA)><!ELEMENT 발신 (#PCDATA)>

2. DTD 작성 방법

Page 9: Xml 4)xml dtd의 이해

XML DTD 의 이해

9

<?xml version="1.0" encoding="UTF-8"?>

<!--DTD written by Hyeon Kim 2005. 5. 5-->

<!ENTITY % 고유명사 " 인명 | 지명 ">

<!ELEMENT 편지 ( 수신 , 본문 , 날짜 ?, 발신 )>

<!ELEMENT 수신 (#PCDATA)><!ELEMENT 본문 ( 문단 +)><!ELEMENT 날짜 (#PCDATA)><!ELEMENT 발신 (#PCDATA)><!ELEMENT 문 단 (#PCDATA | % 고 유 명

사 ;)*><!ELEMENT 인명 (#PCDATA)><!ELEMENT 지명 (#PCDATA)>

<?xml version="1.0" encoding=“UTF-8"?><?xml-stylesheet type="text/xsl" href="letter.xsl"?>

<!DOCTYPE 편지 SYSTEM "letter.dtd">

< 편지 >

        < 수신 > 영이에게 </ 수신 >

        < 본문 >

< 문단 >< 지명 > 서울 </ 지명 > 을 떠난 지 1

년이군요 . </ 문단 >

< 문단 >< 인명 > 돌이 </ 인명 > 는 잘 있지요 ?

</ 문단 >

                < 문단 > 당신을 사랑합니다 .</ 문단 >

        </ 본문 >

        < 날짜 >2007. 4. 26</ 날짜 >

        < 발신 > 철수 </ 발신 >

</ 편지 >

DTD + XML

DTD 와 XML 의 연계 정보

2. DTD 작성 방법

Page 10: Xml 4)xml dtd의 이해

XML DTD 의 이해

10

문서 타입 선언 형식 <!DOCTYPE root_element source_location1 location2> 

외부 서버에 DTD 가 존재하는 경우는 URL 로 표현 <!DOCTYPE letter SYSTEM digerati.aks.ac.kr/DTDs/letter.dtd

>

내부 서버에 DTD 가 존재하는 경우는 절대 혹은 상대경로로 표현

<!DOCTYPE letter SYSTEM "../DTDs/letter.dtd">

각 분야에서 잘 알려진 표준 DTD 의 위치 표현 <!DOCTYPE letter PUBLIC "SchemaBank/Letter"

"http://digerati.aks.ac.kr/DTDs/letter.dtd" >

XML 문서상의 문서 타입 선언2. DTD 작성 방법

Page 11: Xml 4)xml dtd의 이해

XML DTD 의 이해

11

요소 선언 형식 <!ELEMENT element_name content>

내용 모델 (content model) #PCDATA : 요소는 텍스트만을 포함할 수 있다 . 자식 (children) : 자식요소 (child element) 를 포함할 수

있다 . 혼합 (mixed) : 텍스트 (#PCDATA) 와 자식요소를 같이 가질

수 있다 .

내용 카테고리 (content category) 공백 (empty) : 요소값을 갖지 않는 빈 요소를 선언한다 . 모든 (any) : 요소값으로 어떤 데이터도 포함 할 수 있다 .

요소 선언 (1)2. DTD 작성 방법

Page 12: Xml 4)xml dtd의 이해

XML DTD 의 이해

12

문자 데이터 선언 <!ELEMENT 수신 (#PCDATA)>

자식 요소 선언 <!ELEMENT 편지 ( 수신 , 본문 , 날짜 , 발신 )>

    < 수신 > 영이에게 </ 수신 >

 < 편지 >        < 수신 > 영이에게 </ 수신 >        < 본문 > 당신을 사랑합니다 .</ 본문 >        < 날짜 >2007. 5. 3</ 날짜 >        < 발신 > 철수 </ 발신 ></ 편지 >

요소 선언 (2)2. DTD 작성 방법

Page 13: Xml 4)xml dtd의 이해

XML DTD 의 이해

13

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

선언자 기호 설명

  무기호 특별한 기호가 없으면 선언된 요소를 한 번만 사용

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

   | 나열된 요소의 하나를 자식 요소로 사용

   ( ) 요소를 그룹으로 선언

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

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

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

요소 선언 (3)2. DTD 작성 방법

Page 14: Xml 4)xml dtd의 이해

XML DTD 의 이해

14

요소 선언자 기호 사용 예

요소 사용 설명

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 번 이상 사용

요소 선언 (4)2. DTD 작성 방법

Page 15: Xml 4)xml dtd의 이해

XML DTD 의 이해

15

혼합 요소 혼합형 선언

<!ELEMENT 문단 (#PCDATA | 인명 | 지명 )*>

< 문단 >< 지명 > 서울 </ 지명 > 을 떠난 지 1년이군요 . < 인명 > 돌이 </ 인명 > 는 잘 있지요 ? 당신을 사랑합니다 .</ 문단 >

요소 선언 (5)2. DTD 작성 방법

Page 16: Xml 4)xml dtd의 이해

XML DTD 의 이해

16

속성 선언 <!ATTLIST 요소이름 속성이름 속성타입 데이터타입 데이터초기값 >

속성 타입

속성 타입 설명

CDATA 문자형 . 임의의 문자열이 속성값으로 될 수 있다 .

(..|..|..) 열거형 . 나열된 값 중 하나가 속성값으로 될 수 있다 .

ID 문서 전체를 통해 유일한 값이 속성값으로 되어야 한다 .

IDREF ID 타입 속성 값 중 하나가 와야 한다 .

IDREFS ID 타입 속성 값 중 하나 또는 그 이상이 올 수 있다 .

속성 선언 (1)

Page 17: Xml 4)xml dtd의 이해

XML DTD 의 이해

17

속성 기본값 선언

데이터 타입 데이터 초기값 설명

- 있음데이터 타입이 정의되지 않은 경우 . 지정된 초기값이 속성 값으로 부여된다 .

#FIXED 있음 속성이 주어진다면 반드시 정해진 값 ( 초기값 ) 이 되어야 한다 .

#IMPLIED -속성이 주어질 수도 있고 아닐 수도 있다 .

#REQUIRED -어떠한 값이든 속성 값이 주어져야 한다 .

속성 선언 (2)2. DTD 작성 방법

Page 18: Xml 4)xml dtd의 이해

XML DTD 의 이해

18

속성 선언 예 <!ELEMENT 이름 (#PCDATA)>

<!ATTLIST 이름 국적 CDATA #IMPLIED> <!ATTLIST 이름 성별 ( 남 | 여 ) #REQUIRED> <!ATTLIST 이름 여권번호 ID #REQUIRED> <!ATTLIST 이름 배우자 IDREF #IMPLIED> <!ATTLIST 이름 동반자 IDREFS #IMPLIED>

속성 선언 (3)2. DTD 작성 방법

Page 19: Xml 4)xml dtd의 이해

XML DTD 의 이해

19

DTD

<!ELEMENT individuals (individual+)><!ELEMENT individual (first_name, last_name)>

<!ATTLIST individualindividual_id ID #REQUIREDparent_id IDREFS #IMPLIED>

<!ELEMENT first_name (#PCDATA)><!ELEMENT last_name (#PCDATA)>

요소 및 속성 선언 예시2. DTD 작성 방법

Page 20: Xml 4)xml dtd의 이해

XML DTD 의 이해

20

XML

<individuals> <individual individual_id="e10001" parent_id="e10002

e10003"> <first_name>Bart</first_name> <last_name>Simpson</last_name> </individual> <individual individual_id="e10002"> <first_name>Homer</first_name> <last_name>Simpson</last_name> </individual> <individual individual_id="e10003"> <first_name>Marge</first_name> <last_name>Simpson</last_name> </individual></individuals>

요소 및 속성 선언 예시2. DTD 작성 방법

Page 21: Xml 4)xml dtd의 이해

XML DTD 의 이해

21

개체 (ENTITY) 란 ? XML 문서 상에서 하나의 단위로 취급되는 정보

개체 정의 <!ENTITY  % 개체이름 내용 >

개체 참조 % 개체이름 ;

개체 사용 예

[ 개체 정의 예 ]

<!ENTITY  고유명사 “인명 | 지명 | 서명 | 기관” >

[ 개체 사용 예 ]

% 고유명사 ;

개체 선언2. DTD 작성 방법

Page 22: Xml 4)xml dtd의 이해

XML DTD 의 이해

22

개체 (ENTITY) 사용 예

<!ENTITY  고유명사 “인명 | 지명 | 서명 | 기관” >

<!ELEMENT 기사 ( 제목 , 본문 )><!ELEMENT 제목 (#PCDATA | % 고유명사 ;)*><!ELEMENT 본문 ( 문단 +)><!ELEMENT 문단 (#PCDATA | % 고유명사 ;)*><!ELEMENT 인명 (#PCDATA)><!ELEMENT 지명 (#PCDATA)><!ELEMENT 서명 (#PCDATA)><!ELEMENT 기관 (#PCDATA)>

개체 선언2. DTD 작성 방법