830 likes | 1.07k Views
DTD 를 이용한 마크업 언어 개발. 2008.9.9 최진명. 목차. DTD 개요 DTD 를 사용한 XML 문서 작성 ELEMENT ATTLIST ENTITY NOTATION. DTD 의 물리적 구조. DTD(Document Type Definition) XML 문서의 구성요소 ( 태그 및 속성 ) 들을 정의 구성요소들 사이의 관계 , 데이터 타입 , 출현빈도 등의 규칙을 정의. DTD 의 필요성. DTD(Document Type Definition) 란 ?
E N D
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 Example DTD+XML ELEMENT ATTLIST ENTITY NOTATION
DTD (Document Type Definition) • DTD • XML 문서의 타입(Document Type)을 기술하는 표준화된 방법 • App.들에 의해 공유되는 XML 어휘집(XML vocabulary)에 해당하는 데이터에 대한 설명서 • Document Type • 동일한 XML 어휘집을 공유하는 XML 문서들의 모임 • cf) 프로그래밍 언어에서의 Class • Document Instance • Document Type을 만족하는 개별 XML 문서 • cf) 프로그래밍 언어에서의 Object DTD 개요 필요성 DTD DTD 역할 Valid XML Example DTD+XML ELEMENT ATTLIST ENTITY NOTATION
DTD 의 역할 • 정확하고 공식적인 방법을 통해 문서의 구조를 기술 • 필수적인 요소의 존재 여부 검사 • 허용되지 않는 요소의 포함 여부 검사 • 요소 content, 트리 구조 및 속성 값의 규제 • 속성들의 기본 값 제공 DTD 개요 필요성 DTD DTD 역할 Valid XML Example DTD+XML ELEMENT ATTLIST ENTITY NOTATION
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 Example DTD+XML ELEMENT ATTLIST ENTITY NOTATION
<?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+XML ELEMENT ATTLIST ENTITY NOTATION bestseller.xml
DTD와 XML의 결합 • 하나의 XML 문서는 단 하나의 DTD와 결합 가능 • 내부 Subset과 외부 Subset으로 구성 • 하나의 내부 Subset, 하나의 외부 Subset, 내부와 외부 Subset을 모두 사용 • 내부 Subset 우선 • 내부 Subset : 개발 시 또는 기존의 표준 DTD를 사용하면서 자신의 목적에 맞게 약간의 수정이 필요할 경우 사용 DTD 개요 DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
DOCTYPE 선언 • DOCTYPE 선언 • XML 문서와 DTD를 연결하기 위한 선언 • XML 선언 뒤, Element나 문자 데이터 content 앞에 위치 • <!DOCTYPE ...> • 일반적인 XML 태그 한정자 (“<”, “>”) • 특별한 XML 선언임을 알려 주는 느낌표 (“!”) • DOCTYPE 예약어 <!DOCTYPE 이달의베스트셀러 [ DTD 개요 DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
내부 DTD 선언 • XML 문서내에 DTD 선언을 삽입 • <!DOCTYPE 루트엘리먼트 [내부 DTD 선언]> DTD 개요 DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
외부 DTD • 일반적으로 사용하는 DTD의 형태 • <!DOCTYPE 루트엘리먼트 SYSTEM 또는 PUBLIC 외부문서의경로> • SYSTEM • 일반적으로 사용, 개인 또는 회사내부 • PUBLIC • WML등 공인된 DTD DTD 개요 DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
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 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
bestseller.xml <?xml version="1.0" encoding=“euc-kr"?> <!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd"> <이달의베스트셀러> <베스트셀러> <분야>경제, 경영</분야> <종류>금융, 증권</종류> <제목>부자 아빠, 가난한 아빠</제목> <저자>로버트 기요사키</저자> <출판사>황금가지</출판사> </베스트셀러> </이달의베스트셀러> DTD 개요 DTD+XML 결합 DOCTYPE 내부 DTD 외부 DTD ELEMENT ATTLIST ENTITY NOTATION
Element Type Declarations • <!ELEMENT 엘리먼트이름 데이터타입 또는 자식엘리먼트이름 자식엘리먼트개수부호> • Element의 이름 • Element에 포함되는 데이터 타입 • EMPTY • PCDATA • ANY • Element이름 • 자식엘리먼트의 이름 • 자식엘리먼트의 개수를 선언 DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
Element Type선언 • EMPTY • 내용으로 아무 것도 갖지 않는 엘리먼트 • PCDATA • 내용으로 문자데이터만 갖는 엘리먼트 • ANY • 내용에 모든 것을 갖는 엘리먼트 • Element이름 DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
EMPTY • <!ELEMENT 엘리먼트의이름 EMPTY> • 빈 요소 <!ELEMENT BR EMPTY> : <BR/> <!ELEMENT EOF EMPTY> : <EOF/> <!ELEMENT BrowserConfig EMPTY> : <BrowserConfig showtags=“yes” showcomments=“no”/> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
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+XML ELEMENT 선언 정의 Type 선언 · EMPTY · Example(dtd) · Example(xml) · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
bestseller.xml <?xml version="1.0" encoding="EUC-KR"?> <!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd"> <이달의베스트셀러> <베스트셀러> <분야>경제, 경영</분야> <종류>금융, 증권</종류> <제목>부자 아빠, 가난한 아빠</제목> <저자>로버트 기요사키</저자> <출판사>황금가지</출판사> <출판일 년="2002" 월="3" 일="10“/> </베스트셀러> </이달의베스트셀러> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · Example(dtd) · Example(xml) · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
PCDATA • <!ELEMENT 엘리먼트이름 (#PCDATA)> • 엘리먼트에 문자열이 포함된 타입 • 엘리먼트의 이름과 괄호”(“사이에 반드시 공백이 있어야 됨 <!ELEMENT 이름 (#PCDATA)> : <이름>홍길동</이름> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
ANY • <!ELEMENT 엘리먼트이름 ANY> • 문자열, 자식엘리먼트 등 Well-Formed 문서의 규칙을 만족하는 어떤 데이터라도 모두다 포함가능 • <!ELEMENT 설명 ANY> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
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> <!ELEMENT 설명 ANY> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
bestseller.xml <?xml version="1.0" encoding="EUC-KR"?> <!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd"> <이달의베스트셀러> <베스트셀러> <분야>경제, 경영</분야> <종류>금융, 증권</종류> <제목>부자 아빠, 가난한 아빠</제목> <저자>로버트 기요사키</저자> <출판사>황금가지</출판사> <출판일 년="2002"월="3"일="10"/> <설명> <저자>홍길동</저자><저자>이순신</저자><출판사>은뿌리</출판사> </설명> </베스트셀러> </이달의베스트셀러> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 Cardinality ATTLIST ENTITY NOTATION
Element • 엘리먼트가 자식엘리먼트를 포함하고 있는 타입 <!ELEMENT name (first_name, last_name)> <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> * 자식엘리먼트들은 반드시 열거된 순서대로 작성되어야 함 DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality ATTLIST ENTITY NOTATION
ELEMENT : 순차 리스트 • 순차 리스트 • 자식 요소들의 순서를 지정 • “,” • Mixed content에서는 지정되지 않음 DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality ATTLIST ENTITY NOTATION
ELEMENT : 선택 리스트 • 선택 리스트 • 여러 자식 요소들 중에 오직 하나만 허용. “|” DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality ATTLIST ENTITY NOTATION
<?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 #REQUIRED 일 CDATA #REQUIRED> <!ELEMENT 설명 ANY> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality ATTLIST ENTITY NOTATION bestseller.dtd
bestseller.xml <?xml version="1.0" encoding="EUC-KR"?> <!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd"> <이달의베스트셀러> <베스트셀러> <분야><경제/></분야> <종류>금융, 증권</종류> <제목>부자 아빠, 가난한 아빠</제목> <저자>로버트 기요사키</저자> <출판사>황금가지</출판사> <출판일 년="2002"월="3"일="10"/> <설명> <저자>홍길동</저자><저자>이순신</저자><출판사>은뿌리</출판사> </설명> </베스트셀러> </이달의베스트셀러> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 · EMPTY · PCDATA · ANY · Element 이름 - 순차리스트 - 선택리스트 Cardinality ATTLIST ENTITY NOTATION
Cardinality 연산자 • 자식 요소의 개수를 지정 • [none] • cardinality 연산자를 지정하지 않을 경우 오직 한 개의 자식 요소만을 허용 , 필수적 요소 • ? • 자식 요소가 없거나 한 개, 선택적인 단일 요소 • * • 자식 요소가 없거나 다수, 선택적 요소 • + • 자식 요소가 하나이거나 다수, 필수적 요소 DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml) ATTLIST ENTITY NOTATION
<?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 #REQUIRED 일 CDATA #REQUIRED> <!ELEMENT 설명 ANY> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml) ATTLIST ENTITY NOTATION bestseller.dtd
<?xml version="1.0" encoding="EUC-KR"?> <!DOCTYPE 이달의베스트셀러 SYSTEM "bestseller.dtd"> <이달의베스트셀러> <베스트셀러><!--베스트 셀러는 1이상 --> <분야><경제/><비소설/></분야> <!--선택 개수는 마음대로, 종류 엘리먼트 생략가능 --> <종류>금융, 증권</종류> <제목>부자 아빠, 가난한 아빠</제목> <저자>로버트 기요사키</저자><저자>Rovert Kiyosaki</저자> <!--저자는 1이상--> <출판사>황금가지</출판사><출판사>황금나무</출판사><!--출판사 수는 0이상--> <출판일 년="2002"월="3"일="10"/> <설명> <저자>홍길동</저자><저자>이순신</저자><출판사>은뿌리</출판사> </설명> </베스트셀러> </이달의베스트셀러> DTD 개요 DTD+XML ELEMENT 선언 정의 Type 선언 Cardinality · Example(dtd) · Example(xml) ATTLIST ENTITY NOTATION bestseller.xml
속성 선언 • <!ATTLIST 엘리먼트명 속성명 속성타입 존재여부 기본값> • 속성이 포함되는 엘리먼트의 이름과 속성명 속성타입 속성생략 시 제공되는 기본값 등을 선언 <!ELEMENT 출판일 EMPTY> <!ATTLIST 출판일 년 CDATA #REQUIRED 월 CDATA #REQUIRED 일 CDATA #REQUIRED> DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type 속성 기본정보 ENTITY NOTATION
속성의 타입 (attrType) • CDATA • 문자열 • 열거 값 (선택 리스트) • 그 중에 하나 • ID • 그 속성의 값이 유일하다. • IDREF, IDREFS • ID참조 • NMTOKEN, NMTOKENS • 공백이 없는 문자열 • ENTITY, ENTITIES • 외부 파일 참조 • NOTATION • 외부파일 참조 시 어떤 프로그램을 이용하여 참조할 것인지 DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
CDATA • 속성값으로 문자열이 대입 DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
<?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE 회원목록 SYSTEM "member.dtd"> <회원목록> <회원 등급="정회원"> <이름>홍길동</이름> <전화번호>011-234-5678</전화번호> <주소>서울시</주소> </회원> <회원><!--브라우저로 보면 기본값으로 준회원이 들어가 있다.--> <이름>강감찬</이름> <전화번호>062-230-6624</전화번호> <주소>부산시</주소> </회원> <회원 등급="운영자"> <이름>이순신</이름> <전화번호>062-230-7963</전화번호> <주소>광주시</주소> </회원> </회원목록> DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION member.xml
열거 값(Enumerated Value) • 열거된 문자열중 하나가 속성값으로 대입 DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
<?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE 회원목록 SYSTEM "member.dtd"> <회원목록> <회원 등급="정회원"> <이름>홍길동</이름> <전화번호>011-234-5678</전화번호> <주소 지역="서울">서울시</주소> </회원> <회원> <이름>강감찬</이름> <전화번호>062-230-6624</전화번호> <주소 지역="경상도">부산시</주소> </회원> <회원 등급="운영자"> <이름>이순신</이름> <전화번호>062-230-7963</전화번호> <주소>광주시</주소> </회원> </회원목록> DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION member.xml
ID • ID : 모든 요소들 중 유일한 값을 가져야 함 • XML 이름 규칙 준수 • 문자로 시작한다. DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
<?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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION member.xml
IDREF / IDREFS • IDREF : 다른 요소의 ID 값을 참조 • IDREFS : 여러 개의 ID 값을 참조 • 참조된 값은 반드시 문서 내의 ID 속성 값과 일치해야 한다. DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
<?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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION member.xml
NMTOKEN / NMTOKENS • NMTOKEN • 공백이 없는 일련의 문자열 • NMTOKENS • 두개 이상의 NMTOKEN 으로 이루어짐 • CDATA와 유사하지만 공백이 없다. DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
member.xml <?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+XML ELEMENT ATTLIST 속성 선언 속성Type · CDATA · 열거 값 · ID · IDREF/IDREFS · NMTOKEN NMTOKENS 속성 기본정보 ENTITY NOTATION
속성의 기본 정보 (attrDefault) • #REQUIRED • #IMPLIED • #FIXED (plus default value) • Default value(s) DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · Default ENTITY NOTATION
#REQUIRED • 엘리먼트에 반드시 포함되어야 하는 필수속성 DTD 개요 DTD+XML ELEMENT ATTLIST 속성 선언 속성Type 속성 기본정보 · #REQUIRED · #IMPLIED · #FIXED · Default ENTITY NOTATION