간단한
This presentation is the property of its rightful owner.
Sponsored Links
1 / 75

간단한 DTD 작성 PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

간단한 DTD 작성. <?xml version="1.0" encoding= “ euc-kr"?> <memo> <body> <p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2 시부터 시작될 예정으로 있으니 꼭 참석하여 주시 기 바랍니다 . </p> <p> 회의 참석 여부를 오늘 중으로 제게 알려 주시 기 바랍니다 . </p> </body> </memo>. 첫번째 문서를 위한 DTD. DTD 를 XML 문서에 포함시킬 경우.

Download Presentation

간단한 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.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


Dtd

간단한 DTD 작성


Dtd

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

<memo>

<body>

<p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후

2시부터 시작될 예정으로 있으니 꼭 참석하여 주시

기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시

기 바랍니다. </p>

</body>

</memo>


Dtd

첫번째 문서를 위한 DTD

  • DTD를 XML 문서에 포함시킬 경우

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

<!DOCTYPE 루트 요소명 [

DTD의 내용

]>


Dtd xml

DTD가 추가된 XML 문서

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

<!DOCTYPE memo [

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

]>

<memo>

<body>

<p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터

시작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

</memo>


Body p

body와 p 요소를 추가

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

<memo>

<body>

<p> 컴퓨터 시스템 구축을 위한 1차 회의가 내일 오후 2시부터 시작

될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

<body>

<p> 컴퓨터 시스템 구축을 위한 2차 회의가 모레 오후 4시부터 시작

될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

</memo>


Dtd

DTD 변경

  • 하나 이상의 body 요소가 올 수 있도록 변경된 DTD

<!ELEMENT memo (body+) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >


Body p1

body와 동일한 수준으로 p 요소 사용

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

<!DOCTYPE memo [

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

]>

<memo>

<body>

<p> 컴퓨터 시스템 구축을 위한 1차 회의가 내일 오후 2시부터 시작

될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

</body>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p> </memo>


Dtd

p 요소가 없는 경우

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE memo [

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

]>

<memo>

<body>

</body>

</memo>


Dtd

확장된 XML 문서

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

<memo>

<header>

<to>

<heading> To: </heading>

<name> 홍길동 </name>

</to>

<from>

<heading> From: </heading>

<name> 장길산 </name>

</from>

<date> 2000. 8. 15. </date>

</header>

<body>

<p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터

시작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

</memo>


Xml dtd

확장된 XML 문서를 위한 DTD

<!ELEMENT memo (header, body) >

<!ELEMENT header (to, from, date) >

<!ELEMENT to (heading, name) >

<!ELEMENT from (heading, name) >

<!ELEMENT heading (#PCDATA) >

<!ELEMENT name (#PCDATA) >

<!ELEMENT date (#PCDATA) >

<!ELEMENT p (#PCDATA) >

<!ELEMENT body (p*) >


Header dtd

header 요소를 변경한 DTD

<!ELEMENT memo (header, body) >

<!ELEMENT header ((to, from, date) |

(date, to, from)) >

<!ELEMENT to (heading, name) >

<!ELEMENT from (heading, name) >

<!ELEMENT heading (#PCDATA) >

<!ELEMENT name (#PCDATA) >

<!ELEMENT date (#PCDATA) >

<!ELEMENT heading (#PCDATA) >

<!ELEMENT p (#PCDATA) >

<!ELEMENT body (p*) >


Dtd

DTD 작성 연습

<?xml version="1.0" encoding="UTF-8"?>

<faq>

<info>

<subject> XML </subject>

<author> 강감찬 </author>

<email> [email protected] </email>

<date> 2000. 7. 22. </date>

</info>

<part>

<q>

<qtext> What is XML?</qtext>

<a> SGML light. </a>

</q>

<q>

<qtext> What can I use it for?</qtext>

<a> Anything. </a>

</q>

</part>

</faq>


Dtd document type definition

DTD (Document Type Definition)작성법

DTD는 문서 타입 정의(Document Type Definition)를 나타낸다.

DTD는 엘리먼트 , 속성, 표기법, 문서에 포함된 엔터티의 목록

뿐만 아니라 각 요소 간의 관계도 알려준다.

즉, DTD는 문서의 구조에 사용되는 규칙의 집합을 지정한다.


Dtd document type definition1

<?xml version=“1.0” encoding=“UTF-8”?>

<!DOCTYPE GREETING [

<!ELEMENT GREETING (#PCDATA)>

]>

<GREETING>

Hello XML!

</GREETING >

DTD (Document Type Definition)작성법

프롤로그 (prolog):XML 선언 Document Type Declarations

루트 엘러먼트


Dtd document type definition2

DTD (Document Type Definition)작성법

  • 첫 번째로 할 일은 루트 엘리먼트를 구분하는 것이다.

  • <!DOCTYPE memo [

  • ]>

  • 단순히 루트 태그가 memo라는 사실을 알려 준다.

  • memo 엘리먼트가 무엇을 포함할지, 무엇을 포함하지

  • 않을 지지에 관해서는 말하지 않는다.


Dtd

요소 정의

  • 요소 정의 문법

    <!ELEMENT 요소명 내용>

    <!ELEMENT content (#PCDATA)>

  • 자식 목록

    <!ELEMENT memo (content)>

    <!ELEMENT content (#PCDATA)

    각 엘리먼트는 다른 <!ELEMENT> 선언에서 자식으로서 사용되더라도 그 자신의 <!ELEMENT>를 선언에 정확히 한 번은 선언되어야 한다.


Dtd

요소 정의

  • SEQUENCE

  • <!ELEMENT memo (header, body, body)>

  • 콤마로 분리된 자식 엘리먼트의 목록을 시퀀스라 부른다.

  • memo 엘리먼트 다음에 정확히 하나의 header 엘리먼트와

  • 두 개의 body 엘리먼트가 그 순서대로 나타나야 한다.

  • 하나 혹은 하나 이상의 자식 엘리먼트

  • (+) 기호를 추가해서 주어진 엘리먼트를 하나 이상 추가하기 원한다는 것을 나타낼 수 있다.

  • <!ELEMENT memo (header, body+)>

  • 자식 엘리먼트가 없거나 많이 가지고 있는 경우

  • <!ELEMENT memo (header, body*)>

  • 자식 엘리먼트가 없거나 하나일 경우

  • <!ELEMENT memo (header, body?)>


Dtd

요소 정의

  • 선택(CHOICE) : |

  • 여러 자식 엘리먼트 중 하나의 엘리먼트를 선택할 때 사용

  • <!ELEMENT PAYMENT (CASH | CRED_CARD | CHECK)>

  • 괄호가 있는 자식 엘리먼트

  • 그룹핑할 때 사용

  • <!ELEMENT DOCUMENT (TITLE, SIGNATURE?)>

  • <!ELEMENT BODY (PARAGRAPH | IMAGE)*>

  • 혼합된 키워드(MIXED CONTENT)

  • <!ELEMENT TEAM (#PCDATA | CITY | NAME | PLAYER)*>

  • 콤마, 물음표,프러스 기호 사용 불가

  • EMPTY 키워드

    <!ELEMENT student EMPTY>

    • <student> </student> or <student />


Dtd

요소 정의

  • <!ELEMENT memo (header, body) >

  • ANY 키워드

    <!ELEMENT memoANY>

    <?xml version=“1.0”?>

    <!DOCTYPE memo [

    <!ELEMENT memo ANY>

    <!ELEMENT content (#PCDATA)>

    ]>

    <memo>

    <content>좋은 내용</content>

    좋은 내용입니다. 좋은 일이 있으시기를…

    </memo>


Dtd

요소 생성에 사용되는 기호

  • | : OR 조건

  • , : 명시된 순서대로 나타남

  • ? : 0번 또는 한번 나타남

  • * : 0번 또는 한번 이상 나타남

  • + : 한번 이상 나타남

  • () : 그룹 요소


Dtd

XML의 데이터 타입

  • #PCDATA

    • parsed character data

    • <, >, & 기호가 없는 데이터

    • 일반적인 마크업 문자 데이터

    • 모든 단말 노드는 #PCDATA로 정의

  • CDATA

    • character data

    • <, >, & 기호가 있는 데이터

    • 속성의 내용을 CDATA로 정의


Pcdata

#PCDATA의 문제점

  • XML에서는 모든 정보를 #PCDATA로 정의

  • 특수한 데이터 타입으로 지정할 수 없음

    • 스트링, 정수, 통화 등으로 지정 불가능

    • 데이터베이스와 연동시 올바른 데이터인지 검사하는 것을 파서 대신 응용 프로그램에서 담당

    • 응용 프로그래머에게 과도한 부담을 줌

  • 보다 강력한 데이터 타입을 지원하도록 하자는 제안이 나오고 있음

    • 예 : XML Schema를 사용하여 다양한 데이터 타입 지원


Cdata xml

CDATA가 포함된 XML 문서

  • <![CDATA 로 시작하고 ]]> 로 끝나야 함

  • CDATA 문자 데이터 중에 ]]> 이 포함되어 있으면 선언된 것과 다른 결과가 발생할 수 있음

  • 주석이 작동되지 않음

<?xml version="1.0" encoding="EUC-KR"?>

<doc>

<![CDATA[#@^% <<<>>> & <<<<<<< >>>>>>>]]>

</doc>

<![CDATA[

<?xml version="1.0" encoding="EUC-KR"?>

<GREETING>

Hello XML!

</GREETING>

]]>


Dtd

DTD 공유하기

  • <!DOCTYPE 루트엘리먼트이름 SYSTEM “DTD_URL”>

  • <!DOCTYPE memo SYSTEM “memo.dtd”>

  • 원격 URL에 있는 DTD

  • <!DOCTYPE memo SYSTEM “http://edu.joongang.co.kr/dtd/memo.dtd”>

  • 현재 디렉토리에 대한 상대 URL 사용 가능

  • <!DOCTYPE memo SYSTEM “/xml/dtd/memo.dtd”>

  • <!DOCTYPE memo SYSTEM “../memo.dtd”>


Dtd

DTD 공유하기

  • 공개 DTD

  • SYSTME 키워드는 한명의 저작 그룹에 의해 사용되는 개인적인 DTD를 위한 것이다.

  • 개발 조직 등에서 사용하기 위해 설계된 DTD는 PUBLIC 키워드를 사용한다.

  • <!DOCTYPE 루트엘리먼트이름 PUBLIC “DTD이름”“DTD_URL”>

  • PUBLIC은 그 DTD가 널리 사용될 것을 의도하고 만들어졌다는 것을 나타내는 키워드이다.

  • DTD이름은 이 DTD와 연결된 이름이다.

  • DTD_URL은 유명한 리파지터리에서 이름을 가지고 DTD를 찾을 수 없을 경우에 DTD를 찾기 위해서 사용되는 절대 URL이나 상대 URL이다.


Dtd

DTD 공유하기

  • DTD 이름

  • ISO : ISO 표준

  • + : ISO가 아닌 표준기구

  • - : 어떤 표준기구에서도 승인하지 않았다.

  • DTD의 소유자 이름

  • DTD가 기술하는 문서의 종류

  • 언어속성

  • <!DOCTYPE memo PUBLIC

  • “-//joongang//DTD personal memo//EN”

  • “http://edu.joongang.ac.kr/dtds/memo.dtd”>

  • <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML//EN”>


Dtd dtd

내부DTD 서브셋과 외부 DTD 서브셋

  • 특정한 문서가 그 사이트의 다른 페이지와 다른 구조를 가지고 있다면, 그 구조를 독립된 DTD에 정의하는 것보다는 그 문서 자체에 정의하는 것이 더 유용하다.

  • <?xml version=“1.0”>

  • <!DOCTYPE document SYSTEM “memo.dtd” [

  • <!ELEMENT document (title,memo,signature)>

  • <!ELEMENT title (#PCDATA)>

  • <!ELEMENT signature (#PCDATA)>

  • ]>


Xml entity

XML의 Entity(개체)

  • XML 문서의 특정한 부분을 담고 있는 저장 단위이다.


Xml entity1

XML의 Entity(개체)

  • Entity(개체) 구분

    • 내부 엔터티(Internal Entity)

    • 외부 엔터티(External Entity)

    • 일반 엔터티(General Entity)

    • 파라미터 엔터티(Parameter Entity)

    • 파싱된 엔터티(Parsed Entity)

    • 파싱되지 않은 엔터티(Unparsed Entity)


Xml entity2

XML의 Entity(개체)

  • Entity(개체) 구분

    • 내부 일반 엔터티

      • #PCDATA로 표현하지 못하는 특수 기호 입력

      • 같은 문자 데이터를 중복해서 입력하는 수고를 덜어 줌

      • (입력하기 힘든 텍스트나 널리 사용되는 텍스트의 생략형)


Entity

내부 일반 Entity(개체) 정의

  • 내부 일반 Entity(개체) 정의 문법

    <!ENTITY 개체명 개체정의>

    개체정의는 대체될 문자열이다.

  • 일반 엔터티(개체) 사용법

    &개체명;

  • <!ENTITY SchoolDept “중앙일보 webmaster”>

    <!ENTITY hearts "&#x2661;">


Dtd

미리 정의된 일반 엔터티 레퍼런스 선언

  • <!ENTITY lt "&#38;#60;">

  • <!ENTITY gt "&#62;">

  • <!ENTITY amp "&#38;#38;">

  • <!ENTITY apos "&#39;">

  • <!ENTITY quot "&#34;">


Entity1

내부 일반 Entity(개체) 사용 예

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

<!DOCTYPE memo [

<!ENTITY SD "중앙일보 WEBMASTER">

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

]>

<memo>

<body>

<p> &SD;에서 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터 시

작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 &SD;로 알려 주시기 바랍니다. </p>

<p> 회의 장소는 &SD; 회의실입니다. </p>

</body>

</memo>


Dtd

특수문자 사용 예

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE memo [

<!ENTITY hearts "&#x2661;" >

<!ENTITY spades "&#x2660;" >

<!ELEMENT memo (body) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

]>

<memo>

<body>

<p> &hearts; 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터 시

작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> &spades; 회의 참석 여부를 오늘 중으로 알려 주시기 바랍니다. </p>

</body>

</memo>


Entity2

내부 일반 Entity(개체) 요약

  • 모든 엔터티 레퍼런스가 그 값으로 대체된 후에 문서에 대한 검증이 이루어진다.

  • 텍스트 변경이 용이한 장점이 있다.

  • 문서들이 하나의 DTD를 공유할 때 유용하다.


Xml entity3

XML의 Entity(개체)

  • Entity(개체) 구분

    • 외부 일반 엔터티

      • 메인 파일의 밖에 있는 데이타이다.

      • 여러 독립된 파일로부터 XML 문서를 구축하게 해준다.


Entity3

외부 일반 Entity(개체) 정의

  • 외부 일반 Entity(개체) 정의 문법

    <!ENTITY 개체명 SYSTEM “URI”>

  • 일반 엔터티(개체) 사용법

    &개체명;


Entity4

외부 일반 Entity(개체) 사용 예

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE memo [

<!ENTITY SD "중앙일보 WEBMASTER">

<!ELEMENT memo (body,signature) >

<!ELEMENT body (p+) >

<!ELEMENT p (#PCDATA) >

<!ELEMENT signature (position,name,organization)>

<!ELEMENT position (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT organization (#PCDATA)>

<!ENTITY sig SYSTEM “signature.xml”>

]>

<memo>

<body>

<p> &SD;에서 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터 시

작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 &SD;로 알려 주시기 바랍니다. </p>

<p> 회의 장소는 &SD; 회의실입니다. </p>

</body>

&sig;

</memo>


Entity5

외부 일반 Entity(개체) 사용 예

signature.xml

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

<signature>

<position>Chief </position>

<name>Na</name>

<organization> Joongang Academy</organization>

</signature>


Xml entity4

XML의 Entity(개체)

  • Entity(개체) 구분

    • 내부 파라미터 엔터티

      • 일반 엔터티는 DTD의 일부가 아니라 문서의 일부분이었다.

      • 파라미터 엔터티 레퍼런스는 DTD에서만 나타난다.

      • 파라미터 엔터티 레퍼런스는 퍼센트 기호(%)로 시작한다.

      • 파라미터 엔터티 레퍼런스는 자식 엘리먼트나 속성을 공유할 때 상당히 유용하다.

      • 파라미터 엔터티 레퍼런스는 사용되기 전에 선언되어야만 한다.

      • 파라미터 엔터티 레퍼런스는 외부 DTD 안에서만 나타나야 한다.

      • 내부 DTD 에서는 선언의 밖에서만 사용될 수 있다.


Entity6

파라미터 Entity(개체) 정의

  • 파라미터 Entity(개체) 정의 문법

    <!ENTITY % 개체명 개체정의>

    개체정의는 대체될 문자열이다.

  • 파라미터 엔터티(개체) 사용법

    %개체명;


Entity7

파라미터 Entity(개체) 정의

  • <!ENTITY king “The Great King Alexzander!”>

  • <!ENTITY word “Our king is &king;”>

  • <!ENTITY % PCD “(#PCDATA)”>

  • <!ELEMENT name %PCD;>

  • <!ELEMENT position %PCD;>


Entity8

파라미터 Entity(개체) 정의

  • <!ELEMENT paragraph

  • (person | degree |product | animal | ingredient)*>

  • <!ELEMENT cell

  • (person | degree |product | animal | ingredient)*>

  • <!ELEMENT heading

  • (person | degree |product | animal | ingredient)*>

  • <!ENTITY % inlines “(person | degree |product | animal | ingredient)*”>

  • <!ELEMENT paragraph %inlines;>

  • <!ELEMENT cell %inlines;>

  • <!ELEMENT heading %inlines;>


Entity9

파라미터 Entity(개체) 정의

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

<!DOCTYPE memo [

<!ENTITY % pcd “(#PCDATA)”>

<!ELEMENT memo (header, body) >

<!ELEMENT header (to, from, date) >

<!ELEMENT to (heading, name) >

<!ELEMENT from (heading, name) >

<!ELEMENT heading %pcd; >

<!ELEMENT name %pcd; >

<!ELEMENT date %pcd; >

<!ELEMENT p %pcd; >

<!ELEMENT body (p*) >

]>


Entity10

파라미터 Entity(개체) 정의

<memo>

<header>

<to>

<heading> To: </heading>

<name> 홍길동 </name>

</to>

<from>

<heading> From: </heading>

<name> 장길산 </name>

</from>

<date> 2000. 8. 15. </date>

</header>

<body>

<p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터

시작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

</memo>


Entity11

파라미터 Entity(개체) 정의

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

<!DOCTYPE memo [

<!ENTITY % memo “<!ELEMENT memo (header, body) >”>

<!ENTITY % header “<!ELEMENT header (to, from, date) >”>

<!ENTITY % to “<!ELEMENT to (heading, name) >”>

<!ENTITY % from “<!ELEMENT from (heading, name) >”>

<!ENTITY % heading “<!ELEMENT heading (#PCDATA) >”>

<!ENTITY % name “<!ELEMENT name (#PCDATA) >”>

<!ENTITY % date “<!ELEMENT date (#PCDATA) >”>

<!ENTITY % p “<!ELEMENT p (#PCDATA) >”>

<!ENTITY % body “<!ELEMENT body (p*) >”>

%memo;

%header;

%to;

%from;

%heading;

%name;

%date;

%p;

%body;

]>


Dtd

속성이 포함된 DTD

<!ELEMENT memo (header, body) >

<!ELEMENT header (to, from, date) >

<!ELEMENT to (heading, name) >

<!ATTLIST to

age CDATA #IMPLIED

sex (male | female) "male" >

<!ELEMENT from (heading, name) >

<!ATTLIST from

age CDATA #IMPLIED

sex (male | female) "male" >

<!ELEMENT heading (#PCDATA) >

<!ELEMENT name (#PCDATA) >

<!ELEMENT date (#PCDATA) >

<!ELEMENT p (#PCDATA) >

<!ELEMENT body (p*) >


Dtd

속성이 포함된 XML 문서

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE memo SYSTEM “memo2.dtd">

<memo>

<header>

<to sex="female">

<heading>To:</heading>

<name>홍길동</name>

</to>

<from age="35">

<heading>From:</heading>

<name>장길산</name>

</from>

<date> 2000.12. 25. </date>

</header>

<body>

<p> 컴퓨터 시스템 구축을 위한 회의가 내일 오후 2시부터

시작될 예정으로 있으니 꼭 참석하여 주시기 바랍니다. </p>

<p> 회의 참석 여부를 오늘 중으로 제게 알려 주시기 바랍니다. </p>

</body>

</memo>


Entity dtd

파라미터 Entity를 사용한 DTD

<!ENTITY % age_sex 'age CDATA #IMPLIED

sex (male | female) "male"' >

<!ELEMENT memo (header, body) >

<!ELEMENT header (to, from, date) >

<!ELEMENT to (heading, name) >

<!ATTLIST to %age_sex; >

<!ELEMENT from (heading, name) >

<!ATTLIST from %age_sex; >

<!ELEMENT heading (#PCDATA) >

<!ELEMENT name (#PCDATA) >

<!ELEMENT date (#PCDATA) >

<!ELEMENT p (#PCDATA) >

<!ELEMENT body (p*) >


Xml entity5

XML의 Entity(개체)

  • Entity(개체) 구분

    • 외부 파라미터 엔터티

      • 작은 DTD에서 큰 DTD를 구축할 수 있다.

      • (하나의 외부 DTD가 다른 DTD에 연결이 되어서 처음에 선언된 엔터티와 엘리먼트를 사용한다.)

      • 재귀적 방법은 금지 되어 있다.

      • 큰 DTD를 작고 다루기 쉬운 크기로 나누면 DTD를 분석하기 쉽다.

      • 엘리먼트의 한 집합만 기술하는 더 작고 모듈화된 DTD를 사용하면

      • 여러 사람이나 조직에 의해 만들어진 DTD와 혼합하고 일치시키는 것이 훨씬 쉽다.


Entity12

외부 파라미터 Entity(개체) 정의

  • 외부 파라미터 Entity(개체) 정의 문법

    <!ENTITY % 개체명 SYSTEM “URI”>

  • 일반 엔터티(개체) 사용법

    %개체명;


Entity13

외부 파라미터 Entity(개체) 정의

  • <ENTITY % player SYSTEM “player.dtd”>

  • %player;

  • <!ENTITY % player SYSTEM

  • “http://www.LA.com/dtds/player.dtd”

  • %player;


Entity14

외부 파라미터 Entity(개체) 정의

  • 작은 DTD로 큰 DTD 만들기


Dtd

요소와 속성

  • 어떤 것을 요소로 정의하고 어떤 것을 속성으로 정의할 것이냐를 결정해야 함

  • 요소

    • 적절한 스타일시트를 사용하여 화면에 출력

    • 데이터를 저장하는 장소

  • 속성

    • 내부 처리용으로 사용

    • 요소에 대한 부가 정보를 처리기로 전달


Dtd

요소와 속성의 예

<student name=“홍길동”age=“22”></student>

<student>

<name> 홍길동 </name>

<age> 22 </age>

</student>

<student stud_id=“99001”>

<name> 홍길동 </name>

<age> 22 </age>

</student>


Dtd

속성 정의

  • 속성은 속성이름 / 값의 쌍을 갖는다.

  • 속성은 사람이 읽거나 쓰는 컨텐트를 위한 것이 아니다.

  • 프로그램에 사용되는 엘리먼트와 관련된 추가의 정보를 위한 것이다.


Dtd

DTD에서 속성 정의

  • 속성 정의 문법

    <!ATTLIST요소명 속성명 타입 기본값 >

  • <!ELEMENT greeting (#PCDATA)>

  • <!ATTLIST greeting language CDATA “English”>

  • <greeting language=“Korean”>

  • 안녕하세요?

  • </greeting>

  • 같은 속성이 여러 번 사용되면 가장 먼저 나온 것만 사용된다.

  • 속성은 그 엘리먼트에만 적용된다.

  • 속성이 선언된 순서는 중요하지 않다.


Dtd

DTD에서 속성 정의

  • 여러 속성 선언하기

    <RECTANGLE LENGTH=“70px” WIDTH=“85px” />

  • <!ELEMENT RECTANGLE EMPTY>

  • <!ATTLIST RECTANGLE LENGTH CDATA “0px”>

  • <!ATTLIST RECTANGLE WIDTH CDATA “0px”>

  • <!ATTLIST RECTANGLE LENGTH CDATA “0px”

  • WIDTH CDATA “0px”>


Dtd

DTD에서 속성 정의

  • 속성의 기본값 지정

  • #REQUIRED : 요소에서 속성이 사용될 때 반드시 값이 지

  • 정 되어야 함

  • #IMPLIED : 속성에 값이 지정되어 있지 않으면 파서는 그

  • 속성을 무시함

  • #FIXED value : 속성에 대한 값을 지정하는 요소에서 반드시

  • value를 지정해야 함

  • defaultvalue : 속성을 위한 기본값을 제공함


Dtd

속성 타입


Dtd

속성 타입


Dtd

속성 타입


Dtd

속성 타입


Dtd

속성 타입


Xml entity6

XML의 Entity(개체)

  • Entity(개체) 구분

    • 파싱되지 않은 외부 엔터티

      • XML이 아닌 데이터의 블록을 말한다.

      • XML 프로세서가 그 데이터를 이해하려고 시도하지않는다.

      • 애플리케이션에게 그 엔터티의 존재를 알리고, 엔터트의 이름과

      • 그 컨텐트를 알려준다.

      • <!ENTITY LOGO SYSTEM “logo.gif” NDATA GIF>

      • <!NOTATION GIF SYSTEM “image/gif”>


Xml entity7

XML의 Entity(개체)

  • <?xml version="1.0" standalone="no"?>

  • <!DOCTYPE DOCUMENT [

  • <!ELEMENT DOCUMENT ANY>

  • <!ENTITY LOGO SYSTEM "http://www.picture.com/xml/logo.gif"

  • NDATA GIF>

  • <!NOTATION GIF SYSTEM "image/gif">

  • ]>

  • <DOCUMENT>

  • &LOGO;

  • </DOCUMENT>


Xml entity8

XML의 Entity(개체)

  • <?xml version="1.0" standalone="no"?>

  • <!DOCTYPE DOCUMENT [

  • <!ELEMENT DOCUMENT ANY>

  • <!NOTATION GIF SYSTEM "image/gif">

  • <!ENTITY LOGO SYSTEM "logo.gif" NDATA GIF>

  • <!ELEMENT IMAGE EMPTY>

  • <!ATTLIST IMAGE SOURCE ENTITY #REQUIRED>

  • ]>

  • <DOCUMENT>

  • <IMAGE SOURCE="LOGO" />

  • </DOCUMENT>


Dtd

속성에 대한 DTD 작성

<book_catalog>

<book id="001">

<title> XML </title>

<author_group>

<author number="1"> 임꺽정 </author>

<author number="2"> 홍길동 </author>

</author_group>

<publisher> 중앙일보 </publisher>

<cover type="paperback" />

<category class=“eng" />

<isbn> 89-7283-126-3 </isbn>

<rating number="5" />

<comments> XML 초보자를 위한 XML 입문서 </comments>

</book>

</book_catalog>


Dtd

속성의 나열 값

  • cover type : hardback, paperback

    • default: paperback

  • category class : fiction, fantasy, engineering

    • default: fiction

  • rating number : 1, 2, 3, 4, 5

    • default: 3


Dtd

복잡한 표현이 가능한 DTD의 예

  • <x> <a /> <b /> <c /> </x>

  • <x> <b /> <c /> <e /> </x>

  • <x> <a /> <c /> <e /> </x>

  • <x> <a /> <b /> <e /> <a /> <d /> <e /> </x>

  • <x> </x>

<!ELEMENT x (a, (b | c | d), e)*>

<!ELEMENT a EMPTY>

<!ELEMENT b EMPTY>

<!ELEMENT c EMPTY>

<!ELEMENT d EMPTY>

<!ELEMENT e EMPTY>


Flights dtd

flights DTD

<!ELEMENT flights (schedule)+ >

<!ELEMENT schedule (outbound-depart-from, outbound-depart-time, outbound-arrive-in, outbound-arrive-time, outbound-airline,

returning-depart-from, returning-depart-time, returning-arrive-in,

returning-arrive-time, returning-airline) >

<!ELEMENT outbound-depart-from (#PCDATA)>

<!ELEMENT outbound-depart-time (#PCDATA)>

<!ELEMENT outbound-arrive-in (#PCDATA)>

<!ELEMENT outbound-arrive-time (#PCDATA)>

<!ELEMENT outbound-airline (#PCDATA)>

<!ELEMENT returning-depart-from (#PCDATA)>

<!ELEMENT returning-depart-time (#PCDATA)>

<!ELEMENT returning-arrive-in (#PCDATA)>

<!ELEMENT returning-arrive-time (#PCDATA)>

<!ELEMENT returning-airline (#PCDATA)>


Dtd

DTD 개선

  • 항공편 정의

    • 항공사명은 #PCDATA, 항공편 번호는 속성으로 정의

    • 항공사명과 항공편 번호를 모두 속성으로 정의

    • 항공사명과 항공편 번호를 자식으로 정의

  • 날짜와 시간

    • 년, 월, 일, 시, 분을 각각 나누어 속성으로 정의


Dtd

속성 추가

<outbound-airline flightNum="001" carrierName="KAL" />

<returning-airline flightNum="002" carrierName="KAL" />

<outbound-arrive-time year="1999" month="1" day="10" hour="7" minute="30" />


Dtd

매개변수 개체 사용

<!ENTITY % flight-info

'flightNum CDATA #REQUIRED

carrierName (KAL | Asiana | JAL | Delta | Northwest | TWA | United) "KAL"'>

<!ENTITY % date-time-info

"year CDATA #REQUIRED

month CDATA #REQUIRED

day CDATA #REQUIRED

hour CDATA #REQUIRED

minute CDATA #REQUIRED">


Dtd

XML 문서

<?xml version="1.0" encoding="EUC-KR"?>

<!DOCTYPE flights SYSTEM "flights.dtd">

<flights>

<schedule>

<outbound-depart-from> 서울 </outbound-depart-from>

<outbound-depart-time year="1999" month="1" day="10" hour="6" minute="30" />

<outbound-arrive-in> 부산 </outbound-arrive-in>

<outbound-arrive-time year="1999" month="1" day="10" hour="7" minute="30" />

<outbound-airline flightNum="001" />

<returning-depart-from> 부산 </returning-depart-from>

<returning-depart-time year="1999" month="1" day="15" hour="11" minute="50" />

<returning-arrive-in> 서울 </returning-arrive-in>

<returning-arrive-time year="1999" month="1" day="15" hour="12" minute="50" />

<returning-airline flightNum="002" />

</schedule>

</flights>


  • Login