XSD (XML Schema Definition)

Slides:



Advertisements
Similar presentations
Beginning 자바 웹 서비스 웹 서비스 기술 강미란 Cyber-Infrastructure Research Lab Konkuk University.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
XML with JAVA. chapter 07 : chapter 07 : XML 스키마 Ⅰ XML 스키마 Ⅰ.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
한국산업기술대학교 온라인 기술교육 교재 개발 차세대 모바일 디지털 컨텐츠 15. WML 개발 - I 이번 시간에는... 지난 시간에는 WAP 의 WTA 프로토콜의 기능과 구성, 서비스 예에 대해서 학습하고, WAP 보안을 위한 WTLS 와 WAP 애플리케이션 레이어 보안,
XML 스키마 (XML Schema) 인천대학교 컴퓨터공학과 채 진 석
화일구조.
웹 멀티미디어 컨텐츠 검색 방법 신은정.
Vision System Lab, Sang-Hun Han
T A B L E 작성자 : 이 재 학.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
eXtensible Markup Language
박용수 XML 박용수
XML: Standard Meta-Markup Language
2011년 봄학기 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
Web Service / SOAP 배재대학교 컴퓨터공학과 멀티미디어정보공학연구실 이 상 조
XML 스키마 ㅎㅎ XML 스키마 개요 XML 스키마 사용법 [실습] XML 스키마 활용.
XML 응용 프로그래밍 3장 XML 문서 제작 기본
제 1장 C 언어의 소개.
Internet Computing KUT Youn-Hee Han
C#에서 데이터베이스 연동 방법.
10장. 웹 서비스 공격 (Attacking Web Service)
Chapter 05 SQL 인젝션 공격.
2 서블릿의 기초.
Overview : XML과 Database
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Information Technology
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
관계 데이터 모델과 제약조건 개념, 특성, 키, 무결성 제약조건.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
제 8장. 멀티미디어 데이터베이스 및 정보검색 시스템
HTML5 입문 인공지능 연구실.
1. 시멘틱웹(Semantic Web) Preview 항목 상세내역 개요 기출여부 관련KeyWord 추천사이트
화면(UI) 기반 도메인모델 작성 2014년 8월.
Data Modeling Database 활용을 위한 기초 이론 Database의 개요 Data Modeling
Ch2-2. VHDL Basic VHDL lexical element VHDL description
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소에 근무하던 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS.
XML DOM (Document Object Model)
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
Power Java 제7장 클래스와 객체.
XML XSLT.
3 장 Visual Basic 2010 기본 문법 3.1 변수 3.2 데이터 형식 3.3 연산자 3.4 제어문
X M L 컴퓨터공학과 윤 홍 국.
운영체제 (Operating Systems)
WSDL 전산게임학과 김헌철.
XML.NET XML 검색, 수정 프로그램 작성 2010 컴퓨터공학실험(Ⅰ)
ㅇ 스프링 설정파일 (dispatcher-servlet.xml)
The Semantic Web 학 번 발 표 자 이 한 국.
DataScience Lab. 박사과정 김희찬 (월)
제 8 장 객체지향 데이타베이스와 데이타베이스의 새로운 응용 분야
ER-Win 4.0 Database Modeling Ⅰ. Logical Design
Formatted Input/Output
데이터 타입 이해 1. 컴플렉스 타입 2. 컴플렉스 타입의 확장 및 제한.
Introduction to Programming Language
4장 - PHP의 표현식과 흐름 제어-.
Introduction to Semantic Web 시맨틱 웹의 개요
연구책임자용 충남대학교 생명윤리위원회 홈페이지 연구 책임자&담당자 매뉴얼 Date version 1.0.
XML-II (eXtensible Markup Language) DTD/DOM
Spring Security 2015 Web Service Computing.
화일구조.
Hello, Python! #3 <부제: 코딩은 혼자하는 것이다>
교육방법 및 평가방법 안내.
자바 5.0 프로그래밍.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
Chapter 17 BOOTP and DHCP.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
ㅎㅎ DTD DTD 개념 DTD 문법 [실습] DTD 활용.
C++ 언어의 특징
Presentation transcript:

XSD (XML Schema Definition) XML Schemas 기초 XML Schemas 데이터 형식 XML Schemas Complex Types XML Schemas simpleTypes

XML Schemas 기초 (1/11) XML Schemas 출현배경 DTD의 제한점 작성/이해하기가 어렵다.(XML문서와 다른 문법을 사용함) 확장성이 불가능 함. Data Type 정의에 제약이 많음. 상속(Inheritance)기능이 없다. XML 문법과 다름. XML에 대한 요구상황이 달라졌다. (문서에 대한 프로세싱 요구가 많아짐.) DTD보다 더 표현력이 풍부하고, 정확한 자료 구조를 제공하는 새로운 구조 정의 언어가 필요함.

XML Schemas 기초 (2/11) XML Schemas 종류 다양한 XML-based schema 언어가 출현함. 학술 단체: RDF(Resource Description Framework) B2B관련업체들: Commerceone 등: SOX(Schema for Object-oriented XML) MS 등 : XML Data, XDR(XML Data Reduced) IBM, MS 등: DCD(Document Content Description) DDML(Document Definition Markup Language: ‘ XSchema’) W3C: XML Schema 스키마들의 차이점. 스키마 작성 규칙이 다름. 예: 루트 엘리먼트 기술 규칙, Intrinsic data type 등

XML Schemas 기초 (3/11) XML Schemas XML 스키마는 하나의 XML 문서 안에 어떤 것들을 담을 수 있는지에 대한 규칙. XML 스키마의 장점. XML 구문을 사용 다양한 데이터 형을 지원 네임스페이스를 지원 복잡한 내용 모델을 쉽게 생성. DTD보다 유연한 XML 문서를 작성하는데 적용. Data Type 및 엘리먼트 재사용이 가능함.

XML Schemas 기초 (4/11) DTD XSD DTD와 XML Schemas의 비교 XML문법을 따르지 않고 독자적인 문법을 가짐.(SGML의 DTD형식) 다양한 종류의 데이터 타입을 지원하지 않음. XSD는 XML 문법을 따름. XSD는 풍부한 데이터형을 제공. XSD는 데이터의 제약 조건을 세밀하게 정의 함. http://www.w3.org/XML/Schema

XML Schemas 기초 (5/11) DTD와 XML Schemas의 비교 DTD XSD <!ELEMENT .. > <element ... > .. </element> <!ATTLIST .. > <attribute .. /> , <sequence> .. </sequence> | <choice> .. </choice> ? minOccurs="0" maxOccurs="1" + minOccurs="1" maxOccurs="unbounded" * minOccurs="0" maxOccurs="unbounded"

XML Schemas 기초 (6/11) XML Schemas 문서의 선언문 <접두어:schema xmlns:namespace 접두어 = “namespace 이름”> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> Namespace(이름공간)이란? 어떤 이름이 통용되는 범위를 말하는 것.

XML Schemas 기초 (7/11) XSD 문서의 전체 구조 <?xml version=“1.0” encoding=“EUC-KR”?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <!– 이곳에 XSD 정의 문장이 위치합니다. --> </xsd:schema> <?xml version=“1.0” encoding=“EUC-KR”?> <schema xmlns=“http://www.w3.org/2001/XMLSchema”> <!– 이곳에 XSD 정의 문장이 위치합니다. --> </schema>

XML Schemas 기초 (8/11) 엘리먼트 선언하기 <xsd:element name=“도서목록” type=“xsd:string”> 접두사 <element>태그 엘리먼트 이름 엘리먼트 데이터형 <?xml version=“1.0” encoding=“EUC-KR”?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“도서목록” type=“xsd:string”> </xsd:element> </xsd:schema>

XML Schemas 기초 (9/11) XML 문서와 XML Schemas의 결합 schemaLocation 속성은 유효성 검증에 필요한 XML 스키마를 찾을 수 있는 위치를 알려 줌. <도서목록 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“name04.xsd”> xsi:schemaLocation=“http://www.e-xml.net name04.xsd”>

XML Schemas 기초 (10/11) XML 문서와 XML Schemas의 결합 예제 <?xml version=“1.0” encoding=“EUC-KR”?> <도서목록 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“name04.xsd"> <도서> <분류>컴퓨터</분류> <제목>XML 무작정 따라하기</제목> <출판사>길벗</출판사> <저자>박준서</저자> </도서> </도서목록>

XML Schemas 기초 (11/11) XSD 문서 유효성 검사 MSXML 파서의 경우 버전 4.0 에서부터 XSD라고 불리는 W3C 표준 스키마를 지원 합니다. 따라서 이 예제들을 실행해 보려면 실습 컴퓨터에 MSXML 파서 4.0 이상의 버전이 설치되어 있어야 합니다. 또한, 최신 MSXML 4.0 파서를 설치하려면 먼저 실습 컴퓨터에  Windows Installer가 설치되어 있어야 합니다. MSXML 4.0 파서와 Windows Installer 를 설치하신 후, XSD 문서 유효성 검사기를 설치 하세요

XML Schemas 데이터 형식(1/5) 미리 정의된 데이터 타입 데이터 타입 분류 XML 스키마에서 미리 정의된 데이터 타입(built-in datatype) 사용자가 정의하는 타입(user-derived datatype)

XML Schemas 데이터 형식(2/5) 1) 기본 데이터형 데이터형 설 명 String 문자열을 의미. Boolean 설 명 String 문자열을 의미. Boolean 부울값을 의미, ‘True’ 또는 ‘False’값을 가짐. Decimal 숫자를 의미. Float 32비트 부동 소수점 수를 의미. Double 64비트 부동 소수점 수를 의미. Duration 날짜와 시간을 의미. anyURI URI를 의미 QName 정규화된 이름을 의미. NOTATION Qnames 집합.

XML Schemas 데이터 형식(3/5) 2) 유도 데이터형 데이터형 설 명 DateTime 날짜와 시간을 의미. Time 설 명 DateTime 날짜와 시간을 의미. Time 시간을 의미. Date 달력 날짜를 의미. gYearMonth 그레고리오력 달을 의미. gYear 그레고리오력 해를 의미. gMonthDay 일 년 중 특정한 날에 되풀이 되는 그레고리오력 날짜를 의미. gDay 월 중 특정한 날에 되풀이 되는 그레고리오력 일을 의미. gMonth 매년 되풀이되는 그레고리오력 달을 의미. hexBinary 16진수로 인코딩한 임의의 2진 데이터를 의미. base64Binary Base64로 인코딩한 임의의 2진 데이터를 의미.

XML Schemas 데이터 형식(4/5) 미리 정의된 데이터 타입들의 상속 관계

XML Schemas 데이터 형식(5/5) 사용자 정의 데이터 타입 Complex Types Allow element children Attributes allowed Simple Types No element children No attributes

엘리먼트의 선언:Complex Type(1/10) Sequence 엘리먼트들이 스키마에 나타난 순서대로 나타나야 함을 지정 choice 엘리먼트나 엘리먼트 그룹 사이에서 하나를 선택 하고자 할때 사용. all 엘리먼트들이 순서에 얽매이지 않고 올 수 있음을 지정.

엘리먼트의 선언:Complex Type(2/10) <sequence> 태그 <도서목록> <도서> <분류>컴퓨터</분류> <제목>XML 무작정 따라하기</제목> <출판사>길벗</출판사> <저자>박준서</저자> </도서> </도서목록> <!DOCTYPE 도서목록[ <!ELEMENT 도서목록 (도서)> <!ELEMENT 도서 (분류, 제목, 출판사, 저자> <!ELEMENT 분류 (#PCDATA)> <!ELEMENT 제목 (#PCDATA)> <!ELEMENT 출판사 (#PCDATA)> <!ELEMENT 저자 (#PCDATA)> ]>

엘리먼트의 선언:Complex Type(3/10) Complex Type (member.xsd) <?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="member"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="phone_no" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

엘리먼트의 선언:Complex Type(4/10) Complex Type (member.xml) <?xml version="1.0" encoding="euc-kr"?> <member xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“member.xsd"> <name>홍길동</name> <phone_no>031-111-2323</phone_no> </member>

엘리먼트의 선언:Complex Type(5/10) <?xml version="1.0" encoding="EUC-KR"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="도서목록"> <xsd:complexType> <xsd:sequence> <xsd:element name="도서"> <xsd:element name="분류" type="xsd:string" /> <xsd:element name="제목" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

엘리먼트의 선언:Complex Type(6/10) 디폴트 네임스페이스 <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서"> <element name="분류" type="string" /> <element name="제목" type="string" /> </sequence> </complexType> </element> </schema>

도서목록09.xsd 도서목록10.xml 수정하시오! <Choice> 태그 <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서"> <choice> <element name="분류" type="string" /> <element name="제목" type="string" /> <element name="출판사" type="string" /> <element name="저자" type="string" /> </choice> </complexType> </element> </sequence> </schema> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록09.xsd"> <도서> <제목>XML 무작정 따라하기</제목> <저자>김은희</저자> </도서> </도서목록> 수정하시오!

분류,제목,출판사,저자 -> 순서를 바꿔 보세요. <all> 태그 도서목록11.xsd 도서목록12.xml <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서"> <all> <element name="분류" type="string" /> <element name="제목" type="string" /> <element name="출판사" type="string" /> <element name="저자" type="string" /> </all> </complexType> </element> </sequence> </schema> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록09.xsd"> <도서> <제목>XML 무작정 따라하기</제목> <분류>컴퓨터</분류> <저자>김은희</저자> <출판사>길벗</출판사> </도서> </도서목록> 분류,제목,출판사,저자 -> 순서를 바꿔 보세요.

엘리먼트의 선언:Complex Type(7/10) minOccurs와 maxOccurs 하위 엘리먼트의 반복 횟수를 정의. minOccurs 최소 반복 횟수 정의 기본값 = 1 minOccurs=0 엘리먼트 생략 가능. minOccurs=1 반드시 엘리먼트 정의. maxOccurs 최대 반복 횟수 정의 maxOccurs=1 무조건 한번만 정의. maxOccurs=unbounded 반복 횟수에 제한을 받지 않고 사용.

엘리먼트의 선언:Complex Type(8/10) minOccurs와 maxOccurs 어트리뷰트 반복 횟수 minOccurs : 0 or 1 or unbounded (Default : 1) maxOccurs : 0 or 1 or unbounded (Default : 1) DTD 연산자 minOccurs maxOccurs 출연횟수 1 1번 ? 0번 또는 1번 * unbounded 0번 이상 + 1번 이상

<?xml version="1.0" encoding="EUC-KR"?> 파일명 : 도서목록13.xsd <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서" minOccurs="1" maxOccurs="unbounded"> <element name="분류" type="string" minOccurs="1" maxOccurs="1" /> <element name="제목" type="string" minOccurs="0" maxOccurs="1" /> <element name="출판사" type="string" minOccurs="0" maxOccurs="unbounded" /> <element name="저자" type="string" minOccurs="1" maxOccurs="2" /> </sequence> </complexType> </element> </schema>

다음을 수정하시오! <?xml version="1.0" encoding="EUC-KR"?> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록13.xsd"> <도서> <분류>컴퓨터</분류> <제목>XML 무작정 따라하기</제목> <출판사>길벗</출판사> <저자>박준서</저자> <저자>최배근</저자> <저자>김은희</저자> </도서> <제목>알기쉬운 xml</제목> </도서목록>

엘리먼트의 선언:Complex Type(9/10) Default와 fixed 속성 Default 엘리먼트 값이 default 값이거나 아니거나 상관없음. Fixed 엘리먼트에 정의되는 값이 반드시 ‘fixed’로 정의된 값이어야 함.

파일명:도서목록15.xsd <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서" minOccurs="1" maxOccurs="unbounded"> <element name="분류" type="string" default="컴퓨터" /> <element name="제목" type="string" fixed="XML 무작정 따라하기" /> </sequence> </complexType> </element> </schema>

파일명:도서목록15.xml 다음을 수정하시오! <?xml version="1.0" encoding="EUC-KR"?> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록15.xsd"> <도서> <분류>노트북</분류> <제목>NEW 알기쉬운 xml</제목> </도서> </도서목록>

엘리먼트의 선언:Complex Type(10/10) <group> 선언 재사용 가능한 엘리먼트들의 그룹 생성 반복되는 엘리먼트의 그룹을 <group>태그로 묶은 후 XSD에서 필요할때 사용.

파일명 : 도서목록17.xsd <?xml version="1.0" encoding="EUC-KR" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:group name="myItem"> <xsd:sequence> <xsd:element name="분류" type="xsd:string" /> <xsd:element name="제목" type="xsd:string" /> <xsd:element name="출판사" type="xsd:string" /> <xsd:element name="저자" type="xsd:string" /> </xsd:sequence> </xsd:group> <xsd:element name="도서목록"> <xsd:complexType> <xsd:element name="도서"> <xsd:group ref="myItem" /> </xsd:complexType> </xsd:element> </xsd:schema>

엘리먼트 선언:simpleType(1/27) restriction list union simpleType 원소를 이용.

엘리먼트 선언:simpleType(2/27) 제한(restriction)을 통한 단순 타입 정의 값의 범위를 제한 함. 제한을 통해서 새로운 타입을 정의하기 위해서는 restriction 원소를 사용하고, 바탕이 되는 기존 단순 타입(base) 속성을 이용해서 기술한다. 기존의 데이터 타입(기본 타입)으로부터 새로운 데이터 타입을 생성할 수 있음 하나 이상의 facet를 통해 값을 제어할 수 있음

엘리먼트 선언:simpleType(3/27) 패싯(facet) 값의 범위(value space)를 한 관점(single aspect)에서 정의하는 것. 예: 값의 범위를 지정하는 패싯 <xsd:simpleType name="ScoreType"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType>

엘리먼트 선언:simpleType(4/27) 패싯(facet)의 종류 length minLength / maxLength pattern enumeration whiteSpace minInclusive / maxInclusive minExclusive / maxExclusive totalDigits / fractionDigits

엘리먼트 선언:simpleType(5/27) 패싯(facet)의 종류(1) length – 길이 <simpleType name=‘productCode’> <restriction base=‘NMTOKEN’> <length value=‘8’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(6/27) 패싯(facet)의 종류(2) minLength – 최소 길이 <simpleType name=‘non-empty-string’> <restriction base=‘string’> <minLength value=‘1’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(7/27) 패싯(facet)의 종류(3) maxLength – 최대 길이 <simpleType name=‘form-input’> <restriction base=‘string’> <maxLength value=‘50’/> </restriction> </simpleType>

Ex. <length>,<minLength>,<maxLength>-도서목록29.xsd <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서" maxOccurs="unbounded"> <attribute name="분류"> <simpleType> <restriction base="string"> <length value="3" /> </restriction> </simpleType> </attribute> <attribute name="제목"> <minLength value="1" /> <maxLength value="6" /> </complexType> </element> </sequence> </schema>

유효한 XML 문서를 완성하시오! <?xml version="1.0" encoding="EUC-KR"?> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록29.xsd"> <도서 분류=“ ” 제목="XML" /> <도서 분류="소설1” 제목="소설 무작정" /> </도서목록>

엘리먼트 선언:simpleType(8/27) 패싯(facet)의 종류(4) pattern – 패턴 <simpleType name=‘isbnType’> <restriction base=‘string’> <pattern value=‘\d{10}’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(9/27) Ex.pattern – 우편번호 데이터 타입 <?xml version="1.0" encoding="euc-kr"?> <member> <name>을지문덕</name> <phone_no>031-123-3333</phone_no> <zipcode>462-710</zipcode> <address>경기도 성남시 ...</address> </member>

Ex.pattern – 우편번호 데이터 타입 <?xml version="1.0" encoding="euc-kr" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- 루트요소 선언 --> <xsd:element name="member"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="phone_no" type="xsd:string" /> <xsd:element name="zipcode" type="zipType" /> <xsd:element name="address" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- zipType 선언 --> <xsd:simpleType name='zipType'> <xsd:restriction base='xsd:string'> <xsd:pattern value='\d{3}(-\d{3})?'/> </xsd:restriction> </xsd:simpleType> </xsd:schema>

Ex.pattern – 우편번호 데이터 타입 <?xml version="1.0" encoding="euc-kr" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- 루트요소 선언 --> <xsd:element name="member"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="phone_no" type="xsd:string" /> <xsd:element name="zipcode"> <xsd:simpleType> <xsd:restriction base='xsd:string'> <xsd:pattern value='\d{3}(-\d{3})?'/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="address" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema>

엘리먼트 선언:simpleType(10/27) 패싯(facet)의 종류(5) enumeration – 유효한 값의 리스트 <simpleType name=‘season’> <restriction base=‘string’> <enumeration value=‘봄’/> <enumeration value=‘여름’/> <enumeration value=‘가을’/> <enumeration value=‘겨울’/> </restriction> </simpleType>

Ex.enumeration - 도서목록27.xsd <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서" maxOccurs="unbounded"> <attribute name="분류"> <simpleType> <restriction base="string"> <enumeration value="컴퓨터" /> <enumeration value="소설" /> <enumeration value="만화" /> </restriction> </simpleType> </attribute> <attribute name="제목" type="string" /> </complexType> </element> </sequence> </schema>

Ex. 유효한 XML 문서를 완성하시오! <?xml version="1.0" encoding="EUC-KR"?> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance“ xsi:noNamespaceSchemaLocation="도서목록27.xsd"> <도서 분류="노트북” 제목="XML 무작정 따라하기" /> <도서 분류="소설 만화” 제목="소설 무작정 따라하기" /> </도서목록>

엘리먼트 선언:simpleType(12/27) 패싯(facet)의 종류(6) whiteSpace – 값의 공백 처리를 제어한다. preserve : 변경없음 replace : 탭, CR, LF 문자를 공백으로 변경 collapse : replace를 적용하고 추가적으로 연속 공백, 시작 공백, 후행 공백을 제거

엘리먼트 선언:simpleType(11/27) 패싯(facet)의 종류(6) whiteSpace – 값의 공백 처리를 제어한다. <simpleType name=‘token’> <restriction base=‘normalizedString’> <whiteSpace value=‘collapse’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(13/27) 패싯(facet)의 종류(8) minInclusive – 최소값 <simpleType name=‘one-more’> <restriction base=‘integer’> <minInclusive value=‘1’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(14/27) 패싯(facet)의 종류(7) maxInclusive – 최대값 <simpleType name=‘one-hundred’> <restriction base=‘integer’> <maxInclusive value=‘100’/> </restriction> </simpleType>

Ex. minInclusive와 maxInclusive – 도서목록31.xsd <?xml version="1.0" encoding="EUC-KR"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="도서목록"> <complexType> <sequence> <element name="도서" maxOccurs="unbounded"> <attribute name="수량"> <simpleType> <restriction base="integer"> <minInclusive value=“1" /> <maxInclusive value="10" /> </restriction> </simpleType> </attribute> </complexType> </element> </sequence> </schema>

Ex. 유효한 XML 문서를 완성하시오! <?xml version="1.0" encoding="EUC-KR"?> <도서목록 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="도서목록31.xsd"> <도서 수량="11" /> </도서목록>

Q:조건에 맞는 XSD를 완성 하시오! 지정되어야 하는 실내 온도가 20도에서 28도 사이라면 integer 타입을 사용하여 <simpleType>으로 지정하고 제한을 줄 수 있다.

엘리먼트 선언:simpleType(15/27) 패싯(facet)의 종류(9) minExclusive – 입력 불가능한 값 중 최소값 <simpleType name=‘more-than-ninety-nine’> <restriction base=‘integer’> <minExclusive value=‘99’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(16/27) 패싯(facet)의 종류(9) maxExclusive – 입력 불가능한 값 중 최대값 <simpleType name=‘one-hundred-and-more’> <restriction base=‘integer’> <maxExclusive value=‘101’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(17/27) 패싯(facet)의 종류(11) totalDigits – 숫자 최대 자릿수(소수점 이하포함) <simpleType name=‘amount’> <restriction base=‘decimal’> <totalDigits value=‘8’/> <fractionDigits value=‘2’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(18/27) 패싯(facet)의 종류(12) fractionDigits – 소수점 이하 최대 자릿수 <simpleType name=‘amount’> <restriction base=‘decimal’> <totalDigits value=‘4’/> <fractionDigits value=‘1’/> <minInclusinve value=‘36.4’/> <maxInclusinve value=‘40.5’/> </restriction> </simpleType>

엘리먼트 선언:simpleType(19/27) 리스트(list)를 이용한 단순 타입 확장 단순 타입 단일 타입 - XML 스키마 관점에서 더 이상 나눌 수 없는 값 리스트 타입 - 단일 타입 값들의 연속으로 이루어진 것을 의미. 유니온 타입 – 주어진 값 중에서 하나 선택 예: 리스트 타입 정의 <xsd:simpleType name="authors"> <xsd:list itemType="author"/> </xsd:simpleType>

공백으로 분리된 여러 데이터를 가지는 심플 타입 정의 c6_1205.xsd c6_1205.xml

엘리먼트 선언:simpleType(20/27) 리스트(list) <xsd:simpleType name=“nameType"> <xsd:list itemType=“xsd:string”/> </xsd:simpleType> nameType이 가질 수 있는 값 -> 강감찬 을지문덕 이순신 권율 11명의 축구팀 멤버 이름을 저장하는 타입 선언 -> <xsd:simpleType name=“soccerMemberNameType"> <xsd:restriction base=“nameType”> <xsd:length value=“11”/> </xsd:restriction> </xsd:simpleType> nameType 데이터 개수를 지정하는 것. 문자열 길이를 지정하는 것이 아님

엘리먼트 선언:simpleType(21/27) 유니온(union)을 이용한 단순 타입 확장 주어진 여러 개의 단일 타입이나 리스트 타입 중에서 한 타입을 지정해서 사용하는 방법. 예: 유니온 타입 정의 <xsd:simpleType name="writer"> <xsd:union memberTypes="xsd:positiveInteger authors"/> </xsd:simpleType> 예: 유니온 타입의 사용 <writer>123</writer> <writer>홍길동 김개똥 허준</writer>

여러 개의 심플 타입을 결합한 심플 타입 정의 c6_1206.xsd c6_1206.xml

엘리먼트 선언:simpleType(22/27) 복합 타입 확장 extension을 이용한 복합 타입 확장 복합 타입은 simpleContent와 complexContent 원소의 extension 자식 원소를 이용해서 새로운 복합 타입을 정의. simpleContent - 단순타입을 복합타입으로 변환할 때 사용. 예) string 데이터 타입을 갖는 원소에 속성을 추가해야 하는 경우에 simpleContent를 사용한다. 속성을 갖기 위해서는 복합 타입으로 선언되어야 함. complexContent - 복합 타입을 바탕으로 새로운 복합 타입을 정의할 때 사용.

엘리먼트 선언:simpleType(23/27) simpleContent 사용 자식 요소없이 문자 데이터와 속성만 가지는 간단한 내용 모델을 구현. <xsd:element name=“member”> <xsd:complexType> <xsd:simpelContent> <xsd:extension base=“xsd:string”> <xsd:attribute name="name" type="xsd:string" use=“required”/> </xsd:extension> </xsd:simpelContent > </xsd:complexType> </xsd:element> <member name=“홍길동”>동명정보</member>

엘리먼트 선언:simpleType(24/27) simpleContent 사용 내부에 restriction과 extension을 포함 예: 가격을 위한 XML 문서 <price currency="USD">500.25</price> <price currency="WON">25000</price> 예: PriceType 정의 <xsd:complexType name="PriceType"> <xsd:simpleContent> <xsd:extension base="xsd:float"> <xsd:attribute name="currency" type="xsd:NMTOKEN/> </xsd:extension> </xsd:complexType>

c6_1305.xsd c6_1305.xml

엘리먼트 선언:simpleType(25/27) complexContent – extenstion 사용 복합 타입을 바탕으로 새로운 복합 타입을 정의할 때 사용. 내부에 restriction과 extension을 포함하는 두가지 방법. 예: extension을 사용하는 방법 <xsd:complexType name="ManagerType"> <xsd:complexContent> <xsd:extension base="EmployeeType"> <xsd:sequence> <xsd:element name="subordinates“ type="xsd:NMTOKENS"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="manager" type="ManagerType"/>

엘리먼트 선언:simpleType(26/27) complexContent – restriction 사용 예: restriction을 사용하면 기존의 <complexType>을 제한할 수 있다. <xsd:complexType name="TopManagerType"> <xsd:complexContent> <xsd:restriction base="EmployeeType"> <xsd:sequence> …… <xsd:element name="dept" type="xsd:string" minOccurs="0" maxOccurs="0"/> <xsd:attribute name="id" type="IdType"/>

엘리먼트 선언:simpleType(27/27) restriction을 이용한 복합 타입 확장 restriction은 기존 데이터 타입에 제약 사항들을 기술. 예: 전화 번호를 위한 타입 <xsd:complexType name="PhoneType"> <xsd:simpleContent> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{4}"/> <xsd:attribute name="where" type="HomeOffice"/> </xsd:restriction> </xsd:complexType>