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

Slides:



Advertisements
Similar presentations
Parser 의 이해와 Parsing 손계선 강미정 서정은 5 월 25 일 발표자 : 손계선.
Advertisements

XML with JAVA. chapter 07 : chapter 07 : XML 스키마 Ⅰ XML 스키마 Ⅰ.
Chapter 8. TEXT CLUSTERING 서울시립대 전자전기컴퓨터공학과 데이터마이닝 연구실 G 노준호.
XHTML Basic 제 13 장 1. XHTML Basic의 개요 2. XHTML Basic 기본 문법 3. 표 만들기
Chapter06 폼 HTML5 Programming.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
박용수 XML 박용수
XML 순천향대학교 정보기술공학부 이상정.
Web Service / SOAP 배재대학교 컴퓨터공학과 멀티미디어정보공학연구실 이 상 조
XML 스키마 ㅎㅎ XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용.
XSD (XML Schema Definition)
XML 응용 프로그래밍 3장 XML 문서 제작 기본
Power Java 제3장 이클립스 사용하기.
XML Parser 순천향대학교 정보기술공학부 이상정.
Entity Relationship Diagram
XML Views in SQL Server 2000 컴퓨터 언어연구실 석사 3학기 강 소 희.
Excel 일차 강사 : 박영민.
XML 응용 프로그래밍 5장 DTD 순천향대학교 컴퓨터공학과 하 상 호.
SAS Foundation Client 9.4 설치 가이드
연결리스트(linked list).
제 9 장 구조체와 공용체.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
Overview : XML과 Database
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
목차 백업과 복원.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
HTML5 입문 인공지능 연구실.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
화면(UI) 기반 도메인모델 작성 2014년 8월.
XML 개념.
XML과 데이터베이스 ㅎㅎ XML과 데이터베이스 XML과 데이터베이스 매핑 관계.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
X M L 컴퓨터공학과 윤 홍 국.
[ 고급소프트웨어공학 ] XML parser: DOM G 김지희.
제 2 장 변수와 상수.
XML이 왜 필요한가 ? 1.문서 교환의 문제점 2.웹 기술의 발전과정 3.XML 이란 무엇인가? 4. XML과 SGML
(Extensible Markup Language)
공학컴퓨터프로그래밍 Python 염익준 교수.
11장. 1차원 배열.
CHAP 12. 리소스와 보안.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
CXQuery를 사용하는 STREAM XML Filter
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
데이터 타입 이해 1. 컴플렉스 타입 2. 컴플렉스 타입의 확장 및 제한.
14장 XML 과 멀티미디어 14.1 XML 14.2 이름 공간 14.3 스타일 시트 14.4 링크 멀티미디어시스템
- RSS Reader 페이지 작성 컴퓨터공학실험( I )
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
MovieStory 작성자 홍성혁 소속 전자전기컴퓨터공학부 학번
XML-II (eXtensible Markup Language) DTD/DOM
XML Parser 순천향대학교 정보기술공학부 이상정.
Fucntion 요약.
자바 5.0 프로그래밍.
Web & Internet [01] 인터넷 기술의 개요
에어 PHP 입문.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
XML 문서 제작 기본 ㅎㅎ 정형식 문서와 유효한 XML 문서 XML 파서 XML 편집기.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
제 4 장 Record.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
ㅎㅎ DTD DTD 개념 DTD 문법 [실습] DTD 활용.
 6장. SQL 쿼리.
윈도우에서의 유니코드.
6 객체.
Presentation transcript:

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

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

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

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

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

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

Near & Far Designer로 본 화면

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> 1999. 4. 15. </date> </header> <body> <p> 교수회의가 내일 오후 2시부터 &UnivDept;에서 개최됩니다.</p> <p> 참석 여부를 &UnivDept;로 알려 주시기 바랍니다. </p> </body> </memo>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<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)* >

<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*) >

자료형(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

자료형(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

자료형의 예 <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)>

BizTags 스키마

BizTalk 문서

XML Schema Validator Free, downloadable software Apache의 Xerces http://xml.apache.org/xerces-j/ Oracle의 XML: Schema Processor http://technet.oracle.com/tech/xml/schema_java/index.htm Evaluation version of commercial product XML Authority http://www.extensibility.com/products/ XML Spy http://new.xmlspy.com/features_schema.html

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

personal-schema.xml <?xml version="1.0" encoding="UTF-8"?> <personnel xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personal.xsd"> <person id="Big.Boss" > <name><family>Boss</family> <given>Big</given></name> <email>chief@foo.com</email> <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> <email>one@foo.com</email> <link manager="Big.Boss"/> • • • </personnel>

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="email" minOccurs="0" maxOccurs="unbounded"/> <element ref="url" minOccurs="0" maxOccurs="unbounded"/> <element ref="link" minOccurs="0" maxOccurs="1"/>

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>

personal.xsd(3) <element name="family" type="string"/> <element name="given" type="string"/> <element name="email" type="string"/> <element name="url"> <complexType content="empty"> <attribute name="href" type="string" default="http://"/> </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>

personal.dtd <!ELEMENT personnel (person)+> <!ELEMENT person (name,email*,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 email (#PCDATA)> <!ELEMENT url EMPTY> <!ATTLIST url href CDATA "http://"> <!ELEMENT link EMPTY> <!ATTLIST link manager IDREF #IMPLIED> <!ATTLIST link subordinates IDREFS #IMPLIED> <!NOTATION gif PUBLIC "-//APP/Photoshop/4.0" "photoshop.exe">

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