Presentation is loading. Please wait.

Presentation is loading. Please wait.

XML 스키마 (XML Schema) 인천대학교 컴퓨터공학과 채 진 석

Similar presentations


Presentation on theme: "XML 스키마 (XML Schema) 인천대학교 컴퓨터공학과 채 진 석"— Presentation transcript:

1 XML 스키마 (XML Schema) 인천대학교 컴퓨터공학과 채 진 석 jschae@lion.inchon.ac.kr

2 XML 문서의 종류 Well-formed Document Valid Document ‘문법에 맞는 문서’로 번역
‘유효한 문서’로 번역

3 Well-formed Document XML 문서에 쓰인 요소들이 모두 시작 태그와 끝 태그를 가지고 있고, 중첩 규칙을 위반하지 않는 문서 DTD가 없는 XML 문서를 비검증용 파서 (non-validating parser) 로 파싱했을 때 오류가 없는 문서 XML 문서를 Internet Explorer 5로 읽었을 때 오류가 없는 문서

4 Valid Document 유효성 검증(validating)
XML 문서가 DTD의 정의대로 올바로 작성되었는지 검사 DTD가 있는 XML 문서를 검증용 파서를 사용하여 파싱했을 때 오류가 없는 문서

5 XML DTD Document Type Definition ‘문서 형 정의’라고 번역
EBNF(Extended Backus Naur Form)로 표현

6 XML DTD의 예 <!ENTITY UnivDept "인천대학교 컴퓨터공학과">
<!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 body (p+) > <!ELEMENT p (#PCDATA) >

7 Near & Far Designer로 본 화면

8 Valid Document의 예 <?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE memo SYSTEM “memo.dtd"> <memo> <header> <to sex="female"> <heading>To:</heading> <name>홍길동</name> </to> <from age="35"> <heading>From:</heading> <name>장길산</name> </from> <date> </date> </header> <body> <p> 교수회의가 내일 오후 2시부터 &UnivDept;에서 개최됩니다.</p> <p> 참석 여부를 &UnivDept;로 알려 주시기 바랍니다. </p> </body> </memo>

9 DTD가 필요한 경우 모든 사용자가 같은 문서 구조로 문서를 작성하기 원할 때 DTD가 필요한 경우의 예 학회지에 실리는 논문
관공서에서 사용하는 공문 EDI(Electronic Data Interchange) 문서

10 SGML과의 차이점 모든 SGML 문서에는 DTD가 있어야 하지만 XML 문서는 DTD가 없는 문서를 허용(Well-formed Document) XML 문서는 SGML 문서와는 달리 시작 태그와 끝 태그를 생략할 수 없음 모든 XML 문서가 Unicode 사용

11 XML DTD의 문제점 DTD 구문은 XML이 아닌 EBNF를 사용하고 있어서 작성하거나 이해하기 어려움
DTD는 확장 가능하지 않으며 이름공간(namespaces)을 지원하지 않음 DTD는 자료형(datatypes)을 지원하지 않음 DTD는 계승(inheritance)을 지원하지 않음

12 XML의 자료형 #PCDATA CDATA parsed character data <, >, & 기호가 없는 데이터
일반적인 마크업 문자 데이터 모든 단말 노드는 #PCDATA로 정의 CDATA character data <, >, & 기호가 있는 데이터 일반적으로 속성의 내용을 CDATA로 정의

13 #PCDATA의 문제점 XML에서는 모든 정보를 #PCDATA로 정의 특수한 데이터 타입으로 지정할 수 없음
문자열, 날짜, 정수 등의 자료형으로 지정 불가능 데이터베이스와 연동시 올바른 자료형인지 검사하는 것을 파서 대신 응용 프로그램에서 담당 응용 프로그래머에게 과도한 부담을 줌 보다 강력한 자료형을 지원하도록 하자는 제안이 나오고 있음 XML 스키마를 사용하여 다양한 자료형 지원

14 XML 스키마 DTD에서 지원되지 않았던 이름공간, 자료형, 계승을 지원하기 위해 DTD의 내용을 XML 문서로 표현
현재 W3C(World Wide Web Consortium)에서 세 부분으로 나누어 표준화 작업 중 XML Schema Part 0: Primer XML Schema Part 1: Structures XML Schema Part 2: Datatypes

15 XML-DR XML Data-Reduced
아직 W3C의 XML 스키마가 표준화되지 않았으므로 마이크로소프트에서는 MSXML 파서에서 구현된 XML Data의 부분집합인 XML-DR을 사용하고 있음 현재 마이크로소프트의 XML 기반 전자상거래 문서 표현 규격인 BizTalk 작성시 BizTags라는 XML-DR 형태의 XML 스키마를 사용하고 있음

16 XML 스키마와 XML-DR 용어 사용에서 약간의 차이가 있음
XML Schema Construct XML-DR Construct schema Schema element ElementType elementRef element attribute AttributeType none attribute datatype datatype none description ModelGroup, group group

17 <Schema> 요소 다음과 같은 사항을 정의 Schema 요소의 예
요소(element)와 속성(attribute) 선언을 포함 스카마의 이름 스키마에서 사용되는 이름공간 선언 Schema 요소의 예 <Schema name="biztalk_1.xml" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> … <!-- Declarations here --> </Schema>

18 <ElementType> 요소
속성 name content dt:type model order 의 미 요소의 이름 요소의 내용으로 포함되는 내용의 종류 • empty : 내용이 없을 때(no content) • textOnly : 문자열만 올 때(PCDATA only) • eltOnly : 하위요소만 올 때(subelements only) • mixed : 문자열과 하위요소가 섞여서 올 때 요소의 자료형을 지정. 이 속성은 XML 스키마에 있는 <datatype> 요소와 대응됨 개방(open) 또는 폐쇄(close) 내용 모델 자식 요소의 기본적인 순서 • one : 요소의 리스트로부터 선택된 하나 • seq : 요소의 지정된 순서 • many : 지정된 요소가 순서와 상관없이 나올 수도 있고 나오지 않을 수도 있음

19 <element> 요소 속 성 의 미 type 스키마에 정의된 <ElementType>요소의 name
속 성 type minOccurs maxOccurs 의 미 스키마에 정의된 <ElementType>요소의 name 속성의 값에 대응됨 해당 요소가 나타나는 최소값 • 0 : 최소값이 0이므로, 해당 요소가 나오지 않을 수도 있음 • 1 : 해당 요소가 반드시 1번 이상 나옴(기본값) 해당 요소가 나타나는 최대값 • 1 : 반드시 해당 요소가 1번만 나옴(기본값) • * : 제한 없이 나타남

20 <attribute> 요소 속 성 의 미 default 해당 속성을 위한 기본값. 참조하는
속 성 default type required 의 미 해당 속성을 위한 기본값. 참조하는 <AttributeType> 요소에서 제공된 모든 기본 값을 덮어 씀 이 스키마에서 정의된 <AttributeType> 요소의 name 속성의 값과 대응됨 속성을 지정하여야 하는지 여부를 나타냄. 반드시 지정되어야 할 경우, “yes”를 속성값으로 가짐. <AttributeType> 요소에서 정의된 경우는 정의할 필요 없음.

21 <group> 요소 속 성 의 미 maxOccurs 그룹이 나타나는 최대값
속 성 maxOccurs minOccurs order 의 미 그룹이 나타나는 최대값 • 1 : 반드시 해당 요소가 1번만 나옴(기본값) • * : 제한 없이 나타남 그룹이 나타나는 최소값 • 0 : 최소값이 0이므로, 해당 요소가 나오지 않을 수도 있음 • 1 : 해당 요소가 반드시 1번 이상 나옴(기본값) 그룹의 기본적인 순서 • one : 그룹의 리스트로부터 선택된 하나 • seq : 그룹의 지정된 순서 • many : 그룹의 지정된 요소가 순서와 상관 없이 나올 수도 있고 나오지 않을 수도 있음

22 <ElementType>의 예(1)
<ElementType name="Foo" content="eltOnly" order="one"> <group order="one"> <element type="X" /> <element type="Y" /> </group> <group order="seq"> <element type="A" /> <element type="B" minOccurs="0"/> <element type="C" /> </ElementType> 위의 문장을 DTD로 표현하면 <ELEMENT Foo ((X | Y) | (A, B?, C))>

23 <ElementType>의 예(2)
<ElementType name="biztalk_1" content="eltOnly" order="many" model="closed"> <element type="header" minOccurs="0" maxOccurs="1"/> <element type="body" minOccurs="1" maxOccurs="1"/> </ElementType> 위의 문장을 DTD로 표현하면 <ELEMENT biztalk_1 (header? | body)* >

24 <ElementType>의 예(3)
<ElementType name="manifest" content="eltOnly" order="seq" model="closed"> <element type="document" minOccurs="1" maxOccurs="*"/> <element type="attachment“ minOccurs="0" maxOccurs="*"/> </ElementType> 위의 문장을 DTD로 표현하면 <ELEMENT manifest (document+ | attachment*) >

25 자료형(1) 자료형 의 미 boolean 0(false) or 1(true) char Single character date
dateTime dateTime.tz float int 의 미 0(false) or 1(true) Single character ISO 8601 date without the time ISO 8601 date time dateTime, but with optional time zone added Real number with optional sign, fractional digits, and exponent Integral numeric type

26 자료형(2) 자료형 의 미 number general numeric type with no limit on digits;
time time.tz i1, i2, i4 r4, r8 ui1, ui2, ui4 uri 의 미 general numeric type with no limit on digits; may have optional sign, fractional digits, and exponent ISO 8601 format time group As for time, but with time zone added one, two, and four byte signed integer four and eight byte real number one, two, and four byte unsigned integer URI string

27 자료형의 예 <ElementType name="address" content="textOnly" dt:type="uri"/> <ElementType name="description" content="textOnly" dt:type="string"/> <ElementType name="index" content="textOnly" dt:type="int"/> <ElementType name="sent" content="textOnly" dt:type="dateTime.tz"/> 위의 문장을 DTD로 표현하면 <ELEMENT address (#PCDATA)> <ELEMENT description (#PCDATA)> <ELEMENT index (#PCDATA)> <ELEMENT sent (#PCDATA)>

28 BizTags 스키마

29 BizTalk 문서

30 XML Schema Validator Free, downloadable software
Apache의 Xerces Oracle의 XML: Schema Processor Evaluation version of commercial product XML Authority XML Spy

31 유효성 검증 시연 Apache의 Xerces를 사용한 XML 스키마의 유효성 검증(validation check) 시연
XML 문서 : personal-schema.xml XML 스키마 문서 : personal.xsd DTD 파일 : personal.dtd

32 personal-schema.xml <?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi=" xsi:noNamespaceSchemaLocation="personal.xsd"> <person id="Big.Boss" > <name><family>Boss</family> <given>Big</given></name> <link subordinates= "one.worker two.worker three.worker four.worker five.worker"/> </person> <person id="one.worker"> <name><family>Worker</family> <given>One</given></name> <link manager="Big.Boss"/> • • • </personnel>

33 personal.xsd(1) <?xml version="1.0" encoding="UTF-8"?>
<schema> <element name="personnel"> <complexType> <element ref="person" minOccurs="1" maxOccurs="unbounded"/> </complexType> </element> <element name="person"> <element ref="name"/> <element ref=" " minOccurs="0" maxOccurs="unbounded"/> <element ref="url" minOccurs="0" maxOccurs="unbounded"/> <element ref="link" minOccurs="0" maxOccurs="1"/>

34 personal.xsd(2) <attribute name="id" type="ID" use="required"/>
<attribute name="note" type="string"/> <attribute name="contr" type="NMTOKEN" use="default" value="false"> <simpleType base="string"> <enumeration value="true"/> <enumeration value="false"/> </simpleType> </attribute> <attribute name="salary" type="integer"/> </complexType> </element> <element name="name"> <complexType content="elementOnly"> <all> <element ref="family"/> <element ref="given"/> </all>

35 personal.xsd(3) <element name="family" type="string"/>
<element name="given" type="string"/> <element name=" " type="string"/> <element name="url"> <complexType content="empty"> <attribute name="href" type="string" default=" </complexType> </element> <element name="link"> <attribute name="manager" type="IDREF"/> <attribute name="subordinates" type="IDREFS"/> <notation name="gif" public="-//APP/Photoshop/4.0" system="photoshop.exe"/> </schema>

36 personal.dtd <!ELEMENT personnel (person)+>
<!ELEMENT person (name, *,url*,link?)> <!ATTLIST person id ID #REQUIRED> <!ATTLIST person note CDATA #IMPLIED> <!ATTLIST person contr (true|false) "false"> <!ATTLIST person salary CDATA #IMPLIED> <!ELEMENT name ((family,given)|(given,family))> <!ELEMENT family (#PCDATA)> <!ELEMENT given (#PCDATA)> <!ELEMENT (#PCDATA)> <!ELEMENT url EMPTY> <!ATTLIST url href CDATA " <!ELEMENT link EMPTY> <!ATTLIST link manager IDREF #IMPLIED> <!ATTLIST link subordinates IDREFS #IMPLIED> <!NOTATION gif PUBLIC "-//APP/Photoshop/4.0" "photoshop.exe">

37 요약 DTD의 문제점으로 지적되었던 이름공간, 자료형, 계승을 지원하기 위해, DTD의 내용을 XML 문서로 표현하는 XML 스키마가 제안됨 현재 마이크로소프트의 XML-DR이 사용되고 있으며, W3C의 XML 스키마는 표준화 작업 중에 있음 Apache의 XML 파서인 Xerces를 사용하면 XML 스키마를 사용하는 XML 문서의 유효성 검증이 가능함


Download ppt "XML 스키마 (XML Schema) 인천대학교 컴퓨터공학과 채 진 석"

Similar presentations


Ads by Google