1 / 39

자바 개발자를 위한 XML

자바 개발자를 위한 XML. Chap2. DTD 와 XML 문서 김만수. CHAPTHER 2. DTD 와 XML 문서 DTD 소개 원소 선언 속성 선언 엔티티 선언 노테이션 선언과 바이너리 데이터 처리명령어 주석 조건부 섹션 CDATA 섹션 DTD 설계 DTD 파서. 2.2 XML 문서 구조. <?xml version= “ 1.0 ” encoding= “ euc-kr ” ?. XML 선언. 서론 ( 생략가능 ). <!DOCUMENT memo [

Download Presentation

자바 개발자를 위한 XML

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. 자바 개발자를 위한 XML Chap2. DTD와 XML 문서 김만수

  2. CHAPTHER 2 • DTD와 XML 문서 • DTD 소개 • 원소 선언 • 속성 선언 • 엔티티 선언 • 노테이션 선언과 바이너리 데이터 • 처리명령어 • 주석 • 조건부 섹션 • CDATA 섹션 • DTD 설계 • DTD 파서

  3. 2.2 XML 문서 구조 <?xml version=“1.0” encoding=“euc-kr”? XML 선언 서론(생략가능) <!DOCUMENT memo [ <!ELEMENT memo (to, …)> ?]> DTD 선언(생략가능) <memo> <to what=“name”>홍길동</to> <date>2002/04/05</date> <contents>여자 친구로부터 전화 요망 </contents> <from>허준</from> </memo> 문서 내용 XML 문서 내용

  4. 2.2 XML 문서 구조 greeting.xml <?xml version="1.0" encoding="euc-kr" ?> <greeting>안녕하세요.</greeting>

  5. 2.2.1 XML 선언 부분 • version • 사용되는 XML 버전을 반드시 명시 • encoding • 데이터 인코딩에 사용되는 문자 세트 기술 • standalong • 외부 엔티티나 외부 데이터 타입을 사용하는지 여부 기술 • 외부 엔티티를 사용하지 않으면 “yes” <?xml version=“1.0” encoding=“euc-kr” standalong=“yes”?>

  6. 2.2.1 XML 선언 부분 • 용어 정리 • 잘 정의된(well-formed) : XML 문법 사항을 지킨 문서 • 유효한(valid) : XML 문서가 잘 정의되어 있으면서, 문서 내용이 DTD 규칙에 맞게 작성된 문서 • 엔티티(entity) : XML에서 정보의 단위 • 원소/태그/속성 속성 <to what = “name”>홍길동</to> 원소 시작태그 내용 끝 태그

  7. 2.2.2 DTD 선언 부분 • DTD (Document Type Definition) • XML 문서의 구조 • XML 문서에서 사용할 수 있는 원소, 속성, 엔티티 등을 정의 • XML 문서는 DTD를 사용할 수 있거나, 무시 할 수 있음 • DTD의 필요성 • 문서의 형태를 정형화된 방법으로 선언 –표준화 • 문서 내용이 올바른 구조로 되어 있는지 검사 가능 • XML 문서에서 꼭 필요한 원소와 속성을 반드시 기술하도록 만들 수 있음 • 속성에 디폴트 값을 부여

  8. 2.2.2 DTD 선언 부분 • DTD 사용 방법 (p. 2-6 참조) • XML 문서 내에서 DTD 선언 • 외부 파일로 DTD를 선언 • 외부 DTD와 내부 DTD를 같이 사용하는 방법 <!DOCTYPE memo [ … ]> <!DOCTYPE memo SYSTEM “memo.dtd”> <!DOCTYPE car SYSTEM “car.dtd” [ <!ENTITY % ownership “(name, phone, addr)”> <!ATTLIST model maker CDATA #REQUIRED > ]>

  9. 2.2.2 DTD 선언 부분 • DTD 선언 • 원소 선언, 속성 선언 등 다양한 내용 • 원소 선언(element declaration) • XML 문서에서 사용될 태그들과 태그들 사이의 포함 관계 및 순서를 기술 • <!ELEMENT .. > • 속성 선언(attribute declaration) • 원소에서 사용될 수 있는 속성의 이름과 디폴트 값에 관한 사항들을 기술 • <!ATTLIST .. > • 엔티티 선언 • <!ENTITY .. >

  10. 2.2.2 DTD 선언 부분 • DTD 선언 • 처리 명령어(processing instruction) • 특수한 응용프로그램의 명령어(Processing Instruction)을 기술 • <? ?> • 노테이션 선언(notation declaration) • 데이터의 포맷이나 처리 명령어에서 기술된 응용프로그램의 이름을 식별하기 위해서 사용 • <!NOTATION ..>

  11. 2.2.3 XML 문서 내용 • XML 문서 내용에는 실제 문서의 내용이 기술 • 원소(element) : 태그와 문서 내용을 기술 • 속성(attribute) : 원소에 포함되어서 원소에 대한 메타 정보를 기술 • 주석(comment) : 문서의 주석을 기술 • 처리 명령어(processing instruction) • 엔티티 참조(entity reference) : 엔티티를 참조해서 사용 • CDATA 섹션(CDATA Section) : <, &, ? 등의 문자를 포함하는 데이터를 편리하게 기술하기 위해서 사용

  12. 2.2.3 XML 문서 내용 • XML 문서 요소들 • XML 문서에는 오직 하나의 루트 원소가 존재

  13. 2.2.4 memo.xml memo to date contents from

  14. 2.3 DTD 소개 • DTD 선언의 요소들 • 내부 DTD + 외부 DTD 파일 참조 사용 가능 • 외부 DTD 선언의 내용을 재정의 하거나 추가 가능

  15. 2.3.1 내부 DTD • DTD 선언 • <!DOCTYPE Name [ 마크업선언*]> • 마크업선언 • 원소선언|속성선언|엔티티선언|노테이션선언|PI|주석 • Parsed Character Data • XML의 특수 문자를 제외한 임의의 문자가 올 수 있음

  16. 2.3.1 내부 DTD • ‘to’ Element의 속성 중 ‘what’은 반드시 기술 해야 함 • IE는 XML 문서가 DTD에 유효한가를 체크하지 않음

  17. 2.3.2 외부 DTD • 외부 DTD 사용의 필요성 • 공통된 DTD를 여러 XML에서 공유할 수 있음 • DTD 선언 • <!DOCTYPE Name외부ID> • 외부 ID • SYSTEM URL | PUBLIC PubidLiteral SystemLiteral • 예제 p. 2-11

  18. 2.4 원소 선언 • 원소선언 • <!ELEMENT element-namecontents> • contents • EMPTY | ANY | mixed | children

  19. 2.4.3 자식 노드만을 가질 때 - children • children은 별도의 키워드를 가지지 않음 • 선언 예 • <!ELEMENT memo(to, date, contents, from)> • <!ELEMENT spec(front, body, back?)> • <!ELEMENT div1(head, (p|list|note)*, div2*>

  20. 2.5 속성 선언 • 속성 리스트(ATTLIST) 선언 • 원소의 속성을 정의하기 위해서 사용 • 원소의 이름과 속성 이름, 속성의 타입 및 디폴트 값 기술 • <!ATTLIST element-nameattr-nameattr-typedefault-decl> • attr-type • CDATA : 임의의 문자열을 가짐 • 토큰 : ID, IDREF, IDREFS, ENTITY, ENTITYES, NMTOKEN, NMTOKENS의 키워드 중에서 하나를 사용 • 열거형 : DTD 개발자가 정해놓은 여러 개의 속성 값들 중에 하나를 사용

  21. 2.5 속성 선언 • CDATA • 속성의 값이 문자열 타입 • XML의 특수 문자들은 사용 불가능 • <!ATTLIST to what CDATA #REQUIRED>

  22. 2.5 속성 선언 • 토큰 타입 • ID, IDREF, IDREFS • <!ATTLIST termdef id ID #REQUIRED who IDREF #REQUIRED peoples IDREFS #REQUIRED name CDATA #IMPLIED> • ID • XML 문서에서 원소를 유일하게 식별할 수 있게 속성 값을 지정 • IDREF, IDREFS • XML 문서에서 문서의 다른 부분을 지칭이 필요 때 사용 • IDREFS는 여러 개의 ID를 지칭 가능 • 예제 p. 2-30

  23. 2.5 속성 선언 • 열거형 타입 • 종류 • 주어진 값들 중에서 하나를 선택하는 타입 • NOTATION 타입 • <!ATTLIST to what (name | title | nickname) “name”> • 속성의 디폴트 값 선언 • #REQUIRED : 속성 값을 반드시 명시 • #IMPLIED : 속성의 디폴트 값이 없음 • ((#FIDEX) ? AttValue : 속성의 디폴트 값을 명시

  24. 2.5 속성 선언 • 속성의 디폴트 값 선언 • #REQUIRED • <!ATTLIST to what CDATA #REQUIRED> • #IMPLIED • <!ATTLIST termdef name CDATA #IMPLIED> • #FIXED • <!ATTLIST from method CDTA #FIXED “POST”> • <!ATTLIST list type (bullets | ordered | glossary) “ordered”>

  25. 2.6 엔티티 선언 • Entity • XML 문서에서 정보의 단위 • 참조될 수 있도록 이름을 가짐 • 문자, 문장, 혹은 파일이 하나의 단위가 됨 • Entity 선언을 통해서 정의 • 문자 단위의 Entity & ; #숫자: 10진수 문자 코드#x숫자: 16진수 문자 코드#문자: 정의된 Entity 참조

  26. 2.6 엔티티 선언 엔티티 분류 엔티티 일반 엔티티 파라메터 엔티티 내부 엔티티 외부 엔티티 내부 엔티티 외부 엔티티 파싱된 엔티티 파싱된 엔티티 파싱안된 엔티티

  27. 2.6 엔티티 선언 • 일반 엔티티 • 프로그래밍 언어에서 매크로와 유사 • DTD에서 일반 엔티티를 선언 • XML 문서 내용중에서 엔티티 참조를 이용해서 엔티티 사용 • <!ENTITY namevalue >

  28. 2.6 엔티티 선언

  29. 2.6 엔티티 선언 • 파라메터 엔티티 • DTD 내부에서만 사용할 수 있는 엔티티 • 일반 엔티티 선언 방법이 다름 • <!ENTITY % namevalue> • 파라메터 엔티티 참조 방법 • %name;

  30. 2.6 엔티티 선언 • 외부 엔티티 • 외부 파일에 저장된 정보 • XML 문서, 바이너리 내용(.jpg, .mpg 등) 등 • 외부 엔티티의 위치는 시스템 식별자를 통해서 제공 – SYSTEM • <!ENTITY mydata SYSTEM “my.xml”> • 예. 2-40

  31. 2.7 노테이션 선언과 바이너리 데이터 • XML문서에 사진, 동영상, 음악 파일들(Binary Data)을 모두 기술 가능 • XML 문서는 텍스트 문서  Binary Data는 외부 파일로 저장하고 연결 • Notation • Binary Data를 어떻게 처리 할 것인지를 지정 • <!NOTATION name (외부ID | 공용ID)> • 외부 ID • SYSTEM 키워드를 사용해서 Binary Data를 처리 할 수 있는 응용 프로그램을 명시 • 공용ID • 표준화된 Binary Data일 경우 PUBLIC 키워드를 사용 • 예 • <!NOTATION gif SYSTEM “C:\gifviewer.exe”>

  32. 2.7 노테이션 선언과 바이너리 데이터 • Binary Data XML 문서에서 직접 사용 못함 • Entity를 선언해서 속성의 값으로만 사용 가능 • <!ENTITY mypic SYSTEM “mypic.gif” NDATA gif> • NDATA gif는 <!NOTATAION gif … > 를 의미 • 선언된 Binary Entity와 파싱되는 Entity는 차이점 • 파싱되는 Entity : 문서에서 직접 참조 가능 • 선언된 Binary Entity : 속성의 값으로만 사용, & ;를 붙이지 않음

  33. 2.7 노테이션 선언과 바이너리 데이터 Notation과 Binary Data Entity를 정의 Binary Data Entity는 속성 값으로만 사용 XML 문서에서 Binary Data 사용

  34. 2.8 처리 명령어(PI : Processing Instruction) • DTD 부분과 XML 문서 내용 부분에서 모두 사용 • XML 자신의 문서를 어떻게 처리 하라는 정보를 문서 처리 응용프로그램에게 전달 • 처리명령어 • <? 응용프로그램이름응용프로그램명령어?> • 응용프로그램이름 • 예 • <?xml-stylesheet type=“text/css” href=“style.css” ?> • <?xml-sytlesheet type=“text/xsl” href=“style.xsl” ?>

  35. 2.9 주석 • DTD와 XML 문서 내용 모두 사용 가능 • Tag안에서는 사용될 수 없음 • 일반 엔티티 선언 • <!-- 주석내용 --> • 예 • <greeting> 안녕하세요 </greeting> <!-- 잘못된 주석 --> >

  36. 2.10 조건부 섹션 • DTD의 일부분을 포함시키거나, 제외시킬 수 있는 기능 • 조건부 섹션 • <![keyword[ … ]]>

  37. 2.11 CDATA 섹션 • XML 문서 내용에서만 사용 • XML의 특수 문자를 사용할 수 있음 • <![CDTA[ … ]]> • 예 <script> <![CDATA[ if (x < 7 && x > 5) { alert(“x = 6”); } ]]>/script> <script> if (x &lt; 7 &amp;&amp; x &gt; 5) { alert(“x = 6”); } /script>

  38. 2.12 DTD 설계 • 일반적인 방법론 • 재사용과 재정의 • Parameter Entity를 사용, 수정을 용의 • 예 p. 5-53 • 컴포지션에 의한 재사용 • 기존의 DTD를 활용하여 더 넓은 개념에서 기존의 DTD를 child 구조로 수용 • 예 p. 5-56

More Related