180 likes | 329 Views
XML with JAVA. chapter 08 : XML 스키마 Ⅱ. 학습목표. 데이터타입 빌트인 심플타입 사용자 정의 단순 타입 사용자 정의 복합타입 (chaper 07 참조 ). 데이터 타입. 데이터 타입 : 엘리먼트나 속성 정보가 어떤 형태로 작성되어 질 것인가를 결정하 는 것 DTD 엘리먼트 내용 : #PCDATA 지원 속성값 : CDATA 지원 Schema 다양한 데이터 타입을 지원함
E N D
chapter 08 : XML 스키마 Ⅱ
학습목표 • 데이터타입 • 빌트인 심플타입 • 사용자 정의 단순 타입 • 사용자 정의 복합타입 (chaper 07 참조)
데이터 타입 • 데이터 타입 • : 엘리먼트나 속성 정보가 어떤 형태로 작성되어 질 것인가를 결정하 • 는 것 • DTD • 엘리먼트 내용 : #PCDATA 지원 • 속성값 : CDATA 지원 • Schema • 다양한 데이터 타입을 지원함 • XML 문서 구조를 더욱 정밀하게 정의할 수 있게 됨 • 사용자가 임의로 데이터 타입을 정의할 수 있음 • (주민번호 ,전화번호 타입 등)
데이터 타입 • 사용 용도에 따른 분류 • 빌트인 심플 타입 • 사용자 정의 심플 타입 • 사용자 정의 컴플렉스 타입 • 정의되는 위치에 따른 분류 • 글로벌 데이터 타입 • 로컬 데이터 타입
데이터 타입 • 빌트인 심플 타입 • 이미 정의되어 있는 심플 타입을 말함. • 빌트인 심플 타입을 사용할 경우 반드시 스키마 언어의 네임스페이스 접두사(xsd)를 붙여서 사용해야 됨. 스키마 문서 <xsd:element name=“age” type=“xsd:int”/> XML 문서 <age>20</age>
anySimpleType duration date time time date gYearMonth aYear gMonthDay gDay dMonth boolean base64Binary hexBinary float double anyURI QName NOTATION decimal string integer normalizedString nonPositiveInteger long nonNegativeInteger token int unsignedLong positiveInteger negativeInteger Name NMTOKEN language short insignedInt NCName NNMTOKEN byte uninsignedShort ID IDREF ENTRY IDREFS ENTITIES uninsignedByte
데이터 타입 • 사용자 정의 심플 타입 • 용도 • 빌트인 심플 타입으로 표현 하기 어려운 테이터 형태를 표현하기 위함 • 주민번호 ‘######-#######’와 같은 데이터 형태 를 사용자 정의 심플 타입으로 정의해서 사용할 수 있음 • 종류 • 글로벌 심플 타입 • 로컬 심플타입
데이터 타입 • 글로벌 심플 타입 • 루트 엘리먼트인 schema 엘리먼트의 자식 엘리먼트로 선언 됨 • 문법 • <simpleType name=“심플 타입 명”> • (restriction | list | union) • </simpleType> • 로컬 심플 타입 • 엘리먼트 나 속성 선언 내부에서 정의됨 • name 속성을 자실 수 없음 • 문법 • <simpleType> • (restriction | list | union) • </simpleType>
데이터 타입 • 심플 타입에 사용되는 자식 엘리먼트
데이터 타입 패싯 엘리먼트
데이터 타입 • 특정 범위의 값을 갖는 심플 타입 • 스키마 문서 <xsd:simpleType name=“stAge”> <xsd:restriction base=“xsd:int”> <xsd:minInclusive value=“15”/> <xsd:maxInclusive value=“130”/> </xsd:restriction> </xsd:simpleType> <xsd:element name=“age” type=“stAge”/>
데이터 타입 • xml 문서 • <age>12</age> • <age>17</age> • <age>100</age> • 예제참조(ch08_1.xsd,ch08_1.xml) 잘못된 문서
데이터 타입 • 여러 개의 값을 갖는 심플 타입 • 스키마 문서 • <xsd:simpleType name=“stAge”> • <xsd:restriction base=“xsd:string”> • <xsd:enumeration value=“만”/> • <xsd:enumeration value=“한국나이”/> • </xsd:restriction> • </xsd:simpleType> • <xsd:element name=“age”> • <xsd:complexType> • <xsd:simpleContent> • <xsd:extension base=“xsd:int”> • <xsd:attribute name=“단위” type=“stAge”/> • </xsd:extension> • </xsd:simpleContent> • </xsd:complexType> • </xsd:element>
데이터 타입 • xml 문서 • <age 단위=“만”>17</age> • <age 단위=“한국나이”>20</age> • 예제참조(ch08_2.xsd,ch09_2.xml) • 고정된 패턴을 값으로 가지는 심플 타입 • 전화번호는 ###-####-##### 형태로 값을 가져야 한고, • 주민 번호는 ######-####### 형태로 값을 가져야 하는 • 등 고정된 패턴을 정해야 할 경우 사용하는 형태
데이터 타입 • 주민 번호 패턴 정의 • 스키마 문서 • <xsd:simpleType name=“stNum”> • <xsd:restriction base=“xsd:string”> • <xsd:length value=“14”/> • <xsd:pattern value=“\d{6}-\d{7}”/> • </xsd:restriction> • </xsd:simpleType> • <xsd:element name=“memNum” type=“stNum”/> • Xml 문서 • <memNum>111111-1111111</memNum> • <memNum>111111</memNum> • 예제참조(ch08_3.xsd,ch08_3.xml) 잘못된 값
데이터 타입 • 여러 개의 심플 타입 결합 • 여러 개의 심플 타입을 결합하여 하나의 심플 타입 정의 • 여러 개의 타입 중 하나만 만족 하면 됨 • 스키마 문서 • <xsd:simpleType name=“stName1”> • <xsd:restriction base=“xsd:string”> • <xsd:length value=“3”/> • </xsd:restriction> • </xsd:simpleType>
데이터 타입 <xsd:simpleType name=“stName2”> <xsd:restriction base=“xsd:string”> <xsd:length value=“4”/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=“stName3”> <xsd:union memberTypes=“stName1 stName2”/> </xsd:simpleType> <xsd:element name=“name” type=“stName3”/> Xml 문서 <name>사공병오</name> <name>오정원</name> 예제참조(ch08_4.xsd,ch08_4.xml)