DTD 를 이용한 마크업 언어 개발

83
DTD 를 를를를 를를를 를를 를를 2008.9.9 를를를

description

DTD 를 이용한 마크업 언어 개발. 2008.9.9 최진명. 목차. DTD 개요 DTD 를 사용한 XML 문서 작성 ELEMENT ATTLIST ENTITY NOTATION. DTD 의 물리적 구조. DTD(Document Type Definition) XML 문서의 구성요소 ( 태그 및 속성 ) 들을 정의 구성요소들 사이의 관계 , 데이터 타입 , 출현빈도 등의 규칙을 정의. DTD 의 필요성. DTD(Document Type Definition) 란 ? - PowerPoint PPT Presentation

Transcript of DTD 를 이용한 마크업 언어 개발

Page 1: DTD 를 이용한 마크업 언어 개발

DTD 를 이용한 마크업 언어 개발

2008.9.9

최진명

Page 2: DTD 를 이용한 마크업 언어 개발

목차

• DTD 개요• DTD 를 사용한 XML 문서 작성• ELEMENT• ATTLIST• ENTITY• NOTATION

Page 3: DTD 를 이용한 마크업 언어 개발

DTD 의 물리적 구조

• DTD(Document Type Definition)– XML 문서의 구성요소 ( 태그 및 속성 )

들을 정의– 구성요소들 사이의 관계 , 데이터 타입 ,

출현빈도 등의 규칙을 정의

Page 4: DTD 를 이용한 마크업 언어 개발

DTD 의 필요성

• DTD(Document Type Definition) 란 ?– XML 문서의 구조를 명시적으로 정의한 것

• Valid XML( 유효한 XML) 이란 ?– Well formed XML & DTD 의 구조화 규칙을 준수하는

XML

• DTD 의 구성 및 작성 절차– Element type declaration

– Attribute list declaration

– Entity declaration

– Notation declaration

DTD 개요 필요성 DTD DTD 역할 Valid XML ExampleDTD+XMLELEMENTATTLISTENTITYNOTATION

Page 5: DTD 를 이용한 마크업 언어 개발

DTD (Document Type Definition)

• DTD– XML 문서의 타입 (Document Type) 을

기술하는 표준화된 방법– App. 들에 의해 공유되는 XML 어휘집 (XML vo

cabulary) 에 해당하는 데이터에 대한 설명서

• Document Type– 동일한 XML 어휘집을 공유하는 XML

문서들의 모임– cf) 프로그래밍 언어에서의 Class

• Document Instance– Document Type 을 만족하는 개별 XML 문서– cf) 프로그래밍 언어에서의 Object

DTD 개요 필요성 DTD DTD 역할 Valid XML ExampleDTD+XMLELEMENTATTLISTENTITYNOTATION

Page 6: DTD 를 이용한 마크업 언어 개발

DTD 의 역할

• 정확하고 공식적인 방법을 통해 문서의 구조를 기술

• 필수적인 요소의 존재 여부 검사• 허용되지 않는 요소의 포함 여부 검사• 요소 content, 트리 구조 및 속성 값의

규제• 속성들의 기본 값 제공

DTD 개요 필요성 DTD DTD 역할 Valid XML ExampleDTD+XMLELEMENTATTLISTENTITYNOTATION

Page 7: DTD 를 이용한 마크업 언어 개발

Valid XML

• Valid XML– Well-formed XML 문서이면서 DTD 에 정의된

문법과 구조화 규칙을 따르는 문서– XML Validating Parser ( 유효성 검증 파서 )

• XML Validating Parser 들의 예– MSXML :– Xerces-C++ : The Apache XML Project– Xerces-J : The Apache XML Project

DTD 개요 필요성 DTD DTD 역할 Valid XML ExampleDTD+XMLELEMENTATTLISTENTITYNOTATION

Page 8: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding=“euc-kr”?><!DOCTYPE 이달의베스트셀러 [ <!ELEMENT 이달의베스트셀러 ( 베스트셀러 )> <!ELEMENT 베스트셀러 ( 분야 , 종류 , 제목 , 저자 ,

출판사 )> <!ELEMENT 분야 (#PCDATA)> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)>]>< 이달의베스트셀러 > < 베스트셀러 > < 분야 > 경제 , 경영 </ 분야 > < 종류 > 금융 , 증권 </ 종류 > < 제목 > 부자 아빠 , 가난한 아빠 </ 제목 > < 저자 > 로버트 기요사키 </ 저자 > < 출판사 > 황금가지 </ 출판사 > </ 베스트셀러 ></ 이달의베스트셀러 >

DTD 개요 필요성 DTD DTD 역할 Valid XML Example(xml)DTD+XMLELEMENTATTLISTENTITYNOTATION bestseller.xml

Page 9: DTD 를 이용한 마크업 언어 개발

DTD 와 XML 의 결합

• 하나의 XML 문서는 단 하나의 DTD 와 결합 가능– 내부 Subset 과 외부 Subset 으로 구성– 하나의 내부 Subset, 하나의 외부 Subset,

내부와 외부 Subset 을 모두 사용• 내부 Subset 우선

– 내부 Subset : 개발 시 또는 기존의 표준 DTD를 사용하면서 자신의 목적에 맞게 약간의 수정이 필요할 경우 사용

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 10: DTD 를 이용한 마크업 언어 개발

DOCTYPE 선언• DOCTYPE 선언

– XML 문서와 DTD 를 연결하기 위한 선언

– XML 선언 뒤 , Element 나 문자 데이터 content 앞에 위치

• <!DOCTYPE ...>– 일반적인 XML 태그 한정자 (“<”, “>”)

– 특별한 XML 선언임을 알려 주는 느낌표 (“!”)

– DOCTYPE 예약어

<!DOCTYPE 이달의베스트셀러 [

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 11: DTD 를 이용한 마크업 언어 개발

내부 DTD 선언• XML 문서내에 DTD 선언을 삽입

• <!DOCTYPE 루트엘리먼트 [내부 DTD 선언

]>

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 12: DTD 를 이용한 마크업 언어 개발

외부 DTD

• 일반적으로 사용하는 DTD 의 형태

• <!DOCTYPE 루트엘리먼트 SYSTEM 또는 PUBLIC 외부문서의경로 >– SYSTEM

• 일반적으로 사용 , 개인 또는 회사내부

– PUBLIC• WML 등 공인된 DTD

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 13: DTD 를 이용한 마크업 언어 개발

bestseller.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 이달의베스트셀러 ( 베스트셀러 )>

<!ELEMENT 베스트셀러 ( 분야 , 종류 , 제목 , 저자 , 출판사 )>

<!ELEMENT 분야 (#PCDATA)> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)>

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 14: DTD 를 이용한 마크업 언어 개발

bestseller.xml

<?xml version="1.0" encoding=“euc-kr"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">< 이달의베스트셀러 >

< 베스트셀러 >

< 분야 > 경제 , 경영 </ 분야 >

< 종류 > 금융 , 증권 </ 종류 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 > 로버트 기요사키 </ 저자 >

< 출판사 > 황금가지 </ 출판사 >

</ 베스트셀러 >

</ 이달의베스트셀러 >

DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION

Page 15: DTD 를 이용한 마크업 언어 개발

Element Type Declarations

• <!ELEMENT 엘리먼트이름 데이터타입 또는 자식엘리먼트이름 자식엘리먼트개수부호 >– Element 의 이름 – Element 에 포함되는 데이터 타입

• EMPTY• PCDATA• ANY • Element 이름

– 자식엘리먼트의 이름– 자식엘리먼트의 개수를 선언

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 16: DTD 를 이용한 마크업 언어 개발

Element Type 선언

• EMPTY– 내용으로 아무 것도 갖지 않는 엘리먼트

• PCDATA– 내용으로 문자데이터만 갖는 엘리먼트

• ANY – 내용에 모든 것을 갖는 엘리먼트

• Element 이름

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 17: DTD 를 이용한 마크업 언어 개발

EMPTY

• <!ELEMENT 엘리먼트의이름 EMPTY>

• 빈 요소<!ELEMENT BR EMPTY> : <BR/><!ELEMENT EOF EMPTY> : <EOF/>

<!ELEMENT BrowserConfig EMPTY> : <BrowserConfig showtags=“yes” showcomments=“no”/>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLISTENTITYNOTATION

Page 18: DTD 를 이용한 마크업 언어 개발

bestseller.dtd

<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 이달의베스트셀러 ( 베스트셀러 )> <!ELEMENT 베스트셀러 ( 분야 , 종류 , 제목 , 저

자 , 출판사 , 출판일 )> <!ELEMENT 분야 (#PCDATA)> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 EMPTY> <!ATTLIST 출판일 년 CDATA #REQUIRED 월 CDATA #REQUIRED 일 CDATA #REQUIRED>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · Example(dtd) · Example(xml) · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 19: DTD 를 이용한 마크업 언어 개발

bestseller.xml

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">

< 이달의베스트셀러 >

< 베스트셀러 >

< 분야 > 경제 , 경영 </ 분야 >

< 종류 > 금융 , 증권 </ 종류 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 > 로버트 기요사키 </ 저자 >

< 출판사 > 황금가지 </ 출판사 >

< 출판일 년 ="2002" 월 ="3" 일 ="10“/>

</ 베스트셀러 >

</ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · Example(dtd) · Example(xml) · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 20: DTD 를 이용한 마크업 언어 개발

PCDATA

• <!ELEMENT 엘리먼트이름 (#PCDATA)>• 엘리먼트에 문자열이 포함된 타입• 엘리먼트의 이름과 괄호” (“ 사이에 반드시

공백이 있어야 됨<!ELEMENT 이름 (#PCDATA)> :

< 이름 > 홍길동 </ 이름 >

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 21: DTD 를 이용한 마크업 언어 개발

ANY

• <!ELEMENT 엘리먼트이름 ANY>• 문자열 , 자식엘리먼트 등 Well-For

med 문서의 규칙을 만족하는 어떤 데이터라도 모두다 포함가능

• <!ELEMENT 설명 ANY>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 22: DTD 를 이용한 마크업 언어 개발

bestseller.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 이달의베스트셀러 ( 베스트셀러 )>

<!ELEMENT 베스트셀러 ( 분야 , 종류 , 제목 , 저자 , 출판사 , 출판일 , 설명 )>

<!ELEMENT 분야 (#PCDATA)> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 EMPTY> <!ATTLIST 출판일 년 CDATA #REQUIRED 월 CD

ATA #REQUIRED 일 CDATA #REQUIRED> <!ELEMENT 설명 ANY>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLISTENTITYNOTATION

Page 23: DTD 를 이용한 마크업 언어 개발

bestseller.xml<?xml version="1.0" encoding="EUC-KR"?><!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">< 이달의베스트셀러 > < 베스트셀러 > < 분야 > 경제 , 경영 </ 분야 > < 종류 > 금융 , 증권 </ 종류 > < 제목 > 부자 아빠 , 가난한 아빠 </ 제목 > < 저자 > 로버트 기요사키 </ 저자 > < 출판사 > 황금가지 </ 출판사 > < 출판일 년 ="2002" 월 ="3" 일 ="10"/> < 설명 > < 저자 > 홍길동 </ 저자 >< 저자 > 이순신 </ 저자 >< 출판

사 > 은뿌리 </ 출판사 > </ 설명 > </ 베스트셀러 ></ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION

Page 24: DTD 를 이용한 마크업 언어 개발

Element

• 엘리먼트가 자식엘리먼트를 포함하고 있는 타입

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

* 자식엘리먼트들은 반드시 열거된 순서대로 작성되어야 함

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION

Page 25: DTD 를 이용한 마크업 언어 개발

ELEMENT : 순차 리스트

• 순차 리스트– 자식 요소들의 순서를 지정– “,”

– Mixed content 에서는 지정되지 않음

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION

Page 26: DTD 를 이용한 마크업 언어 개발

ELEMENT : 선택 리스트

• 선택 리스트– 여러 자식 요소들 중에 오직 하나만 허용 . “|”

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION

Page 27: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 이달의베스트셀러 ( 베스트셀러 )><!ELEMENT 베스트셀러 ( 분야 , 종류 , 제목 , 저자 , 출판사 ,

출판일 , 설명 )> <!ELEMENT 분야 ( 경제 | 컴퓨터 | 소설 | 비소설 )> <!ELEMENT 경제 EMPTY> <!ELEMENT 컴퓨터 EMPTY> <!ELEMENT 소설 EMPTY> <!ELEMENT 비소설 EMPTY> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 EMPTY> <!ATTLIST 출판일 년 CDATA #REQUIRED 월 CDATA #REQ

UIRED 일 CDATA #REQUIRED> <!ELEMENT 설명 ANY>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality

ATTLISTENTITYNOTATION

bestseller.dtd

Page 28: DTD 를 이용한 마크업 언어 개발

bestseller.xml<?xml version="1.0" encoding="EUC-KR"?><!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">< 이달의베스트셀러 > < 베스트셀러 > < 분야 >< 경제 /></ 분야 > < 종류 > 금융 , 증권 </ 종류 > < 제목 > 부자 아빠 , 가난한 아빠 </ 제목 > < 저자 > 로버트 기요사키 </ 저자 > < 출판사 > 황금가지 </ 출판사 > < 출판일 년 ="2002" 월 ="3" 일 ="10"/> < 설명 > < 저자 > 홍길동 </ 저자 >< 저자 > 이순신 </ 저자 >< 출판

사 > 은뿌리 </ 출판사 > </ 설명 > </ 베스트셀러 ></ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION

Page 29: DTD 를 이용한 마크업 언어 개발

Cardinality 연산자

• 자식 요소의 개수를 지정– [none]

• cardinality 연산자를 지정하지 않을 경우 오직 한 개의 자식 요소만을 허용 , 필수적 요소

– ?• 자식 요소가 없거나 한 개 , 선택적인 단일

요소– *

• 자식 요소가 없거나 다수 , 선택적 요소– +

• 자식 요소가 하나이거나 다수 , 필수적 요소

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml)ATTLISTENTITYNOTATION

Page 30: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 이달의베스트셀러 ( 베스트셀러 )+> <!ELEMENT 베스트셀러 ( 분야 , 종류 ?, 제목 , 저자 +,

출판사 *, 출판일 , 설명 )> <!ELEMENT 분야 ( 경제 | 컴퓨터 | 소설 | 비소설 )*> <!ELEMENT 경제 EMPTY> <!ELEMENT 컴퓨터 EMPTY> <!ELEMENT 소설 EMPTY> <!ELEMENT 비소설 EMPTY> <!ELEMENT 종류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 EMPTY> <!ATTLIST 출판일 년 CDATA #REQUIRED 월 CDATA #R

EQUIRED 일 CDATA #REQUIRED> <!ELEMENT 설명 ANY>

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml)ATTLISTENTITYNOTATION

bestseller.dtd

Page 31: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">< 이달의베스트셀러 >

< 베스트셀러 ><!-- 베스트 셀러는 1 이상 --> < 분야 >< 경제 />< 비소설 /></ 분야 > <!-- 선택 개수는 마음대로 ,

종류 엘리먼트 생략가능 --> < 종류 > 금융 , 증권 </ 종류 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 > 로버트 기요사키 </ 저자 >< 저자 >Rovert Kiyosaki</ 저자 > <!-- 저자는 1 이상 -->

< 출판사 > 황금가지 </ 출판사 >< 출판사 > 황금나무 </ 출판사 ><!--출판사 수는 0 이상 -->

< 출판일 년 ="2002" 월 ="3" 일 ="10"/>

< 설명 >

< 저자 > 홍길동 </ 저자 >< 저자 > 이순신 </ 저자 >< 출판사 > 은뿌리 </출판사 >

</ 설명 >

</ 베스트셀러 >

</ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml)ATTLISTENTITYNOTATION

bestseller.xml

Page 32: DTD 를 이용한 마크업 언어 개발

속성 선언

• <!ATTLIST 엘리먼트명 속성명 속성타입 존재여부 기본값 >

• 속성이 포함되는 엘리먼트의 이름과 속성명 속성타입 속성생략 시 제공되는 기본값 등을 선언

<!ELEMENT 출판일 EMPTY><!ATTLIST 출판일

년 CDATA #REQUIRED월 CDATA #REQUIRED일 CDATA #REQUIRED>

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보ENTITYNOTATION

Page 33: DTD 를 이용한 마크업 언어 개발

속성의 타입 (attrType)

• CDATA – 문자열

• 열거 값 ( 선택 리스트 ) – 그 중에 하나

• ID – 그 속성의 값이 유일하다 .

• IDREF, IDREFS– ID 참조

• NMTOKEN, NMTOKENS– 공백이 없는 문자열

• ENTITY, ENTITIES– 외부 파일 참조

• NOTATION– 외부파일 참조 시 어떤 프로그램을 이용하여 참조할

것인지

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 34: DTD 를 이용한 마크업 언어 개발

CDATA

• 속성값으로 문자열이 대입DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 35: DTD 를 이용한 마크업 언어 개발

member.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 회원목록 ( 회원 )*>

<!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )>

<!ATTLIST 회원 등급 CDATA " 준회원 ">

<!-- 값이 없으면 기본값으로 준회원을 갖게 한다 .-->

<!ELEMENT 이름 (#PCDATA)> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)>

<!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml 을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 36: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 > 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 > 서울시 </ 주소 > </ 회원 > < 회원 ><!--브라우저로 보면 기본값으로 준회원이 들어가 있다 .--> < 이름 >강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 > 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 > 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 ></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

member.xml

Page 37: DTD 를 이용한 마크업 언어 개발

열거 값 (Enumerated Value)

• 열거된 문자열중 하나가 속성값으로 대입

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 38: DTD 를 이용한 마크업 언어 개발

member.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 회원목록 ( 회원 )*>

<!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )>

<!ATTLIST 회원 등급 CDATA " 준회원 ">

<!ELEMENT 이름 (#PCDATA)> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 (전라도 | 경상도 |강원도 |광주 |

서울 ) "광주 ">

<!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml 을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 39: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 > 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 지역 =" 서울 "> 서울시 </ 주소 > </ 회원 > < 회원 > < 이름 >강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 =" 경상도 "> 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 > 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 ></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

member.xml

Page 40: DTD 를 이용한 마크업 언어 개발

ID

• ID : 모든 요소들 중 유일한 값을 가져야 함• XML 이름 규칙 준수

– 문자로 시작한다 .

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 41: DTD 를 이용한 마크업 언어 개발

member.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 회원목록 ( 회원 )*>

<!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )>

<!ATTLIST 회원 등급 CDATA " 준회원 ">

<!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED > <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 (전라도 | 경상도 |강원도 |광주 |

서울 ) "광주 ">

<!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml 을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 42: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 회원번호 =" 정 0001"> 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 지역 =" 서울 "> 서울시 </ 주소 > </ 회원 > < 회원 > < 이름 회원번호 =" 준 0001">강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 =" 경상도 "> 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 회원번호 ="운 0001"> 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 ></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

member.xml

Page 43: DTD 를 이용한 마크업 언어 개발

IDREF / IDREFS

• IDREF : 다른 요소의 ID 값을 참조• IDREFS : 여러 개의 ID 값을 참조• 참조된 값은 반드시 문서 내의 ID 속성 값과

일치해야 한다 .

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 44: DTD 를 이용한 마크업 언어 개발

member.dtd<?xml version="1.0" encoding="euc-kr"?>

<!ELEMENT 회원목록 ( 회원 *, 최우수회원 , 신입회원 )>

<!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )>

<!ATTLIST 회원 등급 CDATA " 준회원 ">

<!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED > <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 (전라도 | 경상도 |강원도 |광주 | 서울 ) "광주 ">

<!ELEMENT 최우수회원 EMPTY> <!ATTLIST 최우수회원 회원번호 IDREF #REQUIRED> <!ELEMENT 신입회원 EMPTY> <!ATTLIST 신입회원 회원번호 IDREFS #REQUIRED><!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml

을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 45: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 회원번호 =" 정 0001"> 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 지역 =" 서울 "> 서울시 </ 주소 > </ 회원 > < 회원 > < 이름 회원번호 =" 준 0001">강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 =" 경상도 "> 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 회원번호 ="운 0001"> 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 > <최우수회원 회원번호 ="운 0001"/> < 신입회원 회원번호 =" 정 0001 준 0001"/></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

member.xml

Page 46: DTD 를 이용한 마크업 언어 개발

NMTOKEN / NMTOKENS

• NMTOKEN – 공백이 없는 일련의 문자열

• NMTOKENS – 두개 이상의 NMTOKEN 으로

이루어짐• CDATA 와 유사하지만 공백이 없다 .

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 47: DTD 를 이용한 마크업 언어 개발

member.dtd<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 회원목록 ( 회원 *, 최우수회원 , 신입회원 )> <!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )> <!ATTLIST 회원 등급 CDATA " 준회원 "> <!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED 주민번호 NMTOKENS #REQUIRED> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 (전라도 | 경상도 |강원도 |광주 | 서울 ) "광주 ">

<!ELEMENT 최우수회원 EMPTY> <!ATTLIST 최우수회원 회원번호 IDREF #REQUIRED> <!ELEMENT 신입회원 EMPTY> <!ATTLIST 신입회원 회원번호 IDREFS #REQUIRED><!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml 을

작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

Page 48: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 회원번호 =" 정 0001" 주민번호 ="770102"> 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 지역 =" 서울 "> 서울시 </ 주소 > </ 회원 > < 회원 > < 이름 회원번호 =" 준 0001" 주민번호 ="660205">강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 =" 경상도 "> 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 회원번호 ="운 0001" 주민번호 ="800310"> 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 > <최우수회원 회원번호 ="운 0001"/> < 신입회원 회원번호 =" 정 0001 준 0001" /></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION

member.xml

Page 49: DTD 를 이용한 마크업 언어 개발

속성의 기본 정보 (attrDefault)

• #REQUIRED• #IMPLIED• #FIXED (plus default

value) • Default value(s)

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 50: DTD 를 이용한 마크업 언어 개발

#REQUIRED

• 엘리먼트에 반드시 포함되어야 하는 필수속성

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 51: DTD 를 이용한 마크업 언어 개발

#IMPLIED

• 생략이 가능한 속성DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 52: DTD 를 이용한 마크업 언어 개발

member.dtd

<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 회원목록 ( 회원 *, 최우수회원 , 신입회원 )> <!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )> <!ATTLIST 회원 등급 CDATA " 준회원 "> <!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED 주민번호 NMTOKENS #REQUIRED> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 (전라도 | 경상도 |강원도 |광주 | 서울 ) #I

MPLIED> <!ELEMENT 최우수회원 EMPTY> <!ATTLIST 최우수회원 회원번호 IDREF #REQUIRED> <!ELEMENT 신입회원 EMPTY> <!ATTLIST 신입회원 회원번호 IDREFS #REQUIRED><!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 member.xml

을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 53: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 회원번호 =" 정 0001" 주민번호 ="770102"> 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 지역 =" 서울 "> 서울시 </ 주소 > </ 회원 > < 회원 > < 이름 회원번호 =" 준 0001" 주민번호 ="660205">강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 =" 경상도 "> 부산시 </ 주소 > </ 회원 > < 회원 등급 ="운영자 "> < 이름 회원번호 ="운 0001" 주민번호 ="800310"> 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 ><!-- 파싱시 값이 들어가지 않는다 .--> </ 회원 > <최우수회원 회원번호 ="운 0001"/> < 신입회원 회원번호 =" 정 0001 준 0001" /></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

member.xml

Page 54: DTD 를 이용한 마크업 언어 개발

#FIXED

• 고정된 값만을 가질 수 있는 속성DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 55: DTD 를 이용한 마크업 언어 개발

member.dtd<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 회원목록 ( 회원 *, 최우수회원 , 신입회원 )> <!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )> <!ATTLIST 회원 등급 CDATA " 준회원 "> <!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED 주민번호 NMTOKENS #REQUIRED> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 CDATA #FIXED "광주 "> <!ELEMENT 최우수회원 EMPTY> <!ATTLIST 최우수회원 회원번호 IDREF #REQUIRED> <!ELEMENT 신입회원 EMPTY> <!ATTLIST 신입회원 회원번호 IDREFS #REQUIRED><!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 memb

er.xml 을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 56: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 회원목록 SYSTEM "member.dtd">< 회원목록 > < 회원 등급 =" 정회원 "> < 이름 회원번호 =" 정 0001" 주민번호 ="770102"> 홍길동 </ 이름 > <전화번호 >011-234-5678</전화번호 > < 주소 > 서울시 </ 주소 ><!-- 지역에 값이 없으면 기본값으로 --> </ 회원 > < 회원 ><!--브라우저로 보면 기본값이 들어가 있다 .--> < 이름 회원번호 =" 준 0001" 주민번호 ="660205">강감찬 </ 이름 > <전화번호 >062-230-6624</전화번호 > < 주소 지역 ="광주 "> 부산시 </ 주소 ><!--광주 이외의 지역이 올 수 광주 이외의 지역이 올 수 없다없다 .-->

</ 회원 > < 회원 등급 ="운영자 "> < 이름 회원번호 ="운 0001" 주민번호 ="800310"> 이순신 </ 이름 > <전화번호 >062-230-7963</전화번호 > < 주소 >광주시 </ 주소 > </ 회원 > <최우수회원 회원번호 ="운 0001"/> < 신입회원 회원번호 =" 정 0001 준 0001" /></ 회원목록 >

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

member.xml

Page 57: DTD 를 이용한 마크업 언어 개발

Default value(s)

• 속성이 생략되었을 때 제공되는 값DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 58: DTD 를 이용한 마크업 언어 개발

member.dtd<?xml version="1.0" encoding="euc-kr"?><!ELEMENT 회원목록 ( 회원 *, 최우수회원 , 신입회원 )> <!ELEMENT 회원 ( 이름 , 전화번호 , 주소 )> <!ATTLIST 회원 등급 CDATA " 준회원 "> <!ELEMENT 이름 (#PCDATA)> <!ATTLIST 이름 회원번호 ID #REQUIRED 주민번호 NMTOKENS #REQUIRED> <!ELEMENT 전화번호 (#PCDATA)> <!ELEMENT 주소 (#PCDATA)> <!ATTLIST 주소 지역 CDATA #FIXED "광주 "> <!ELEMENT 최우수회원 EMPTY> <!ATTLIST 최우수회원 회원번호 IDREF #REQUIRED> <!ELEMENT 신입회원 EMPTY> <!ATTLIST 신입회원 회원번호 IDREFS #REQUIRED><!-- member.dtd 에 저장하고 , dtd 문서에 적합한 문서인 m

ember.xml 을 작성하세요 -->

DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION

Page 59: DTD 를 이용한 마크업 언어 개발

Entity

• 길거나 복잡한 문장을 약자로 정의

• 외부 문서를 정의하고 외부 문서를 XML

문서에 삽입

• 자바의 final, import 와 유사

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 60: DTD 를 이용한 마크업 언어 개발

Entity 의 분류 (1)

• General Entity

– XML 문서에서 사용되는 Entity

• Parameter Entity

– DTD 내부에서만 사용되는 Entity

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 61: DTD 를 이용한 마크업 언어 개발

Entity 의 분류 (2)

• 내부 Entity– 긴 단어나 문장의 약어를 정의

• 외부 Entity– 외부문서를 참조

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 62: DTD 를 이용한 마크업 언어 개발

내부 일반 엔티티

• XML 문서에서 반복되는 긴 문장의 약어를 정의

• <!ENTITY 엔티티이름 “긴문장” >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 63: DTD 를 이용한 마크업 언어 개발

generalEntity.dtd

<?xml version="1.0" encoding="euc-kr"?><!ENTITY 이름 "허진경 "><!ENTITY 홈페이지 "http://xml.new21.net"><!ENTITY 책제목 " 자바와 xml 정복 "><!ELEMENT 저자정보 ( 이름 , 홈페이지 , 책제

목 )> <!ELEMENT 이름 (#PCDATA)> <!ELEMENT 홈페이지 (#PCDATA)> <!ELEMENT 책제목 (#PCDATA)>

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 64: DTD 를 이용한 마크업 언어 개발

generalEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 저자정보 SYSTEM "generalEntity.dtd">< 저자정보 >

< 이름 >& 이름 ;</ 이름 >

<홈페이지 >&홈페이지 ;</홈페이지 >

<책제목 >&책제목 ;</책제목 >

</ 저자정보 >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 65: DTD 를 이용한 마크업 언어 개발

외부 일반 엔티티

• XML 문서 내에 다른 문서를 삽입• 삽입되는 문서는 텍스트 문서이거나 XM

L 문서 이어야 만함• <!ENTITY 엔티티이름 SYSTEM “

문서경로” >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 66: DTD 를 이용한 마크업 언어 개발

song.txt

<?xml version="1.0" encoding="euc-kr"?>

룰루랄라 ~...노래 시작했다 ...~노래 끝났다 ...!!!

<!-- 작성하고 song.txt 파일로 저장 -->

저장하고 파일을 닫아야 한다 .

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 67: DTD 를 이용한 마크업 언어 개발

generalEntity.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ENTITY 이름 "허진경 ">

<!ENTITY 홈페이지 "http://xml.new21.net"><!ENTITY 책제목 " 자바와 xml 정복 ">

<!ENTITY 가사 SYSTEM "song.txt"><!ELEMENT 저자정보 ( 이름 , 홈페이지 , 책제목 , 노래 )>

<!ELEMENT 이름 (#PCDATA)> <!ELEMENT 홈페이지 (#PCDATA)> <!ELEMENT 책제목 (#PCDATA)> <!ELEMENT 노래 (#PCDATA)>

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 68: DTD 를 이용한 마크업 언어 개발

generalEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 저자정보 SYSTEM "generalEntity.dtd">< 저자정보 >

< 이름 >& 이름 ;</ 이름 >

<홈페이지 >&홈페이지 ;</홈페이지 >

<책제목 >&책제목 ;</책제목 >

<노래 >& 가사 ;</노래 >

</ 저자정보 >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 69: DTD 를 이용한 마크업 언어 개발

firstBestSeller.xml

<?xml version="1.0" encoding="euc-kr"?>

< 베스트셀러 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 > 로버트 기요사키 </ 저자 >

< 출판사 > 황금가지 </ 출판사 >

< 출판일 >2002 년 2 월 10 일 </ 출판일 >

</ 베스트셀러 >

제목 , 저자 , 출판사 , 출판일을 바꿔서secondBestSeller.xml, thirdBestSeller.xml

작성

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 70: DTD 를 이용한 마크업 언어 개발

generalExternalEntity.dtd<?xml version="1.0" encoding="euc-kr"?><!ENTITY firstBestseller SYSTEM "firstBestselle

r.xml"><!ENTITY secondBestseller SYSTEM "secondBestsel

ler.xml"><!ENTITY thirdBestseller SYSTEM "thirdBestselle

r.xml"><!ELEMENT 이달의베스트셀러 ( 베스트셀러 )+> <!ELEMENT 베스트셀러 ( 제목 , 저자 , 출판사 ,

출판일 )> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 (#PCDATA)><!-- 다 하신분은 새로운 XML 문서를 만들고 firstBestse

ller, secondBestseller, thirdBestseller 세개의 엔티티를 import 하세요 -->

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 71: DTD 를 이용한 마크업 언어 개발

generalExternalEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "generalExternalEntity.dtd">

< 이달의베스트셀러 >

&firstBestseller;

&secondBestseller;

&thirdBestseller;

</ 이달의베스트셀러 >

미리 만들어 놓은 xml 문서를 import 할 수 있다 .

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 72: DTD 를 이용한 마크업 언어 개발

내부 파라미터 엔티티

• DTD 내부에서 자주 사용되는 긴 문장의 약어를 정의

• DTD 문서에서만 사용가능• ‘%’와 엔티티이름 사이에 반드시 공백이

있어야됨 • 선언

– <!ENTITY % 엔티티이름 “긴문장” >• 사용

– %엔티티이름 ;

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 73: DTD 를 이용한 마크업 언어 개발

<?xml version="1.0" encoding="euc-kr"?><!ENTITY firstBestseller SYSTEM "firstBestselle

r.xml"><!ENTITY secondBestseller SYSTEM "secondBestsel

ler.xml"><!ENTITY thirdBestseller SYSTEM "thirdBestselle

r.xml"><!ENTITY % data "(#PCDATA)"><!ELEMENT 이달의베스트셀러 ( 베스트셀러 )+> <!ELEMENT 베스트셀러 ( 제목 , 저자 , 출판사 ,

출판일 )> <!ELEMENT 제목 %data;> <!ELEMENT 저자 %data;> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 출판일 (#PCDATA)>선언 시에는 % 다음에 띄고 , 사용시에는 % 다음에 붙인다 .

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 74: DTD 를 이용한 마크업 언어 개발

외부 파라미터 엔티티

• DTD 문서내부에서 다른 DTD 문서를 삽입

• <!ENTITY % 엔티티이름 SYSTEM “삽입할 DTD 문서의 경로” >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 75: DTD 를 이용한 마크업 언어 개발

parameterExternalEntity.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!ENTITY % 베스트셀러 DTD SYSTEM "generalExternalEntity.dtd">

<!ELEMENT 베스트셀러목록들 ( 베스트셀러 )>

% 베스트셀러 DTD;

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 76: DTD 를 이용한 마크업 언어 개발

parameterExternalEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 베스트셀러목록들 SYSTEM "parameterExternalEntity.dtd">

< 베스트셀러목록들 >

&firstBestseller;

&secondBestseller;

&thirdBestseller;

</ 베스트셀러목록들 >

DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION

Page 77: DTD 를 이용한 마크업 언어 개발

Notation

•텍스트나 XML 문서 이외의 문서를 엔티티로 참조할 경우에 해당 문서를 처리 할 수 있는 프로그램을 XML 문서에 알려주는 선언

• <!NOTATION 노테이션이름 SYSTEM “ 프로그램경로” >

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 78: DTD 를 이용한 마크업 언어 개발

파싱되지 않는 외부 엔티티

•텍스트 문서나 XML 문서 이외의 문서를 삽입하는 엔티티

• <!ENTITY 엔티티이름 SYSTEM “파일경로” NDATA 노테이션이름 >

•실제적으로 파일이 삽입되지는 않고 단지 파일의 경로와 처리프로그램의 경로만을 설정

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 79: DTD 를 이용한 마크업 언어 개발

로버트기요사키 .jpg리눅스토발즈 .jpg브렌들리 .jpg3 개의 그림을 notation 과 파싱되지 않는 외부 엔티티로 삽입하고자 한다 .

1. notation 선언2. Entity 선언3. xml 문서에서 Entity 사용

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 80: DTD 를 이용한 마크업 언어 개발

notationAndUnparsedEntity.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!NOTATION 이미지보기 SYSTEM "C:\Program Files\Internet Explorer\IEXPLORE.EXE">

<!ENTITY 로버트기요사키 SYSTEM " 로버트기요사키 .jpg" NDATA 이미지보기 >

<!ENTITY 리눅스토발즈 SYSTEM " 리눅스토발즈 .jpg" NDATA 이미지보기 >

<!ENTITY 브렌들리 SYSTEM "브렌들리 .jpg" NDATA 이미지보기 >

<!ELEMENT 이달의베스트셀러 ( 베스트셀러 )*>

<!ELEMENT 베스트셀러 ( 제목 , 저자 )>

<!ELEMENT 제목 (#PCDATA)><!ELEMENT 저자 (#PCDATA)><!ATTLIST 저자 저자사진 ENTITY #IMPLIED>

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 81: DTD 를 이용한 마크업 언어 개발

notationAndUnparsedEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "notationAndUnparsedEntity.dtd">

< 이달의베스트셀러 >

< 베스트셀러 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 저자사진 =" 로버트기요사키 "> 로버트 기요사키 </ 저자 >

</ 베스트셀러 >

< 베스트셀러 >

< 제목 > 리눅스 그냥 재미로 </ 제목 >

< 저자 저자사진 =" 리눅스토발즈 "> 리눅스 토발즈 </ 저자 >

</ 베스트셀러 >

</ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 82: DTD 를 이용한 마크업 언어 개발

notationAndUnparsedEntity.dtd

<?xml version="1.0" encoding="euc-kr"?>

<!NOTATION 이미지보기 SYSTEM "C:\Program Files\Internet Explorer\IEXPLORE.EXE">

<!ENTITY 로버트기요사키 SYSTEM " 로버트기요사키 .jpg" NDATA 이미지보기 >

<!ENTITY 리눅스토발즈 SYSTEM " 리눅스토발즈 .jpg" NDATA 이미지보기 >

<!ENTITY 브렌들리 SYSTEM "브렌들리 .jpg" NDATA 이미지보기 >

<!ELEMENT 이달의베스트셀러 ( 베스트셀러 )*>

<!ELEMENT 베스트셀러 ( 제목 , 저자 )>

<!ELEMENT 제목 (#PCDATA)><!ELEMENT 저자 (#PCDATA)><!ATTLIST 저자

저자사진 ENTITY #IMPLIED이미지뷰어 NOTATION ( 이미지보기 ) #IMPLIED

>

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample

Page 83: DTD 를 이용한 마크업 언어 개발

notationAndUnparsedEntity.xml

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE 이달의베스트셀러 SYSTEM "notationAndUnparsedEntity.dtd">

< 이달의베스트셀러 >

< 베스트셀러 >

< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >

< 저자 저자사진 =" 로버트기요사키 " 이미지뷰어 ="이미지보기 "> 로버트 기요사키 </ 저자 >

</ 베스트셀러 >

< 베스트셀러 >

< 제목 > 리눅스 그냥 재미로 </ 제목 >

< 저자 저자사진 =" 리눅스토발즈 " 이미지뷰어 =" 이미지보기 "> 리눅스 토발즈 </ 저자 >

</ 베스트셀러 >

</ 이달의베스트셀러 >

DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample