Xml 4)xml dtd의 이해
description
Transcript of Xml 4)xml dtd의 이해
XML DTD 의 이해XML 의 이해1. DTD 란 ?
1. DTD 란 ?
XML DTD 의 이해
3
1. DTD 란 ? DTD (Document Type Definition)
문서의 구조를 정의하기 위한 문서 XML 문서의 구조를 명시적으로 선언하는 역할 내용 요소의 계층 관계 , 순서나 반복성 등을 미리 정의
DTD 의 필요성 문서의 구조를 미리 정의하고 , 이를 여러 XML 문서가 공유하도록
함으로써 , 문서의 구조와 형식을 표준화 문서의 구조를 명시적으로 드러냄으로써 정보 요소 처리의 자동화를
가능하게 함 .
※ DTD 와 XML 의 작성 순서 ‘DTD 작성’ → ‘ XML 작성’이 바른 순서 그러나 반드시 DTD 를 만든 후 XML 문서를 만들 수 있는 것은 아니
다 . 현실적인 방법 : 프로토타입 XML 문서 작성 → DTD 작성 → XML
작성
1. DTD 란 ?
XML DTD 의 이해
4
2. DTD 의 종류 (1)
내부 DTD XML 문서 속에 DTD 를 포함시키는 방법
<!DOCTYPE root_element [
.....
.....
]>
<root_element>
…..
…..
</root_element>
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)
XML DTD 의 이해XML 의 이해2. DTD 작성 방법
2. DTD 작성 방법
XML DTD 의 이해
7
문서 구조 분석
< 편지 > < 수신 > 영이에게 </ 수신 > < 본문 > < 문단 >< 지명 > 서울 </ 지명 > 을 떠난 지 1 년이군요 . </ 문단 > < 문단 >< 인명 > 돌이 </ 인명 > 는 잘 있지요 ? </ 문단 > < 문단 > 당신을 사랑합니다 .</ 문단 > </ 본문 > < 날짜 >2007. 4. 26</ 날짜 > < 발신 > 철수 </ 발신 ></ 편지 >
편지
수신TEXT
본문 날짜TEXT
발신TEXT
문단TEXT
인명
지명
상위요소 ( 부모요소 )
하위요소 ( 자식요소 )
형제요소
2. DTD 작성 방법
XML DTD 의 이해
8
문서 요소 추출
편지
수신TEXT
본문 날짜TEXT
발신TEXT
문단TEXT
인명
지명
<!ELEMENT 편지 ( 수신 , 본문 , 날짜 ?, 발신 )>
<!ELEMENT 인명 (#PCDATA)>
<!ELEMENT 지명 (#PCDATA)>
<!ELEMENT 문단 (#PCDATA | 인명 | 지명 )*>
<!ELEMENT 수신 (#PCDATA)><!ELEMENT 본문 ( 문단 +)><!ELEMENT 날짜 (#PCDATA)><!ELEMENT 발신 (#PCDATA)>
2. 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 작성 방법
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 작성 방법
XML DTD 의 이해
11
요소 선언 형식 <!ELEMENT element_name content>
내용 모델 (content model) #PCDATA : 요소는 텍스트만을 포함할 수 있다 . 자식 (children) : 자식요소 (child element) 를 포함할 수
있다 . 혼합 (mixed) : 텍스트 (#PCDATA) 와 자식요소를 같이 가질
수 있다 .
내용 카테고리 (content category) 공백 (empty) : 요소값을 갖지 않는 빈 요소를 선언한다 . 모든 (any) : 요소값으로 어떤 데이터도 포함 할 수 있다 .
요소 선언 (1)2. DTD 작성 방법
XML DTD 의 이해
12
문자 데이터 선언 <!ELEMENT 수신 (#PCDATA)>
자식 요소 선언 <!ELEMENT 편지 ( 수신 , 본문 , 날짜 , 발신 )>
< 수신 > 영이에게 </ 수신 >
< 편지 > < 수신 > 영이에게 </ 수신 > < 본문 > 당신을 사랑합니다 .</ 본문 > < 날짜 >2007. 5. 3</ 날짜 > < 발신 > 철수 </ 발신 ></ 편지 >
요소 선언 (2)2. DTD 작성 방법
XML DTD 의 이해
13
요소 선언자 기호 자식 요소에서 정의할 수 있는 선언자 기호
선언자 기호 설명
무기호 특별한 기호가 없으면 선언된 요소를 한 번만 사용
, 선언된 순서대로 자식 요소를 사용
| 나열된 요소의 하나를 자식 요소로 사용
( ) 요소를 그룹으로 선언
* 선언된 요소가 0 번 이상 사용될 수 있음 (0~n)
+ 선언된 요소가 1 번 이상 사용될 수 있음 (1~n)
? 선언된 요소가 0 번 또는 1 번 사용될 수 있음 (0~1)
요소 선언 (3)2. 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 작성 방법
XML DTD 의 이해
15
혼합 요소 혼합형 선언
<!ELEMENT 문단 (#PCDATA | 인명 | 지명 )*>
< 문단 >< 지명 > 서울 </ 지명 > 을 떠난 지 1년이군요 . < 인명 > 돌이 </ 인명 > 는 잘 있지요 ? 당신을 사랑합니다 .</ 문단 >
요소 선언 (5)2. DTD 작성 방법
XML DTD 의 이해
16
속성 선언 <!ATTLIST 요소이름 속성이름 속성타입 데이터타입 데이터초기값 >
속성 타입
속성 타입 설명
CDATA 문자형 . 임의의 문자열이 속성값으로 될 수 있다 .
(..|..|..) 열거형 . 나열된 값 중 하나가 속성값으로 될 수 있다 .
ID 문서 전체를 통해 유일한 값이 속성값으로 되어야 한다 .
IDREF ID 타입 속성 값 중 하나가 와야 한다 .
IDREFS ID 타입 속성 값 중 하나 또는 그 이상이 올 수 있다 .
속성 선언 (1)
XML DTD 의 이해
17
속성 기본값 선언
데이터 타입 데이터 초기값 설명
- 있음데이터 타입이 정의되지 않은 경우 . 지정된 초기값이 속성 값으로 부여된다 .
#FIXED 있음 속성이 주어진다면 반드시 정해진 값 ( 초기값 ) 이 되어야 한다 .
#IMPLIED -속성이 주어질 수도 있고 아닐 수도 있다 .
#REQUIRED -어떠한 값이든 속성 값이 주어져야 한다 .
속성 선언 (2)2. DTD 작성 방법
XML DTD 의 이해
18
속성 선언 예 <!ELEMENT 이름 (#PCDATA)>
<!ATTLIST 이름 국적 CDATA #IMPLIED> <!ATTLIST 이름 성별 ( 남 | 여 ) #REQUIRED> <!ATTLIST 이름 여권번호 ID #REQUIRED> <!ATTLIST 이름 배우자 IDREF #IMPLIED> <!ATTLIST 이름 동반자 IDREFS #IMPLIED>
속성 선언 (3)2. 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 작성 방법
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 작성 방법
XML DTD 의 이해
21
개체 (ENTITY) 란 ? XML 문서 상에서 하나의 단위로 취급되는 정보
개체 정의 <!ENTITY % 개체이름 내용 >
개체 참조 % 개체이름 ;
개체 사용 예
[ 개체 정의 예 ]
<!ENTITY 고유명사 “인명 | 지명 | 서명 | 기관” >
[ 개체 사용 예 ]
% 고유명사 ;
개체 선언2. DTD 작성 방법
XML DTD 의 이해
22
개체 (ENTITY) 사용 예
<!ENTITY 고유명사 “인명 | 지명 | 서명 | 기관” >
<!ELEMENT 기사 ( 제목 , 본문 )><!ELEMENT 제목 (#PCDATA | % 고유명사 ;)*><!ELEMENT 본문 ( 문단 +)><!ELEMENT 문단 (#PCDATA | % 고유명사 ;)*><!ELEMENT 인명 (#PCDATA)><!ELEMENT 지명 (#PCDATA)><!ELEMENT 서명 (#PCDATA)><!ELEMENT 기관 (#PCDATA)>
개체 선언2. DTD 작성 방법