1 / 54

Valid XML 과 DTD

Valid XML 과 DTD. 한국교원대학교 이 은 경. Valid XML. Valid XML 의 조건 DTD 와 XML 스키마 만족 유효성 검증을 위한 DTD 와 XML 스키마의 필요성 XML 문서 교환을 위한 구조적인 정보의 정의 필요 요소와 속성 정보에 대한 구조 정보의 필요 요소와 속성의 데이터 값에 대한 규칙 필요 산업 표준을 위한 표준 정보의 필요. DTD 개요 -1. DTD (Document Type Definitions) XML 문서에 유효성을 부여 하기 위해 사용함

geneva
Download Presentation

Valid XML 과 DTD

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Valid XML과 DTD 한국교원대학교 이 은 경

  2. Valid XML • Valid XML의 조건 • DTD와 XML 스키마 만족 • 유효성 검증을 위한 DTD와 XML 스키마의 필요성 • XML 문서 교환을 위한 구조적인 정보의 정의 필요 • 요소와 속성 정보에 대한 구조 정보의 필요 • 요소와 속성의 데이터 값에 대한 규칙 필요 • 산업 표준을 위한 표준 정보의 필요

  3. DTD 개요-1 • DTD (Document Type Definitions) • XML 문서에 유효성을 부여 하기 위해 사용함 • XML 문서의 계층적인 구조와 빈도, 속성 정보 등을 나타냄 • 어떤 태그가 어떤 태그를 포함하고 있으며, 어떤 속성이 있는지, 그 속성의 기본값은 무엇인지 등에 대한 정보를 표현함 • DTD 파서가 따로 필요함 • 문자열 형 만이 선언 가능함 • XML 문서에 하나의 DTD만이 적용가능

  4. <a> <b> <x>…</x> <y>…</y> </b> </a> DTD a b x y DTD 개요-2 Enforces Structure <!ELEMENT x(#PCDATA)> <!ELEMENT y(#PCDATA)>

  5. XML 문서와 결합 • 내부DTD와 외부 DTD • 외부의 DTD 파일 이용 • DTD 파일의 공유가 가능함 - 자주사용 • XML 문서 자체에 DTD를 포함 • 그 문서자체가 하나의 완벽한 유효한 XML 문서가 됨 • 내부와 외부의 혼용사용 • 가장 많이 사용되지만 충돌 가능성

  6. DOCTYPE 선언-1 • <!DOCTYPE 문서요소이름 문서타입정의 식별자 [내부DTD]> <!DOCTYPE 문서요소이름 SYSTEM "DTD 위치” [내부DTD]> <!DOCTYPE 문서요소이름 PUBLIC "DTD 식별자” “DTD 위치”[내부DTD]>

  7. DOCTYPE 선언-2 <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Sample SYSTEM "http://www.RnDTeam.net/Sample.dtd"> <Sample>         <Value>RnDTeam.net</Value> </Sample>

  8. DOCTYPE 선언-3 <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Address PUBLIC "RnDTeam/AddressInfo"> <Address> ..... </Address>

  9. DOCTYPE 선언-4 <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Address  PUBLIC "RnDTeam/AddressInfo" "http://www.RnDTeam.net/Sample.dtd"> <Address> ..... </Address>

  10. 외부 DTD 선언 <!EMEMENT Address (name,phone)*> <!EMEMENT name (#PCDATA)> <!EMEMENT phone (#PCDATA)>

  11. 외부 DTD를 사용한 XML <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Address SYSTEM “ex.dtd"> <Address> <name>이명진</name> <phone>017-752-2222</phone> </Address>

  12. 내부 DTD를 사용한 XML <?xml version="1.0" encoding="euc-kr"? standalone="yes"?> <!DOCTYPE Address [ <!EMEMENT Address (name,phone)*> <!EMEMENT name (#PCDATA)> <!EMEMENT phone (#PCDATA)>]> <Address> <name>이명진</name> <phone>017-752-2222</phone> </Address>

  13. DTD 문서작성 • 요소 선언 • 속성 선언 • 엔티티 선언 • 노테이션 선언

  14. 요소 선언-1 • 요소는 XML 문서를 이루는 기본 골격으로 데이터의 특성을 정의함 • <!EMEMENT 태그이름 요소내용패턴> • 태그이름 : XML 스팩에서 정의한 유효한 이름, XML 문서에서 사용한 요소를 나타냄 • 요소내용패턴 : 요소가 가지는 자식요소의 형태 • ANY • Empty • PCDATA • Element • Mixed

  15. 요소 선언-2 • ANY • <!ELEMENT Book ANY> • Well-Formed XML 문서이면 어떤 것이든 가능 • ANY로 선언된 요소는 모든 요소를 취할 수 있음 • Empty • <!ELEMENT Book EMPTY> • 빈 요소일 때 선언 • 속성을 가질 수 있지만, 기타 요소나 값을 자식 요소로 가질 수 없음

  16. 요소 선언-3 • Empty 사용 예 <Books> <Book />   <Book ISBN="H89-7914-157-2" State="판매중“ />   <Book></Book> </Books>

  17. 요소 선언-4 • PCDATA • <!ELEMENT Book (#PCDATA)> • 요소가 유효한 텍스트를 가짐 • 요소가 텍스트 값을 가질 경우 항상 #PCDATA를 사용하여 선언함 <Books> <Book>자바 네트워킹 게임 프로그래밍 </Book> </Books>

  18. 요소 선언-5 • ELEMENT ONLY • <!ELEMENT Book (A, B, C, D)> • <!ELEMENT Book (A |B |C |D)> • <!ELEMENT Books (Book+)> • <!ELEMENT Book (Title, Author*, Page, Price?)> • 자식 요소가 요소로만 구성된 경우 • 자식 요소의 발생순서나 반복횟수는요소 연결자와 발생 지시자에 의해 결정

  19. 요소 연결자

  20. 발생 지시자

  21. 요소 선언-6 • MIXED <!ELEMENT Roots (#PCDATA | A | B)*> <!ELEMENT A (#PCDATA)> <!ELEMENT A (#PCDATA)> • PCDATA와 요소의 복합적인 형태 • Roots 요소는 PCDATA, A요소, B요소를 선택적으로 가질 수 있으며 반복적으로 나타날 수 있다.

  22. 요소 선언-7 • Mixed 예제 <Roots> 이 책의 제목은 <A> 자바 개발자를 위한 </A> 프로그래밍입니다. 또한 이책의 시리즈는 <B> IT EXPERT </B>         <B> 시리즈입니다. </B> </Roots>

  23. 속성 선언-1 <!ATTLIST 요소이름         속성이름 속성타입 디폴트타입 ...         ... 속성이름 속성타입 디폴트타입 ...>

  24. 속성 선언-2

  25. #REQUIRED • <!ATTLIST 요소이름 속성이름 속성타입 #REQUIRED> <!ELEMENT Book(Title, Author*,Page,Price?)> <!ATTLIST Book ISBN ID #REQUIRED State CDATA #REQUIRED >

  26. #REQUIRED • 유효한 XML 문서 <Books> <Book ISBN=“H89-7914-155-6” State=“판매중”> … </Book> </Books>

  27. #IMPLIED • <!ATTLIST 요소이름 속성이름 속성타입 #IMPLIED> <!ELEMENT FixedPrice (#PCDATA)> <!ATTLIST FixedPrice PriceUnit CDATA #IMPLIED >

  28. #IMPLIED • 유효한 XML 문서 <Price> <FixedPrice PriceUnit=“원”>35000</FixedPrice> <FixedPrice>27000</FixedPrice> </Price>

  29. #FIXED default_value • <!ATTLIST 요소이름 속성이름 속성타입 #FIXED “디폴트값”> <!ELEMENT eCoin (#PCDATA)> <!ATTLIST eCoin PriceUnit CDATA #FIXED “원” >

  30. #FIXED default_value • 유효한 XML 문서 <Price> <FixedPrice PriceUnit=“원”>35000</FixedPrice> <FixedPrice>27000</FixedPrice> </Price> • 잘못된 예 <Price> <FixedPrice PriceUnit=“달러”>16</FixedPrice> </Price>

  31. #default_value • <!ATTLIST 요소이름 속성이름 속성타입 “디폴트값”> <!ELEMENT DiscountPrice (#PCDATA)> <!ATTLIST DiscountPrice PriceUnit CDATA “원” >

  32. #default_value • 유효한 XML 문서 <Price> <DiscountPrice PriceUnit=“원”>35000</DiscountPrice> <DiscountPrice>27000</DiscountPrice> <DiscountPrice PriceUnit=“달러”>17</DiscountPrice> </Price>

  33. 속성 선언-3

  34. CDATA • <!ATTLIST 요소이름 속성이름 CDATA 디폴트타입> <!ELEMENT Book(Title, Author*,Page,Price?)> <!ATTLIST Book ISBN ID #REQUIRED State CDATA #REQUIRED > • 유효한 XML 문서 <Books> <Book ISBN=“H89-7914-155-6” State=“판매중”> </Book> </Books>

  35. 선택형 • <!ATTLIST 요소이름 속성이름 (리스트1|리스트2|..) 디폴트타입> <!ELEMENT Title(#PCDATA)> <!ATTLIST Title Assortment CDATA #REQUIRED Level (1|2|3|4|5) #REQUIRED > • 유효한 XML 문서 <Book ISBN=“H89-7914-155-6” State=“판매중”> <Title Assortment=“자바”Level=“2”>자바</Title> <Title Assortment=“XML”Level=“4”>XML</Title> </Book>

  36. ID • <!ATTLIST 요소이름 속성이름 ID 디폴트타입> 디폴트 타입이 항상 #REQUIRED 나 #IMPLIED <!ELEMENT Book(Title, Author*,Page,Price?)> <!ATTLIST Book ISBN ID #REQUIRED State CDATA #REQUIRED > • 유효한 XML 문서 <Books> <Book ISBN=“H89-7914-155-6” State=“판매중”/> </Books>

  37. IDREF/IDREFS • <!ATTLIST 요소이름 속성이름 IDREF 디폴트타입> <!ELEMENT Books(Book*,Title*)> <!ELEMENT Book EMPTY> <!ATTLIST Book ISBN ID #REQUIRED > <!ELEMENT Title (#PCDATA)> <!ATTLIST Title ISBNRef IDREF #REQUIRED >

  38. IDREF/IDREFS • 유효한 XML 문서 <Books> <Book ISBN=“H89-7914-155-6” /> <Book ISBN=“H89-7914-157-2” /> <Title ISBNRef=“H89-7914-155-6”>자바 네트워킹 프로그래밍</Title> </Books> • 여러개의 ID를 참조해야 할 경우 IDREFS롤 선언

  39. NMTOKEN/NMTOKENS • <!ATTLIST 요소이름 속성이름 NMTOKEN 디폴트타입> <!ELEMENT Books(Book+)> <!ELEMENT Book EMPTY> <!ATTLIST Book Title NMTOKEN #REQUIRED> • 유효한 XML 문서 <Books><Book Title=“자바XML” /><Books> • 잘못된 문서 <Books><Book Title=“자바 XML” /><Books> • NMTOKENS : 유효한 문자열이 공백으로 구분되어 여러 개 올 수 있음

  40. NOTATION • <!ATTLIST 요소이름 속성이름 NOTATION 선택형 디폴트타입> <!ELEMENT Book (BookCover)> <!ELENENT BookCover (#PCDATA)> <!NOTATION GIF SYSTEM "ACDSee.exe"> <!NOTATION JPG SYSTEM “JPG_Viewer.exe"> <!ATTLIST BookCover Img NOTATION (GIF|JPG) #REQUIRED> • 유효한 XML 문서 <Book> <BookCover Img=“GIF”>xml.gif</BookCover> </Book>

  41. ENTITY/ENTITIES • <!ATTLIST 요소이름 속성이름 ENTITY 디폴트타입> <!ELEMENT Book (BookCover)> <!ELEMENT BookCover (#PCDATA)> <!ATTLIST BookCover Img ENTITY #IMPLIED> <!NOTATION GIF SYSTEM "ACDSee.exe"> <!ENTITY cover1 SYSTEM “cover1.gif” NDATA GIF> <!ENTITY cover2 SYSTEM “cover2.gif” NDATA GIF> • 유효한 XML 문서 <Book> <BookCover Img=“cover1”>자바와 XML</BookCover> </Book>

  42. 엔티티 선언 • 문서 작성의 효율성 추구 • 한번 정의한 엔티티를 재사용 • 반복적인 XML 문서 작성 작업을 줄이고 문서 관리 용이, 엔티티를 통해 특수문자 참조 • 엔티티의 내용 : 요소, 문자 데이터, CDATA 등으로 이루어짐 • 선언된 엔티티는 XML 문서 내에서 엔티티 참조로 참조됨

  43. 엔티티의 용도에 따른 분류

  44. 엔티티의 내용에 따른 분류

  45. 엔티티의 위치에 따른 분류

  46. 엔티티 내용에 따른 분류 • 파싱된 엔티티 • XML 파서에 의해 파싱이 가능한 엔티티 • Well-Formed 한 XML 문서, 혹은 문자열 • 일반엔티티 및 매개변수 엔티티에서 사용가능 • 파싱되지 않은 엔티티 • XML 파서에 의해 해석되지 않는 엔티티 • 참조대상은 텍스트 또는 바이너리 형식 • NOTATION과 같이 사용

  47. 일반 엔티티 • 파싱된 내부 엔티티 • <!ENTITY 엔티티이름 “엔티티값”> • 유효한 엔티티 문자열이 한 문서 내에서 참조 • 파싱된 외부 엔티티 • <!ENTITY 엔티티이름 SYSTEM “참조 대상 파일 이름”> • 대체 텍스트도 Well-Formed 한 XML 문서이거나 문자열이어야 함 • 파싱되지 않은 엔티티 • <!ENTITY 엔티티이름 SYSTEM "대상 엔티티 경로“NDATA 노테이션타입> • 바이너리 형식의 파일로 외부 엔티티 형태만 허용 • 참조는 SYSTEM, PUBLIC 형태로 참조 가능

  48. 파싱된 내부엔티티의 사용 <?xml version=“1.0” encoding=“euc-kr”?> <!DOCTYPE Books [ <!ELEMENT Books (Book)> <!ENEMENT Book (#PCDTA)> <!ENTITY IE “[IT Expert]”> ]> <Books> <Book>&IE; XML 프로그래밍</Book> </Books> [IT Expert] XML 프로그래밍

  49. 파싱된 외부엔티티의 사용 <?xml version=“1.0” encoding=“euc-kr”?> <!DOCTYPE Books [ <!ELEMENT Books (Book)> <!ENEMENT Book (#PCDTA)> <!ENTITY booktitle SYSTEM “2-10.txt”> ]> <Books> <Book>&booktitle;</Book> </Books> • 2-10.txt의 내용 <?xml version=“1.0” encoding=“euc-kr”?> [IT Expert] XML 프로그래밍

  50. 파싱되지 않은 엔티티 <!ELEMENT Book (BookCover)> <!ELEMENT BookCover (#PCDATA)> <!ATTLIST BookCover Img ENTITY #IMPLIED> <!NOTATION GIF SYSTEM "ACDSee.exe"> <!ENTITY cover1 SYSTEM “cover1.gif” NDATA GIF> <!ENTITY cover2 SYSTEM “cover2.gif” NDATA GIF> <Book> <BookCover Img=“cover1”>자바와XML </BookCover> </Book>

More Related