자바 개발자를 위한
Download
1 / 39

자바 개발자를 위한 XML - PowerPoint PPT Presentation


  • 182 Views
  • Uploaded on

자바 개발자를 위한 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 [

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 자바 개발자를 위한 XML' - mariko-burke


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

자바 개발자를 위한 XML

Chap2. DTD와 XML 문서

김만수


Chapther 2
CHAPTHER 2

  • DTD와 XML 문서

    • DTD 소개

    • 원소 선언

    • 속성 선언

    • 엔티티 선언

    • 노테이션 선언과 바이너리 데이터

    • 처리명령어

    • 주석

    • 조건부 섹션

    • CDATA 섹션

    • DTD 설계

    • DTD 파서


2 2 xml
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 문서 내용


2 2 xml1
2.2 XML 문서 구조

greeting.xml

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

<greeting>안녕하세요.</greeting>


2 2 1 xml
2.2.1 XML 선언 부분

  • version

    • 사용되는 XML 버전을 반드시 명시

  • encoding

    • 데이터 인코딩에 사용되는 문자 세트 기술

  • standalong

    • 외부 엔티티나 외부 데이터 타입을 사용하는지 여부 기술

    • 외부 엔티티를 사용하지 않으면 “yes”

<?xml version=“1.0” encoding=“euc-kr” standalong=“yes”?>


2 2 1 xml1
2.2.1 XML 선언 부분

  • 용어 정리

    • 잘 정의된(well-formed) : XML 문법 사항을 지킨 문서

    • 유효한(valid) : XML 문서가 잘 정의되어 있으면서, 문서 내용이 DTD 규칙에 맞게 작성된 문서

    • 엔티티(entity) : XML에서 정보의 단위

    • 원소/태그/속성

속성

<to what = “name”>홍길동</to>

원소

시작태그

내용

끝 태그


2 2 2 dtd
2.2.2 DTD 선언 부분

  • DTD (Document Type Definition)

    • XML 문서의 구조

    • XML 문서에서 사용할 수 있는 원소, 속성, 엔티티 등을 정의

    • XML 문서는 DTD를 사용할 수 있거나, 무시 할 수 있음

  • DTD의 필요성

    • 문서의 형태를 정형화된 방법으로 선언 –표준화

    • 문서 내용이 올바른 구조로 되어 있는지 검사 가능

    • XML 문서에서 꼭 필요한 원소와 속성을 반드시 기술하도록 만들 수 있음

    • 속성에 디폴트 값을 부여


2 2 2 dtd1
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

>

]>


2 2 2 dtd2
2.2.2 DTD 선언 부분

  • DTD 선언

    • 원소 선언, 속성 선언 등 다양한 내용

    • 원소 선언(element declaration)

      • XML 문서에서 사용될 태그들과 태그들 사이의 포함 관계 및 순서를 기술

      • <!ELEMENT .. >

    • 속성 선언(attribute declaration)

      • 원소에서 사용될 수 있는 속성의 이름과 디폴트 값에 관한 사항들을 기술

      • <!ATTLIST .. >

    • 엔티티 선언

      • <!ENTITY .. >


2 2 2 dtd3
2.2.2 DTD 선언 부분

  • DTD 선언

    • 처리 명령어(processing instruction)

      • 특수한 응용프로그램의 명령어(Processing Instruction)을 기술

      • <? ?>

    • 노테이션 선언(notation declaration)

      • 데이터의 포맷이나 처리 명령어에서 기술된 응용프로그램의 이름을 식별하기 위해서 사용

      • <!NOTATION ..>


2 2 3 xml
2.2.3 XML 문서 내용

  • XML 문서 내용에는 실제 문서의 내용이 기술

    • 원소(element) : 태그와 문서 내용을 기술

    • 속성(attribute) : 원소에 포함되어서 원소에 대한 메타 정보를 기술

    • 주석(comment) : 문서의 주석을 기술

    • 처리 명령어(processing instruction)

    • 엔티티 참조(entity reference) : 엔티티를 참조해서 사용

    • CDATA 섹션(CDATA Section) : <, &, ? 등의 문자를 포함하는 데이터를 편리하게 기술하기 위해서 사용


2 2 3 xml1
2.2.3 XML 문서 내용

  • XML 문서 요소들

    • XML 문서에는 오직 하나의 루트 원소가 존재


2 2 4 memo xml
2.2.4 memo.xml

memo

to

date

contents

from


2 3 dtd
2.3 DTD 소개

  • DTD 선언의 요소들

    • 내부 DTD + 외부 DTD 파일 참조 사용 가능

      • 외부 DTD 선언의 내용을 재정의 하거나 추가 가능


2 3 1 dtd
2.3.1 내부 DTD

  • DTD 선언

    • <!DOCTYPE Name [ 마크업선언*]>

  • 마크업선언

    • 원소선언|속성선언|엔티티선언|노테이션선언|PI|주석

  • Parsed Character Data

  • XML의 특수 문자를 제외한 임의의 문자가 올 수 있음


2 3 1 dtd1
2.3.1 내부 DTD

  • ‘to’ Element의 속성 중 ‘what’은 반드시 기술 해야 함

  • IE는 XML 문서가 DTD에 유효한가를 체크하지 않음


2 3 2 dtd
2.3.2 외부 DTD

  • 외부 DTD 사용의 필요성

    • 공통된 DTD를 여러 XML에서 공유할 수 있음

  • DTD 선언

    • <!DOCTYPE Name외부ID>

  • 외부 ID

    • SYSTEM URL | PUBLIC PubidLiteral SystemLiteral

  • 예제 p. 2-11


2.4 원소 선언

  • 원소선언

    • <!ELEMENT element-namecontents>

  • contents

    • EMPTY | ANY | mixed | children


2 4 3 children
2.4.3 자식 노드만을 가질 때 - children

  • children은 별도의 키워드를 가지지 않음

  • 선언 예

    • <!ELEMENT memo(to, date, contents, from)>

    • <!ELEMENT spec(front, body, back?)>

    • <!ELEMENT div1(head, (p|list|note)*, div2*>


2.5 속성 선언

  • 속성 리스트(ATTLIST) 선언

    • 원소의 속성을 정의하기 위해서 사용

    • 원소의 이름과 속성 이름, 속성의 타입 및 디폴트 값 기술

    • <!ATTLIST element-nameattr-nameattr-typedefault-decl>

  • attr-type

    • CDATA : 임의의 문자열을 가짐

    • 토큰 : ID, IDREF, IDREFS, ENTITY, ENTITYES, NMTOKEN, NMTOKENS의 키워드 중에서 하나를 사용

    • 열거형 : DTD 개발자가 정해놓은 여러 개의 속성 값들 중에 하나를 사용


2.5 속성 선언

  • CDATA

    • 속성의 값이 문자열 타입

    • XML의 특수 문자들은 사용 불가능

    • <!ATTLIST to what CDATA #REQUIRED>


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


2.5 속성 선언

  • 열거형 타입

    • 종류

      • 주어진 값들 중에서 하나를 선택하는 타입

      • NOTATION 타입

    • <!ATTLIST to what (name | title | nickname) “name”>

  • 속성의 디폴트 값 선언

    • #REQUIRED : 속성 값을 반드시 명시

    • #IMPLIED : 속성의 디폴트 값이 없음

    • ((#FIDEX) ? AttValue : 속성의 디폴트 값을 명시


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”>


2.6 엔티티 선언

  • Entity

    • XML 문서에서 정보의 단위

    • 참조될 수 있도록 이름을 가짐

    • 문자, 문장, 혹은 파일이 하나의 단위가 됨

    • Entity 선언을 통해서 정의

  • 문자 단위의 Entity

& ;

#숫자: 10진수 문자 코드#x숫자: 16진수 문자 코드#문자: 정의된 Entity 참조


2.6 엔티티 선언

엔티티 분류

엔티티

일반 엔티티

파라메터 엔티티

내부 엔티티

외부 엔티티

내부 엔티티

외부 엔티티

파싱된 엔티티

파싱된 엔티티

파싱안된 엔티티


2.6 엔티티 선언

  • 일반 엔티티

    • 프로그래밍 언어에서 매크로와 유사

    • DTD에서 일반 엔티티를 선언

    • XML 문서 내용중에서 엔티티 참조를 이용해서 엔티티 사용

    • <!ENTITY namevalue >


2.6 엔티티 선언


2.6 엔티티 선언

  • 파라메터 엔티티

    • DTD 내부에서만 사용할 수 있는 엔티티

    • 일반 엔티티 선언 방법이 다름

    • <!ENTITY % namevalue>

    • 파라메터 엔티티 참조 방법

      • %name;


2.6 엔티티 선언

  • 외부 엔티티

    • 외부 파일에 저장된 정보

    • XML 문서, 바이너리 내용(.jpg, .mpg 등) 등

    • 외부 엔티티의 위치는 시스템 식별자를 통해서 제공 – SYSTEM

    • <!ENTITY mydata SYSTEM “my.xml”>

    • 예. 2-40


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”>


2.7 노테이션 선언과 바이너리 데이터

  • Binary Data XML 문서에서 직접 사용 못함

    • Entity를 선언해서 속성의 값으로만 사용 가능

    • <!ENTITY mypic SYSTEM “mypic.gif” NDATA gif>

      • NDATA gif는 <!NOTATAION gif … > 를 의미

    • 선언된 Binary Entity와 파싱되는 Entity는 차이점

      • 파싱되는 Entity : 문서에서 직접 참조 가능

      • 선언된 Binary Entity : 속성의 값으로만 사용, & ;를 붙이지 않음


2.7 노테이션 선언과 바이너리 데이터

Notation과 Binary Data Entity를 정의

Binary Data Entity는 속성 값으로만 사용

XML 문서에서 Binary Data 사용


2 8 pi processing instruction
2.8 처리 명령어(PI : Processing Instruction)

  • DTD 부분과 XML 문서 내용 부분에서 모두 사용

  • XML 자신의 문서를 어떻게 처리 하라는 정보를 문서 처리 응용프로그램에게 전달

  • 처리명령어

    • <? 응용프로그램이름응용프로그램명령어?>

  • 응용프로그램이름

    • <?xml-stylesheet type=“text/css” href=“style.css” ?>

    • <?xml-sytlesheet type=“text/xsl” href=“style.xsl” ?>


2.9 주석

  • DTD와 XML 문서 내용 모두 사용 가능

  • Tag안에서는 사용될 수 없음

  • 일반 엔티티 선언

    • <!-- 주석내용 -->

    • <greeting> 안녕하세요 </greeting> <!-- 잘못된 주석 --> >


2.10 조건부 섹션

  • DTD의 일부분을 포함시키거나, 제외시킬 수 있는 기능

  • 조건부 섹션

    • <![keyword[ … ]]>


2 11 cdata
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>


2 12 dtd
2.12 DTD 설계

  • 일반적인 방법론

    • 재사용과 재정의

      • Parameter Entity를 사용, 수정을 용의

      • 예 p. 5-53

    • 컴포지션에 의한 재사용

      • 기존의 DTD를 활용하여 더 넓은 개념에서 기존의 DTD를 child 구조로 수용

      • 예 p. 5-56


ad