xml 스키마 개요 xml 스키마 사용법 [실습] xml 스키마 활용

33
6 6 ㅎㅎ • XML 스스스 스스 • XML 스스스 스스스 • [ 스스 ] XML 스스스 스스 XML ㅎㅎㅎ

Upload: greg

Post on 06-Jan-2016

67 views

Category:

Documents


6 download

DESCRIPTION

ㅎㅎ. XML 스키마. XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용. 6 장 . XML 스키마. 학습목표 DTD 와 XML 스키마를 비교 XML 스키마의 기본 개념과 문법 이해 기본 타입과 사용자 타입 정의 방법 실습 XML 스키마를 활용하여 유효한 XML 문서 작성법 학습. XML 스키마 문서 구조를 정의하는 방법 DTD 문제점을 보완하기 위해 W3C 에서 개발 DTD 문제점 XML 문법이 아닌 EBNF 문법 형식을 따른다 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

66 장장 ㅎㅎ

• XML 스키마 개요• XML 스키마 사용법• [ 실습 ] XML 스키마 활용

XML 스키마XML 스키마

Page 2: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

2

학습목표 DTD 와 XML 스키마를 비교 XML 스키마의 기본 개념과 문법 이해 기본 타입과 사용자 타입 정의 방법 실습 XML 스키마를 활용하여 유효한 XML 문서 작성법 학습

6 장 . XML 스키마

Page 3: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

3

XML 스키마문서 구조를 정의하는 방법DTD 문제점을 보완하기 위해 W3C 에서 개발

DTD 문제점XML 문법이 아닌 EBNF 문법 형식을 따른다 .

작성 방법을 별도로 익혀야 하는 번거로움이 있다 .

DTD 는 재사용성과 확장성이 떨어진다 .

DTD 는 제한적인 데이터 타입만을 지원한다 .

문서 내용을 좀더 정확하게 표현하는 것이 어렵다 .

Section 01 XML 스키마 개요

Page 4: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

4

XML 스키마 목표문서 클래스에 대해 더욱 강력한 또는 느슨한 제한 허용

여러 개의 네임스페이스에 속한 마크업으로 구성된 문서도 유효성 검증 가능

요소 , 속성 및 데이터 타입 정의를 상속할 수 있는 방법을 제공

SQL 과 자바와 같은 언어에서 볼 수 있는 byte, date, integer 와 같은 기본 데이터 타입 지원

XML 을 관계형 , 객체 , OLAP 데이터베이스로 가져오거나 내보내는 것을 지원하는 형식 체계에 대한 정의할 수 있도록 지원

기존의 데이터 타입에 범위와 길이와 같은 특정 속성을 제한하여 유도한 사용자 정의 데이터 타입 (UDT: User Define dataType) 을 정의할 수 있도록 지원

Section 01 XML 스키마 개요

Page 5: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

5

XML 스키마 장점XML 스키마는 XML 문법과 동일 . 따로 익힐 필요가 없음다양한 기본 데이터 타입과 사용자 정의 데이터 타입 지원높은 확장성과 재사용성XML 네임스페이스 지원DTD 보다 더 복잡하게 섞인 내용 모델을 제한할 수 있음

Section 01 XML 스키마 개요

Page 6: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

6

DTD 와 XML 스키마 예제 비교

Section 01 XML 스키마 개요

<students> <student> <sno> s100</sno> <name> 고소영 </name> <age> 26 </age> <phone>02-123-8989</phone> <address> 서울 한남동 </address> </student></students>

student.xml<!ELEMENT students (student)*> <!ELEMENT student (sno,name,age,phone, address) > <!ELEMENT sno (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT phone (#PCDATA)> <!ELEMENT address (#PCDATA)>

student.dtd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="student"> <xsd:complexType> <xsd:sequence> <xsd:element name="sno" type="xsd:string"/> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="xsd:string"/> <xsd:element name="phone" type="xsd:string"/> <xsd:element name="address" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element></xsd:schema>

student.xsd

Page 7: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

7

DTD 를 XML 스키마로 변환

Section 01 XML 스키마 개요

DTD XML 스키마

<!ELEMENT> <element/>

<!ATTLIST> <attribute/>

, <sequence> ...</sequence>

| <choice> ... <choice>

+ minOccurs ="1" maxOccurs="unbounded"

? minOccurs ="0" maxOccurs="1"

* minOccurs ="0" maxOccurs="unbounded"

Page 8: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

8

Section 01 XML 스키마 개요

XML 문서에 XML 스키마를 적용 예제XML 스키마를 선언할 때도 XML 문서에 스키마 파일 지정네임스페이스를 사용하지 않는 스키마 파일은 “noNamespaceSchemaLocation” 속성을 이용해서 표현사용 예

작성된 XML 스키마를 XML 문서에 적용하여 유효성을 검증 = 유효성 검증 파서 프로그램 이용

<student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd">

Page 9: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

9

XML 스키마 데이터 타입

Section 02 XML 스키마 사용법

Page 10: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

10

미리 정의된 데이터 타입 - 기본 데이터 타입19 개의 내장 원시 데이터 타입문자열 , 부호화된 이진 , 숫자 , 날짜 / 시간 데이터 타입문자열 데이터 타입

부호화된 이진 데이터 타입

Section 02 XML 스키마 사용법

string 유효한 문자열

anyURI 표준 인터넷 URI 의 데이터 타입

NOTATION 외부의 비 XML 컨텐츠에 대한 링크를 선언

QName "Namespace in XML" 에 정의된 것에 적합한 QName 문자열

boolean true 나 false 상태를 가지는 상태 (flag) 값을 가짐

hexBinary 일련의 16 진수 숫자쌍으로 부호화된 이진 데이터 타입

base64Binary base64 로 부호화된 이진 데이터 타입

Page 11: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

11

Section 02 XML 스키마 사용법

미리 정의된 데이터 타입 - 기본 데이터 타입숫자 데이터타입

날짜 / 시간 데이터 타입duration 기간 표현

dateTime 날자와 시간 표현 , 날자는 그레고리력 사용

date 날자 표현 , yyyy-mm-dd 형태 표현

time 시간 표현

gYearMonth 그레고리력의 년과 월 표현 , yyyy-mm 형태로 표현

gYear 그레고리력의 년 표현

gMonthDay 그레고리력의 월과 일 표현

gMonth 그레고리력의 월 표현

gDay 그레고리력의 일 표현

decimal 십진수

float 4 바이트 실수

double 8 바이트 실수

Page 12: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

12

미리 정의된 데이터 타입 - 파생 데이터 타입25 개가 있음 . string 파생 + decimal 파생 데이터 타입String 파생한 데이터 타입

Section 02 XML 스키마 사용법

token

normalizedString 각각의 공백 문자들이 하나의 스페이스 문자로 대치되어 있는 문자열

모든 공백문자가 단 하나의 스페이스들로 변환되어 있는 문자열 , 앞뒤에 오는 스페이스가 모두 제거되며 연속되는 스페이스 단 하나의 스페이스 문자로 대치 .

Name 모든 적합한 XML1.0 이름

NCName “Namespace in XML" 에 정의되어 있는 지역화되지 않은 적합한 XML 1.0 이름 . 즉 , ”:“ 이 없는 XML1.0 이름을 말한다 .

language 자연 언어 식별 문자열

ID 연관된 요소를 식별하는 고유값

IDREF ID 속성 값을 통한 다른 요소에 대한 참조 .

IDREFS IDREF 값으로 구성된 목록

NMTOKEN 적합한 XML 이름 문자들로 구성되어 있는 문자열 , 하지만 XML 이름의 첫문자 제한은 적용되지 않는다 .

NMTOKENS NMTOKEN 값들로 구성된 목록

ENTITY 적합한 NCName 이 되는 문자열 . DTD 에 선언된 파싱되지 않는 개체

ENTITIES ENTITY 값들로 구성된 목록

Page 13: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

13

Section 02 XML 스키마 사용법

미리 정의된 데이터 타입 - 파생 데이터 타입decimal 에서 파생한 데이터 타입

integer 소수점이 허용되지 않는 정수

negativeInteger 음의 정수

positiveInteger 양의 정수

nonNagativeInteger 0 과 양의 정수

nonPositiveInteger 0 과 음의 정수

byte 1 바이트 정수

short 2 바이트 정수

int 4 바이트 정수

long 8 바이트 정수

unsignedByte 부호 없는 1 바이트 정수

unsignedShort 부호 없는 2 바이트 정수

unsignedInt 부호 없는 4 바이트 정수

unsignedLong 부호 없는 8 바이트 정수

Page 14: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

14

Section 02 XML 스키마 사용법

XML 스키마 선언XML 스키마의 네임스페이스 속성을 설정하고 사용하기 위해서 선언형식

XML 스키마 선언은 <xsd:schema> 요소로 시작최상위 요소는 항상 schema

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">① targetNamespace="http://www.dankook.ac.kr"② xmlns="http://www.mysite.com"③ elementFormDefault="qualified"④ attributeFormDefault="qualified">⑤......</xsd:schema>

Page 15: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

15

XML 스키마 선언 속성

Section 02 XML 스키마 사용법

속성 설명

①xmlns:xsd XML 스키마의 네임스페이스 지정

②targetNamespace 현재 스키마에서 선언된 요소의 네임스페이스 지정

③xmlns 기본 네임스페이스를 지정

④elementFormDefault

스키마를 사용하는 XML 문서에 대한 지시문속성값이 qualified 면 XML 문서에서 사용하는 모든 요소는 targetNamespace 에서 선언된 네임스페이스를 사용해야 하지만 , unqualified 일 경우는 targetNamespace 에서 선언된 네임스페이스를 사용하지 않아도 된다 .

⑤attributeFormDefault속성에 대한 지시문개념은 elementFormDefault 속성과 동일

Page 16: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

16

기본 네임스페이스로 XML 스키마 선언XML 스키마와 관련된 요소에는 ” xsd" 라는 접두사를 사용하지 않아도 된다 .

Section 02 XML 스키마 사용법

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.dankook.ac.kr" xmlns:std="http://www.mysite.com" elementFormDefault="qualified" attributeFormDefault="qualified">......</schema>

Page 17: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

17

요소 선언과 요소 타입 정의요소 정의

Section 02 XML 스키마 사용법

<element abstract = boolean : false block = (#all | List of (extension | restriction | substitution)) default = string final = (#all | List of (extension | restriction)) fixed = string form = (qualified | unqualified) id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 name = NCName nillable = boolean : false ref = QName substitutionGroup = QName type = QName {any attributes with non-schema namespace . . .}> Content: (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*))</element>

Page 18: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

18

XML 스키마 요소 정의 요약

Section 02 XML 스키마 사용법

<xsd:element [ 이름 ] [ 참조 ] [ 타입 ] [ 최소반복횟수 ] [ 최대반복횟수 ]>

속성 설명

이름name

선언하려는 요소 이름을 정의

참조reference

참조할 다른 요소 이름을 정의

타입type

요소 타입을 정의 ( 기본 데이터 타입 또는 사용자 정의 데이터 타입을 정의 )

최소반복횟수minOccurs

요소가 나타날 수 있는 최소 횟수를 정수로 정의생략하면 기본값이 1 로 지정

최대반복횟수maxOccurs

요소가 나타날 수 있는 최대 횟수를 정수로 정의생략하면 기본값이 1 로 지정

[ 표 6-9] 요소 선언 속성

Page 19: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

19

단순 데이터 타입<simpleType> 요소 사용해서 정의XML 스키마에서 정의한 다른 단순 데이터 타입을 이용해서 정의 가능내부에 다른 요소나 속성을 포함할 수는 없다 .

restriction, list, union 이용해서 확장 가능simpleType 요소 정의 형식

Section 02 XML 스키마 사용법

<simpleType final = (#all | (list | union | restriction)) id = ID name = NCName {any attributes with non-schema namespace . . .}> Content: (annotation?, (restriction | list | union))</simpleType>

Page 20: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

20

Section 02 XML 스키마 사용법

제한 요소 정의와 사용새로운 단순 데이터 타입은 기존의 단순 데이터 타입이 가질 수 있는 값의 범위를 제한해서 정의할 수 있다 .

restriction 요소 정의 형식

<restriction base = QName id = ID {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType?, (minExclusive | minInclusive | maxExclusive | maxInclusive | totalDigits | fractionDigits | length | minLength | maxLength | enumeration | whiteSpace | pattern)*))</restriction>

Page 21: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

21

목록 요소 정의와 사용단일 타입 값들의 연속으로 이루어진 것을 의미개발자는 원하는 경우에 목록 요소를 이용해서 새로운 목록 타입을 정의할 수 있다 .

목록 요소의 “ itemType" 속성은 목록에서 사용할 수 있는 데이터 타입을 기술한다 .

XML 스키마에서 목록 요소 정의 형식

Section 02 XML 스키마 사용법

<list id = ID itemType = QName {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType?))</list>

Page 22: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

22

Section 02 XML 스키마 사용법

결합 요소 정의와 사용주어진 여러 개의 단일타입이나 목록 타입 중에서 선택적으로 지정하여 결합해서 사용할 수 있는 방법<union> 요소를 이용해서 표현할 수 있으며 , 사용할 수 있는 데이터 타입들은 "memberType" 속성을 이용해서 표현할 수 있다 .

결합 타입을 정의하는 형식<union id = ID memberTypes = List of QName {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType*))</union>

Page 23: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

23

복합 데이터 타입요소를 정의하고 사용기 위해서 기본적으로 복합 데이터 타입(complexType) 을 정의해서 사용자식 요소나 속성을 필요로 하는 요소를 정의하기 위해서는 복합 데이터 타입으로 정의한다 .

형식

Section 02 XML 스키마 사용법

<complexType abstract = boolean : false block = (#all | List of (extension | restriction)) final = (#all | List of (extension | restriction)) id = ID mixed = boolean : false name = NCName {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))</complexType>

Page 24: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

24

순차 요소 정의와 사용DTD 의 컴마 (,) 연산자에 해당 자식 요소들이 순서대로 나타나야 하는 경우 사용

• <sequence> 요소 : 발생 횟수 표현 ,

"maxOccurs" 와 "minOccurs" 속성을 가지고 있다 .

만일 , 이 속성들을 정해주지 않을 경우에는 기본값 1 로 사용

형식

Section 02 XML 스키마 사용법

<sequence id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {any attributes with non-schema namespace . . .}> Content: (annotation?, (element | group | choice | sequence | any)*)</sequence>

Page 25: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

25

선택 요소 정의와 사용choice 은 여러 개의 자식 요소중에서 선택적으로 요소를 정의하는 것자식 요소의 발생 횟수를 지정하기 위해서 "maxOccurs" 와 "minOccurs" 속성을 가지고 있다 .

형식

Section 02 XML 스키마 사용법

<choice id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {any attributes with non-schema namespace . . .}> Content: (annotation?, (element | group | choice | sequence | any)*)</choice>

Page 26: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

26

Section 02 XML 스키마 사용법

그룹 요소 정의와 사용여러 요소를 하나로 묶어 사용하기 위해 사용형식

그룹 정의는 <group> 요소 내부에 정의스키마 요소의 직계 자식인 전역으로 정의되어야 함<group> 요소에는 이름을 줄 수 있기 때문에 스키마의 어느 곳에서나 참조할 수 있고 , 따라서 재사용 가능한 컨텐츠를 만드는데 그룹이 매우 유용하게 사용될 수 있다 .

속성인 all, choice, sequence 요소들은 <group> 요소 내부에 중첩된다 .

<groupname = NCName>Content: (annotation?, (all | choice | sequence))</group>

Page 27: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

27

전체 요소 정의와 사용all 요소는 DTD 에서는 정의할 수 없었던 형식 제공<all> 요소는 자식 요소들이 순서에 관계 없이 나타날 수 있는 것을 표현하기 위해서 사용된다 .

형식

Section 02 XML 스키마 사용법

<all id = ID maxOccurs = 1 : 1 minOccurs = (0 | 1) : 1{any attributes with non-schema namespace . . .}> Content: (annotation?, element*)</all>

Page 28: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

28

속성 선언속성은 어떤 자식 정보 항목도 포함할 수 없다 . 즉 , 복합 데이터 타입으로 정의할 수 없다 .

속성은 순서가 없다 .

형식

Section 02 XML 스키마 사용법

<attribute   default = string   fixed = string   form = (qualified | unqualified)   id = ID   name = NCName   ref = QName   type = QName use = (optional | prohibited | required) : optional {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType?)) </attribute>

Page 29: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

29

속성 그룹 정의속성 선언들을 그룹으로 묶어서 이름을 지정해 주는 것 여러 요소가 동일한 속성 집합을 지니고 있을 때 유용형식

속성 그룹은 반드시 <attributeGroup> 요소를 사용하여 전역으로 정의해야 함

Section 02 XML 스키마 사용법

<attributeGroup id = ID name = NCName ref = QName {any attributes with non-schema namespace . . .}> Content: (annotation?, ((attribute | attributeGroup)*, anyAttribute?))</attributeGroup>

Page 30: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

30

XML 스키마 주석<annotation> 요소의 자식 요소인 <documentation> 요소와 <appinfo> 요소를 이용해서 정의<documentation> 요소

• 자신뿐만 아니라 다른 사람이 문서의도와 목적을 이해하는데 도움이 되는 정보를 수록

<appinfo> 요소• 처리 애플리케이션에 대한 추가적인 정보 제공

Section 02 XML 스키마 사용법

Page 31: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

31

XML 스키마 주석 형식

Section 02 XML 스키마 사용법

<annotation id = ID{any attributes with non-schema namespace . . .}> Content: (appinfo | documentation)*</annotation>

<appinfo source = anyURI> Content: ({any})*</appinfo>

<documentation source = anyURI xml:lang = language> Content: ({any})*</documentation>

Page 32: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

32

교재 277 페이지 참조

Section 03 [ 실습 ] XML 스키마 활용

Page 33: XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용

Thank you