1 / 76

XSD (XML Schema Definition)

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 문법과 다름 .

mabli
Download Presentation

XSD (XML Schema Definition)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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 등

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

  5. XML Schemas 기초 (4/11) • DTD와 XML Schemas의 비교

  6. XML Schemas 기초(5/11) • DTD와 XML Schemas의 비교

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

  8. XSD 문서의 전체 구조 XML Schemas 기초 (7/11) <?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>

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

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

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

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

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

  14. XML Schemas 데이터 형식(2/5) 1) 기본 데이터형

  15. 2) 유도 데이터형 XML Schemas 데이터 형식(3/5)

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

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

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

  19. 엘리먼트의 선언:Complex Type(2/10) <sequence> 태그

  20. 엘리먼트의 선언:Complex Type(3/10)

  21. 엘리먼트의 선언:Complex Type(4/10)

  22. 엘리먼트의 선언: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:complexType> <xsd:sequence> <xsd:element name="분류" type="xsd:string" /> <xsd:element name="제목" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

  23. 디폴트 네임스페이스 엘리먼트의 선언: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="도서"> <complexType> <sequence> <element name="분류" type="string" /> <element name="제목" type="string" /> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema>

  24. <Choice> 태그 수정하시오!

  25. <all> 태그 분류,제목,출판사,저자-> 순서를 바꿔 보세요.

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

  27. 엘리먼트의 선언:Complex Type(8/10) • minOccurs와 maxOccurs 어트리뷰트 • 반복 횟수 • minOccurs : 0 or 1 or unbounded (Default : 1) • maxOccurs : 0 or 1 or unbounded (Default : 1)

  28. 파일명 : 도서목록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"> <complexType> <sequence> <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> </sequence> </complexType> </element> </schema>

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

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

  31. 파일명:도서목록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"> <complexType> <sequence> <element name="분류" type="string" default="컴퓨터" /> <element name="제목" type="string" fixed="XML 무작정 따라하기" /> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema>

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

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

  34. 파일명 : 도서목록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:sequence> <xsd:element name="도서"> <xsd:complexType> <xsd:sequence> <xsd:group ref="myItem" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

  35. 엘리먼트 선언:simpleType(1/27) • 사용자가 정의하는 단순 타입(simpleType) • restriction • list • union • simpleType 원소를 이용.

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

  37. 엘리먼트 선언: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>

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

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

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

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

  42. 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"> <complexType> <attribute name="분류"> <simpleType> <restriction base="string"> <length value="3" /> </restriction> </simpleType> </attribute> <attribute name="제목"> <simpleType> <restriction base="string"> <minLength value="1" /> <maxLength value="6" /> </restriction> </simpleType> </attribute> </complexType> </element> </sequence> </complexType> </element> </schema>

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

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

  45. 엘리먼트 선언: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>

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

  47. 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:element> </xsd:schema>

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

  49. 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"> <complexType> <attribute name="분류"> <simpleType> <restriction base="string"> <enumeration value="컴퓨터" /> <enumeration value="소설" /> <enumeration value="만화" /> </restriction> </simpleType> </attribute> <attribute name="제목" type="string" /> </complexType> </element> </sequence> </complexType> </element> </schema>

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

More Related