DTD 를 이용한 마크업 언어 개발
-
Upload
orson-case -
Category
Documents
-
view
119 -
download
0
description
Transcript of DTD 를 이용한 마크업 언어 개발
DTD 를 이용한 마크업 언어 개발
2008.9.9
최진명
목차
• DTD 개요• DTD 를 사용한 XML 문서 작성• ELEMENT• ATTLIST• ENTITY• NOTATION
DTD 의 물리적 구조
• DTD(Document Type Definition)– XML 문서의 구성요소 ( 태그 및 속성 )
들을 정의– 구성요소들 사이의 관계 , 데이터 타입 ,
출현빈도 등의 규칙을 정의
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
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
DTD 의 역할
• 정확하고 공식적인 방법을 통해 문서의 구조를 기술
• 필수적인 요소의 존재 여부 검사• 허용되지 않는 요소의 포함 여부 검사• 요소 content, 트리 구조 및 속성 값의
규제• 속성들의 기본 값 제공
DTD 개요 필요성 DTD DTD 역할 Valid XML ExampleDTD+XMLELEMENTATTLISTENTITYNOTATION
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
<?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
DTD 와 XML 의 결합
• 하나의 XML 문서는 단 하나의 DTD 와 결합 가능– 내부 Subset 과 외부 Subset 으로 구성– 하나의 내부 Subset, 하나의 외부 Subset,
내부와 외부 Subset 을 모두 사용• 내부 Subset 우선
– 내부 Subset : 개발 시 또는 기존의 표준 DTD를 사용하면서 자신의 목적에 맞게 약간의 수정이 필요할 경우 사용
DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION
DOCTYPE 선언• DOCTYPE 선언
– XML 문서와 DTD 를 연결하기 위한 선언
– XML 선언 뒤 , Element 나 문자 데이터 content 앞에 위치
• <!DOCTYPE ...>– 일반적인 XML 태그 한정자 (“<”, “>”)
– 특별한 XML 선언임을 알려 주는 느낌표 (“!”)
– DOCTYPE 예약어
<!DOCTYPE 이달의베스트셀러 [
DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION
내부 DTD 선언• XML 문서내에 DTD 선언을 삽입
• <!DOCTYPE 루트엘리먼트 [내부 DTD 선언
]>
DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION
외부 DTD
• 일반적으로 사용하는 DTD 의 형태
• <!DOCTYPE 루트엘리먼트 SYSTEM 또는 PUBLIC 외부문서의경로 >– SYSTEM
• 일반적으로 사용 , 개인 또는 회사내부
– PUBLIC• WML 등 공인된 DTD
DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION
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
bestseller.xml
<?xml version="1.0" encoding=“euc-kr"?>
<!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd">< 이달의베스트셀러 >
< 베스트셀러 >
< 분야 > 경제 , 경영 </ 분야 >
< 종류 > 금융 , 증권 </ 종류 >
< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >
< 저자 > 로버트 기요사키 </ 저자 >
< 출판사 > 황금가지 </ 출판사 >
</ 베스트셀러 >
</ 이달의베스트셀러 >
DTD 개요DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTDELEMENTATTLISTENTITYNOTATION
Element Type Declarations
• <!ELEMENT 엘리먼트이름 데이터타입 또는 자식엘리먼트이름 자식엘리먼트개수부호 >– Element 의 이름 – Element 에 포함되는 데이터 타입
• EMPTY• PCDATA• ANY • Element 이름
– 자식엘리먼트의 이름– 자식엘리먼트의 개수를 선언
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION
Element Type 선언
• EMPTY– 내용으로 아무 것도 갖지 않는 엘리먼트
• PCDATA– 내용으로 문자데이터만 갖는 엘리먼트
• ANY – 내용에 모든 것을 갖는 엘리먼트
• Element 이름
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION
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
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
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
PCDATA
• <!ELEMENT 엘리먼트이름 (#PCDATA)>• 엘리먼트에 문자열이 포함된 타입• 엘리먼트의 이름과 괄호” (“ 사이에 반드시
공백이 있어야 됨<!ELEMENT 이름 (#PCDATA)> :
< 이름 > 홍길동 </ 이름 >
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION
ANY
• <!ELEMENT 엘리먼트이름 ANY>• 문자열 , 자식엘리먼트 등 Well-For
med 문서의 규칙을 만족하는 어떤 데이터라도 모두다 포함가능
• <!ELEMENT 설명 ANY>
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 CardinalityATTLISTENTITYNOTATION
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
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
Element
• 엘리먼트가 자식엘리먼트를 포함하고 있는 타입
<!ELEMENT name (first_name, last_name)><!ELEMENT first_name (#PCDATA)><!ELEMENT last_name (#PCDATA)>
* 자식엘리먼트들은 반드시 열거된 순서대로 작성되어야 함
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION
ELEMENT : 순차 리스트
• 순차 리스트– 자식 요소들의 순서를 지정– “,”
– Mixed content 에서는 지정되지 않음
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION
ELEMENT : 선택 리스트
• 선택 리스트– 여러 자식 요소들 중에 오직 하나만 허용 . “|”
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 CardinalityATTLISTENTITYNOTATION
<?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
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
Cardinality 연산자
• 자식 요소의 개수를 지정– [none]
• cardinality 연산자를 지정하지 않을 경우 오직 한 개의 자식 요소만을 허용 , 필수적 요소
– ?• 자식 요소가 없거나 한 개 , 선택적인 단일
요소– *
• 자식 요소가 없거나 다수 , 선택적 요소– +
• 자식 요소가 하나이거나 다수 , 필수적 요소
DTD 개요DTD+XMLELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml)ATTLISTENTITYNOTATION
<?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
<?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
속성 선언
• <!ATTLIST 엘리먼트명 속성명 속성타입 존재여부 기본값 >
• 속성이 포함되는 엘리먼트의 이름과 속성명 속성타입 속성생략 시 제공되는 기본값 등을 선언
<!ELEMENT 출판일 EMPTY><!ATTLIST 출판일
년 CDATA #REQUIRED월 CDATA #REQUIRED일 CDATA #REQUIRED>
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보ENTITYNOTATION
속성의 타입 (attrType)
• CDATA – 문자열
• 열거 값 ( 선택 리스트 ) – 그 중에 하나
• ID – 그 속성의 값이 유일하다 .
• IDREF, IDREFS– ID 참조
• NMTOKEN, NMTOKENS– 공백이 없는 문자열
• ENTITY, ENTITIES– 외부 파일 참조
• NOTATION– 외부파일 참조 시 어떤 프로그램을 이용하여 참조할
것인지
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
CDATA
• 속성값으로 문자열이 대입DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
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
<?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
열거 값 (Enumerated Value)
• 열거된 문자열중 하나가 속성값으로 대입
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
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
<?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
ID
• ID : 모든 요소들 중 유일한 값을 가져야 함• XML 이름 규칙 준수
– 문자로 시작한다 .
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
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
<?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
IDREF / IDREFS
• IDREF : 다른 요소의 ID 값을 참조• IDREFS : 여러 개의 ID 값을 참조• 참조된 값은 반드시 문서 내의 ID 속성 값과
일치해야 한다 .
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
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
<?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
NMTOKEN / NMTOKENS
• NMTOKEN – 공백이 없는 일련의 문자열
• NMTOKENS – 두개 이상의 NMTOKEN 으로
이루어짐• CDATA 와 유사하지만 공백이 없다 .
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type · CDATA · 열거값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보ENTITYNOTATION
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
<?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
속성의 기본 정보 (attrDefault)
• #REQUIRED• #IMPLIED• #FIXED (plus default
value) • Default value(s)
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION
#REQUIRED
• 엘리먼트에 반드시 포함되어야 하는 필수속성
DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION
#IMPLIED
• 생략이 가능한 속성DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION
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
<?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
#FIXED
• 고정된 값만을 가질 수 있는 속성DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION
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
<?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
Default value(s)
• 속성이 생략되었을 때 제공되는 값DTD 개요DTD+XMLELEMENTATTLIST 속성 선언 속성 Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · DefaultENTITYNOTATION
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
Entity
• 길거나 복잡한 문장을 약자로 정의
• 외부 문서를 정의하고 외부 문서를 XML
문서에 삽입
• 자바의 final, import 와 유사
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
Entity 의 분류 (1)
• General Entity
– XML 문서에서 사용되는 Entity
• Parameter Entity
– DTD 내부에서만 사용되는 Entity
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
Entity 의 분류 (2)
• 내부 Entity– 긴 단어나 문장의 약어를 정의
• 외부 Entity– 외부문서를 참조
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
내부 일반 엔티티
• XML 문서에서 반복되는 긴 문장의 약어를 정의
• <!ENTITY 엔티티이름 “긴문장” >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
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
generalEntity.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 저자정보 SYSTEM "generalEntity.dtd">< 저자정보 >
< 이름 >& 이름 ;</ 이름 >
<홈페이지 >&홈페이지 ;</홈페이지 >
<책제목 >&책제목 ;</책제목 >
</ 저자정보 >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
외부 일반 엔티티
• XML 문서 내에 다른 문서를 삽입• 삽입되는 문서는 텍스트 문서이거나 XM
L 문서 이어야 만함• <!ENTITY 엔티티이름 SYSTEM “
문서경로” >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
song.txt
<?xml version="1.0" encoding="euc-kr"?>
룰루랄라 ~...노래 시작했다 ...~노래 끝났다 ...!!!
<!-- 작성하고 song.txt 파일로 저장 -->
저장하고 파일을 닫아야 한다 .
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
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
generalEntity.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 저자정보 SYSTEM "generalEntity.dtd">< 저자정보 >
< 이름 >& 이름 ;</ 이름 >
<홈페이지 >&홈페이지 ;</홈페이지 >
<책제목 >&책제목 ;</책제목 >
<노래 >& 가사 ;</노래 >
</ 저자정보 >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
firstBestSeller.xml
<?xml version="1.0" encoding="euc-kr"?>
< 베스트셀러 >
< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >
< 저자 > 로버트 기요사키 </ 저자 >
< 출판사 > 황금가지 </ 출판사 >
< 출판일 >2002 년 2 월 10 일 </ 출판일 >
</ 베스트셀러 >
제목 , 저자 , 출판사 , 출판일을 바꿔서secondBestSeller.xml, thirdBestSeller.xml
작성
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
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
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
내부 파라미터 엔티티
• DTD 내부에서 자주 사용되는 긴 문장의 약어를 정의
• DTD 문서에서만 사용가능• ‘%’와 엔티티이름 사이에 반드시 공백이
있어야됨 • 선언
– <!ENTITY % 엔티티이름 “긴문장” >• 사용
– %엔티티이름 ;
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
<?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
외부 파라미터 엔티티
• DTD 문서내부에서 다른 DTD 문서를 삽입
• <!ENTITY % 엔티티이름 SYSTEM “삽입할 DTD 문서의 경로” >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
parameterExternalEntity.dtd
<?xml version="1.0" encoding="euc-kr"?>
<!ENTITY % 베스트셀러 DTD SYSTEM "generalExternalEntity.dtd">
<!ELEMENT 베스트셀러목록들 ( 베스트셀러 )>
% 베스트셀러 DTD;
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
parameterExternalEntity.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 베스트셀러목록들 SYSTEM "parameterExternalEntity.dtd">
< 베스트셀러목록들 >
&firstBestseller;
&secondBestseller;
&thirdBestseller;
</ 베스트셀러목록들 >
DTD 개요DTD+XMLELEMENTATTLISTENTITY Entity란 ? 분류 1 분류 2 내부 일반 외부 일반 내부 파라미터 외부 파라미터NOTATION
Notation
•텍스트나 XML 문서 이외의 문서를 엔티티로 참조할 경우에 해당 문서를 처리 할 수 있는 프로그램을 XML 문서에 알려주는 선언
• <!NOTATION 노테이션이름 SYSTEM “ 프로그램경로” >
DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample
파싱되지 않는 외부 엔티티
•텍스트 문서나 XML 문서 이외의 문서를 삽입하는 엔티티
• <!ENTITY 엔티티이름 SYSTEM “파일경로” NDATA 노테이션이름 >
•실제적으로 파일이 삽입되지는 않고 단지 파일의 경로와 처리프로그램의 경로만을 설정
DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample
로버트기요사키 .jpg리눅스토발즈 .jpg브렌들리 .jpg3 개의 그림을 notation 과 파싱되지 않는 외부 엔티티로 삽입하고자 한다 .
1. notation 선언2. Entity 선언3. xml 문서에서 Entity 사용
DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample
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
notationAndUnparsedEntity.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 이달의베스트셀러 SYSTEM "notationAndUnparsedEntity.dtd">
< 이달의베스트셀러 >
< 베스트셀러 >
< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >
< 저자 저자사진 =" 로버트기요사키 "> 로버트 기요사키 </ 저자 >
</ 베스트셀러 >
< 베스트셀러 >
< 제목 > 리눅스 그냥 재미로 </ 제목 >
< 저자 저자사진 =" 리눅스토발즈 "> 리눅스 토발즈 </ 저자 >
</ 베스트셀러 >
</ 이달의베스트셀러 >
DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample
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
notationAndUnparsedEntity.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 이달의베스트셀러 SYSTEM "notationAndUnparsedEntity.dtd">
< 이달의베스트셀러 >
< 베스트셀러 >
< 제목 > 부자 아빠 , 가난한 아빠 </ 제목 >
< 저자 저자사진 =" 로버트기요사키 " 이미지뷰어 ="이미지보기 "> 로버트 기요사키 </ 저자 >
</ 베스트셀러 >
< 베스트셀러 >
< 제목 > 리눅스 그냥 재미로 </ 제목 >
< 저자 저자사진 =" 리눅스토발즈 " 이미지뷰어 =" 이미지보기 "> 리눅스 토발즈 </ 저자 >
</ 베스트셀러 >
</ 이달의베스트셀러 >
DTD 개요DTD+XMLELEMENTATTLISTENTITYNOTATION 정의 Sample