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

Slides:



Advertisements
Similar presentations
작성일자 2016년 7월 31일 2016년 7월 31일 2016년 7월 31일 2016년 7월 31일 2016년 7월 31일 2016년 7월 31일 문서번호 DAI SNM-XML-04 변경코드 00 페이지 작성자 김환조 / 전민주 관리자 정목동 교수님 검토승인.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
XML with JAVA. chapter 07 : chapter 07 : XML 스키마 Ⅰ XML 스키마 Ⅰ.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
XSD (XML Schema Definition)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
Excel 일차 강사 : 박영민.
XML 응용 프로그래밍 5장 DTD 순천향대학교 컴퓨터공학과 하 상 호.
제 9 장 구조체와 공용체.
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
XML 개념.
Lesson 6. 형변환.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
XML과 데이터베이스 ㅎㅎ XML과 데이터베이스 XML과 데이터베이스 매핑 관계.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
[ 고급소프트웨어공학 ] XML parser: DOM G 김지희.
6장. printf와 scanf 함수에 대한 고찰
10장. 예외처리.
공학컴퓨터프로그래밍 Python 염익준 교수.
자바 5.0 프로그래밍.
11장. 1차원 배열.
CHAP 12. 리소스와 보안.
C#.
CXQuery를 사용하는 STREAM XML Filter
13. 연산자 오버로딩.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
XML 구조와 문법 ㅎㅎ XML 문서 구조 개체 참조, CDATA, 처리 명령어 네임스페이스 개념과 사용
CHAP 13. 방명록 만들기 실습.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
Lesson 2. 기본 데이터형.
데이터 타입 이해 1. 컴플렉스 타입 2. 컴플렉스 타입의 확장 및 제한.
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
2장. 변수와 타입.
Clipping 이진학.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
Fucntion 요약.
CHAP 21. 전화, SMS, 주소록.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
XML 문서 제작 기본 ㅎㅎ 정형식 문서와 유효한 XML 문서 XML 파서 XML 편집기.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Numerical Analysis Programming using NRs
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 4 장 Record.
어서와 C언어는 처음이지 제21장.
ㅎㅎ DTD DTD 개념 DTD 문법 [실습] DTD 활용.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
7 생성자 함수.
6 객체.
Presentation transcript:

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

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

XML 스키마 DTD 문제점 Section 01 XML 스키마 개요 문서 구조를 정의하는 방법 DTD 문제점을 보완하기 위해 W3C에서 개발 DTD 문제점 XML 문법이 아닌 EBNF 문법 형식을 따른다. 작성 방법을 별도로 익혀야 하는 번거로움이 있다. DTD는 재사용성과 확장성이 떨어진다. DTD는 제한적인 데이터 타입만을 지원한다. 문서 내용을 좀더 정확하게 표현하는 것이 어렵다.

XML 스키마 목표 Section 01 XML 스키마 개요 문서 클래스에 대해 더욱 강력한 또는 느슨한 제한 허용 여러 개의 네임스페이스에 속한 마크업으로 구성된 문서도 유효성 검증 가능 요소, 속성 및 데이터 타입 정의를 상속할 수 있는 방법을 제공 SQL과 자바와 같은 언어에서 볼 수 있는 byte, date, integer와 같은 기본 데이터 타입 지원 XML을 관계형, 객체, OLAP 데이터베이스로 가져오거나 내보내는 것을 지원하는 형식 체계에 대한 정의할 수 있도록 지원 기존의 데이터 타입에 범위와 길이와 같은 특정 속성을 제한하여 유도한 사용자 정의 데이터 타입(UDT: User Define dataType)을 정의할 수 있도록 지원

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

DTD와 XML 스키마 예제 비교 Section 01 XML 스키마 개요 <students> student.xml <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

DTD를 XML 스키마로 변환 Section 01 XML 스키마 개요 DTD XML 스키마 <!ELEMENT> <!ATTLIST> <attribute/> , <sequence> ...</sequence> | <choice> ... <choice> + minOccurs ="1" maxOccurs="unbounded" ? minOccurs ="0" maxOccurs="1" * minOccurs ="0" maxOccurs="unbounded"

XML 문서에 XML 스키마를 적용 예제 Section 01 XML 스키마 개요 네임스페이스를 사용하지 않는 스키마 파일은 “noNamespaceSchemaLocation” 속성을 이용해서 표현 사용 예 작성된 XML 스키마를 XML 문서에 적용하여 유효성을 검증 = 유효성 검증 파서 프로그램 이용 <student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd">

Section 02 XML 스키마 사용법 XML 스키마 데이터 타입

미리 정의된 데이터 타입- 기본 데이터 타입 Section 02 XML 스키마 사용법 19개의 내장 원시 데이터 타입 문자열, 부호화된 이진, 숫자, 날짜/시간 데이터 타입 문자열 데이터 타입 부호화된 이진 데이터 타입 string 유효한 문자열 anyURI 표준 인터넷 URI의 데이터 타입 NOTATION 외부의 비 XML 컨텐츠에 대한 링크를 선언 QName "Namespace in XML"에 정의된 것에 적합한 QName 문자열 boolean true나 false 상태를 가지는 상태(flag)값을 가짐 hexBinary 일련의 16진수 숫자쌍으로 부호화된 이진 데이터 타입 base64Binary base64로 부호화된 이진 데이터 타입

미리 정의된 데이터 타입- 기본 데이터 타입 Section 02 XML 스키마 사용법 숫자 데이터타입 날짜/시간 데이터 타입 decimal 십진수 float 4바이트 실수 double 8바이트 실수 duration 기간 표현 dateTime 날자와 시간 표현, 날자는 그레고리력 사용 date 날자 표현, yyyy-mm-dd 형태 표현 time 시간 표현 gYearMonth 그레고리력의 년과 월 표현, yyyy-mm 형태로 표현 gYear 그레고리력의 년 표현 gMonthDay 그레고리력의 월과 일 표현 gMonth 그레고리력의 월 표현 gDay 그레고리력의 일 표현

미리 정의된 데이터 타입- 파생 데이터 타입 Section 02 XML 스키마 사용법 25개가 있음. string 파생 + decimal 파생 데이터 타입 String 파생한 데이터 타입 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 값들로 구성된 목록

미리 정의된 데이터 타입- 파생 데이터 타입 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바이트 정수

XML 스키마 선언 Section 02 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>

XML 스키마 선언 속성 Section 02 XML 스키마 사용법 속성 설명 ①xmlns:xsd ②targetNamespace 현재 스키마에서 선언된 요소의 네임스페이스 지정 ③xmlns 기본 네임스페이스를 지정 ④elementFormDefault 스키마를 사용하는 XML 문서에 대한 지시문 속성값이 qualified면 XML 문서에서 사용하는 모든 요소는 targetNamespace에서 선언된 네임스페이스를 사용해야 하지만, unqualified일 경우는 targetNamespace에서 선언된 네임스페이스를 사용하지 않아도 된다. ⑤attributeFormDefault 속성에 대한 지시문 개념은 elementFormDefault 속성과 동일

기본 네임스페이스로 XML 스키마 선언 Section 02 XML 스키마 사용법 XML 스키마와 관련된 요소에는 ”xsd"라는 접두사를 사용하지 않아도 된다. <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>

요소 선언과 요소 타입 정의 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>

XML 스키마 요소 정의 요약 Section 02 XML 스키마 사용법 <xsd:element [이름] [참조] [타입] [최소반복횟수] [최대반복횟수]> 속성 설명 이름 name 선언하려는 요소 이름을 정의 참조 reference 참조할 다른 요소 이름을 정의 타입 type 요소 타입을 정의(기본 데이터 타입 또는 사용자 정의 데이터 타입을 정의) 최소반복횟수 minOccurs 요소가 나타날 수 있는 최소 횟수를 정수로 정의 생략하면 기본값이 1로 지정 최대반복횟수 maxOccurs 요소가 나타날 수 있는 최대 횟수를 정수로 정의 [표 6-9] 요소 선언 속성

단순 데이터 타입 Section 02 XML 스키마 사용법 <simpleType> 요소 사용해서 정의 내부에 다른 요소나 속성을 포함할 수는 없다. restriction, list, union 이용해서 확장 가능 simpleType 요소 정의 형식 <simpleType final = (#all | (list | union | restriction)) id = ID name = NCName {any attributes with non-schema namespace . . .}> Content: (annotation?, (restriction | list | union)) </simpleType>

제한 요소 정의와 사용 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>

목록 요소 정의와 사용 Section 02 XML 스키마 사용법 단일 타입 값들의 연속으로 이루어진 것을 의미 개발자는 원하는 경우에 목록 요소를 이용해서 새로운 목록 타입을 정의할 수 있다. 목록 요소의 “itemType" 속성은 목록에서 사용할 수 있는 데이터 타입을 기술한다. XML 스키마에서 목록 요소 정의 형식 <list id = ID itemType = QName {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType?)) </list>

결합 요소 정의와 사용 Section 02 XML 스키마 사용법 주어진 여러 개의 단일타입이나 목록 타입 중에서 선택적으로 지정하여 결합해서 사용할 수 있는 방법 <union> 요소를 이용해서 표현할 수 있으며, 사용할 수 있는 데이터 타입들은 "memberType" 속성을 이용해서 표현할 수 있다. 결합 타입을 정의하는 형식 <union id = ID memberTypes = List of QName {any attributes with non-schema namespace . . .}> Content: (annotation?, (simpleType*)) </union>

복합 데이터 타입 Section 02 XML 스키마 사용법 요소를 정의하고 사용기 위해서 기본적으로 복합 데이터 타입(complexType)을 정의해서 사용 자식 요소나 속성을 필요로 하는 요소를 정의하기 위해서는 복합 데이터 타입으로 정의한다. 형식 <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>

순차 요소 정의와 사용 Section 02 XML 스키마 사용법 DTD의 컴마(,) 연산자에 해당 자식 요소들이 순서대로 나타나야 하는 경우 사용 <sequence> 요소: 발생 횟수 표현, "maxOccurs" 와 "minOccurs" 속성을 가지고 있다. 만일, 이 속성들을 정해주지 않을 경우에는 기본값 1로 사용 형식 <sequence id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {any attributes with non-schema namespace . . .}> Content: (annotation?, (element | group | choice | sequence | any)*) </sequence>

선택 요소 정의와 사용 Section 02 XML 스키마 사용법 choice은 여러 개의 자식 요소중에서 선택적으로 요소를 정의하는 것 자식 요소의 발생 횟수를 지정하기 위해서 "maxOccurs" 와 "minOccurs" 속성을 가지고 있다. 형식 <choice id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {any attributes with non-schema namespace . . .}> Content: (annotation?, (element | group | choice | sequence | any)*) </choice>

그룹 요소 정의와 사용 Section 02 XML 스키마 사용법 여러 요소를 하나로 묶어 사용하기 위해 사용 형식 그룹 정의는 <group> 요소 내부에 정의 스키마 요소의 직계 자식인 전역으로 정의되어야 함 <group> 요소에는 이름을 줄 수 있기 때문에 스키마의 어느 곳에서나 참조할 수 있고, 따라서 재사용 가능한 컨텐츠를 만드는데 그룹이 매우 유용하게 사용될 수 있다. 속성인 all, choice, sequence 요소들은 <group> 요소 내부에 중첩된다. <group name = NCName> Content: (annotation?, (all | choice | sequence)) </group>

전체 요소 정의와 사용 Section 02 XML 스키마 사용법 all 요소는 DTD에서는 정의할 수 없었던 형식 제공 id = ID maxOccurs = 1 : 1 minOccurs = (0 | 1) : 1 {any attributes with non-schema namespace . . .}> Content: (annotation?, element*) </all>

속성 선언 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>

속성 그룹 정의 Section 02 XML 스키마 사용법 속성 선언들을 그룹으로 묶어서 이름을 지정해 주는 것 여러 요소가 동일한 속성 집합을 지니고 있을 때 유용 형식 속성 그룹은 반드시 <attributeGroup> 요소를 사용하여 전역으로 정의해야 함 <attributeGroup id = ID name = NCName ref = QName {any attributes with non-schema namespace . . .}> Content: (annotation?, ((attribute | attributeGroup)*, anyAttribute?)) </attributeGroup>

XML 스키마 주석 Section 02 XML 스키마 사용법 <annotation> 요소의 자식 요소인 <documentation> 요소와 <appinfo> 요소를 이용해서 정의 <documentation> 요소 자신뿐만 아니라 다른 사람이 문서의도와 목적을 이해하는데 도움이 되는 정보를 수록 <appinfo> 요소 처리 애플리케이션에 대한 추가적인 정보 제공

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

Section 03 [실습] XML 스키마 활용 교재 277페이지 참조