1 / 44

자바 개발자를 위한 XML

자바 개발자를 위한 XML. Chap5. XML 스키마 (Schema) 김만수. CHAPTHER 5. XML Schema Schema 소개 데이터 타입 Schema 구조 기타 예제 프로그램. 5.1 Schema 소개. DTD 의 문제점 XML 문법이 아닌 다른 문법 형태로 기술  DTD 를 위한 문법을 다시 배워야 함 제한된 데이터 타입만 지원  문서의 내용을 정확하게 표현하기 어려움 재사용성이나 확장성이 부족 XML Schema DTD 의 문제점을 해결 W3C 에서 개발

ruby-rios
Download Presentation

자바 개발자를 위한 XML

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. 자바 개발자를 위한 XML Chap5. XML 스키마(Schema) 김만수

  2. CHAPTHER 5 • XML Schema • Schema 소개 • 데이터 타입 • Schema 구조 • 기타 • 예제 프로그램

  3. 5.1 Schema 소개 • DTD의 문제점 • XML 문법이 아닌 다른 문법 형태로 기술  DTD를 위한 문법을 다시 배워야 함 • 제한된 데이터 타입만 지원  문서의 내용을 정확하게 표현하기 어려움 • 재사용성이나 확장성이 부족 • XML Schema • DTD의 문제점을 해결 • W3C에서 개발 • http://www.w3.org.XML/Schema • 2001년 5월에 표준화

  4. 5.1 Schema 소개 • 표준화된 Schema 문서 구성 • XML Schema Part 0: Primer • XML Schema 개발자와 응용프로그램 개발자를 위해 예제 중심으로 설명 • http://www.w3.org/TR/xmlschema-0/ • XML Schema Part 1: Structures • XML Schema에서 XML 문서의 구조를 기술하는 방법에 대한 표준을 기술 • http://www.w3.org/TR/xmlschema-1/ • XML Schema Part 2: Datatypes • XML 문서의 원소와 속성이 가질 수 있는 데이터 형태와 새로운 데이터 타입을 선언하는 방법 기술 • http://www.w3.org/TR/xmlschema-2/

  5. XML Java Schema Class 문서 Object (Instance) 5.1 Schema 소개 • XML Schema • 문서의 구조와 사용 가능한 데이터 타입을 정의 • 유효성 체크를 위해 XML Parser는 XML 문서가 XML Schema 규칙의 준수 여부를 확인 • Schema 작성은 Java의 Class를 정의하는 것과 유사 • XML Schema의 네임스페이스 • http://www.w3.org/2001/XMLSchema • XML Schema 인스턴스 네임스페이스 • http://www.w3.org/2001/XMLSchema-instance

  6. employee.xsd employee.java <?xml version=“1.0” encoding=“euc-kr”?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“employee”> <xsd:complexType> <xsd:sequence> <xsd:element name=“name”type=“xsd:string”/> <xsd:element name=“id”type=“xsd:string”/> <xsd:element name=“age”type=“xsd:int”/> <xsd:element name=“dept”type=“xsd:string”/> <xsd:element name=“title”type=“xsd:string”/> <xsd:sequence> <xsd:complexType> </xsd:element> <xsd:schema> class employee { public String name; public String id; public int age; public String dept; public String title; } employee2.xml employee2.xml <?xml version=“1.0” encoding=“euc-kr”?> <employee xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation=“employee.xsd”> <name>홍길동</name> <id>GD199703-123</id> <age>27</age> <dept>개발부</dept> <title>대리</title> </employee> class employee2 { public employee2() { employee person; person.name = “홍길동”; person.id = “GD199703-123”; person.age = 27; person.dept = “개발부”; person.title = “대리”; } }

  7. 5.1 Schema 소개 원소의 데이터 타입을 선언하는 방법 • <complexType> element를 이용한 방법 • type 속성을 이용 1 2 Schema에 준하는 문서 작성 네임스페이스 네임스페이스를 사용하지 않는 Schema이고, Schema파일은 employee.xsd 임을 명시

  8. 5.1 Schema 소개 • XML Schema와 XML 문서의 유효성 체크 • Chap2의 ValidChecker Java 애플리케이션 이용 • XMLSpy 상용 애플리케이션을 이용한 방법 • ValidChecker 사용 • 환경 변수 CLASSPATH에 다음과 같은 항목 추가 • C:\JavaSoft\xerces-2_1_0\xmlParserAPIs.jar

  9. 5.1 Schema 소개 • XMLSpy 사용 애플리케이션 사용 유효성 검사

  10. 5.1 Schema 소개 • XML Schema의 새로운 Data Type • Schema의 자식 원소로 <complexType> Element로 선언 • name 속성에 complexType 이름을 기술 재 사용성이 가능한 Data Type 선언

  11. 5.1 Schema 소개 • XML Schema에서 속성 정의 • XML Schema의 attribute Element를 이용해서 기술 • attribute도 데이터 타입을 가짐 • attribute Element의 type 속성을 이용해서 기술

  12. 5.1 Schema 소개 • DTD 구조에서 XML Schema 구조로 선언이 없을 경우 한번만 존재

  13. 5.2 데이터 타입 • 원소와 속성은 데이터 타입을 기술 • 데이터 타입의 종류 • built-in datatype • user-derived datatype 기본형(primitive datatype) 미리 정의된 타입(built-in datatype) 단순 타입(simple type) 유도형(derived datatype) 단순 타입(simple type) 제한(restriction) 사용자 정의 타입(user-derived datatype) 제한(restriction) 복합 타입(complex type) 확장(extension)

  14. 5.2 데이터 타입 • 5.2.1 미리 정의된 데이터 타입 • 개요 • XML Schema 표준에서 정의한 데이터 타입 • p. 5-10 <표 5.2> 참조 • 단순 타입(simple datatype)으로 기본형(primitive datatype)과 유도형(derived datatype)이 있음 • 단순 타입은 사용자에 의해서 확장 가능 • 기본형(primitive datatype) – 4개의 범주로 19개로 구성 • 문자열 관련 기본형 : string 등 • 바이너리 관련 기본형 : boolean, hexBinary, baasee64Binary • 숫자 관련 기본형 : decimal, float, double 등 • 날짜와 시간 관련 기본형 : duration, dateTime, date, time 등

  15. 5.2 데이터 타입 • 5.2.1 미리 정의된 데이터 타입 • 유도형(derived datatype) – 2개의 범주로 25개 구성 • string으로부터 유도된 타입 • ID, IDREF, NMTOKEN, ENTITY 등 • decimal로 부터 유도된 타입 • integer, negativeInteger, byte, short, long 등 p. 5-14 <그림 5.3> 참조

  16. 5.2 데이터 타입 • 5.2.2 사용자가 정의하는 단순 타입 • 필요한 경우에 새로운 데이터 타입을 정의 • 단순 타입과 복합 타입으로 구분 • 단순 타입 • <simpleType> Element로 정의 • XML Schema에서 정의한 다른 단순 타입을 이용해서 정의 • 내부에 원소나 속성을 포함할 수 없음 • 종류 • 단일 타입(atomic type) • XML Schema 관점에서 더 이상 나눌 수 없는 값을 갖는 데이터 • int, date, NMTOKEN 등 • 리스트 타입(list type) • 유니온 타입(union type) • 복합 타입 • complexType 원소 사용 • 내부에 다른 원소와 속성을 포함 • 속성의 데이터 타입은 항상 단순 타입만 사용

  17. 5.2.2 사용자가 정의하는 단순 타입 • 단순 타입(simple datatype) • restriction, list, union을 이용해서 확장 가능 • 제한(restriction)을 통한 타입 정의 • 기존의 단순 타입이 가질 수 있는 값의 범위를 제한하여 정의 • 새로운 타입을 정의하기 위해 restriction 원소를 사용 • 바탕이 되는 기존 단순 타입을 base 속성을 이용해서 기술 • 패싯(facet)를 이용 값의 범위 제한 형식 <simpleType final = (#all | (list | union | restriction)) id = ID name = NCName {any attributes with non-schema namespace . . . }> 값의 범위를 한 관점에서 정의 숫자인 경우 값의 범위, 문자열 경우 문자열의 길이나 패턴

  18. 5.2.2 사용자가 정의하는 단순 타입 • 제한(restriction)을 통한 단순 타입 정의 값의 범위를 지정하는 패싯 예 문자열에서 우편 번호 타입 정의 예 <xsd:simpleType name=“ScoreType”> <xsd:restriction base = “xsd:integer”> <xsd:minInclusive value = “0”/> <xsd:maxInclusive value = “100”/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=“ZipCodeType”> <xsd:restriction base = “xsd:string”> <xsd:pattern value = “\d{3}-\d{3}”/> </xsd:restriction> </xsd:simpleType> ZipCodeType 사용 예 <xsd:element name=“address”> <xsd:complexType> <xsd:sequence> <xsd:element name=“city” type=“xsd:string”/> <xsd:element name=“street” type=“xsd:string”/> </xsd:sequence> <xsd:attribute name=“zipCode”type=“ZipCodeType”/> </xsd:complexType> </xsd:element> XML 문서 예 <address zipcode=“608-737”> <city>부산</city> <street> 대연3동 부경대학교 </street> </address>

  19. 5.2.2 사용자가 정의하는 단순 타입 • 제한(restriction)을 통한 단순 타입 정의 • 열거형 데이터 타입(enumeration datatype) • 주어진 몇 개의 값들 중에서 하나만 골라서 사용 값의 범위를 지정하는 패싯 예 <xsd:simpleType name=“CPUType”> <xsd:restriction base = “xsd:string”> <xsd:enumeration value = “Pentium4”> <xsd:enumeration value = “Pentium3”> <xsd:enumeration value = “Pentium2”> </xsd:restriction> </xsd:simpleType> 각 데이터 타입별 사용할 수 있는 패싯들의 목록 p. 5-17 – p.5-19 참조

  20. 5.2.2 사용자가 정의하는 단순 타입 • 제한(restriction)을 통한 단순 타입 정의 • employee 예제 ‘영문 대문자 2개, 6자리 정수, 하이픈(-), 2자리 정수’ 패턴을 의미

  21. 5.2.2 사용자가 정의하는 단순 타입 • 리스트(list)를 이용한 단순 타입 확장 • 리스트 타입 • 단일 타입 값들의 집합 • NMTOKENS, IDREFS, ENTITIES 등이 대표적인 리스트 타입 • 사용자 정의 새로운 리스트 타입 생성 가능 • list 원소를 이용하여 정의 • itemType 속성은 리스트에서 사용할 수 있는 데이터 타입 기술 • 패싯 • length : 리스트 타입에서의 값의 개수 • minLength : 리스트 타입이 가질 수 있는 값의 최소 개수 • maxLength : 리스트 타입이 가질 수 있는 값의 최대 개수 리스트 타입 정의 리스트 타입의 사용 <xsd:simpleType name=“author”> <xsd:restriction base=“xsd:string”> </xsd:simpleType> <xsd:simpleType name=“authors”> <xsd:list itemType=“author”/> <xsd:simpleType> <authors> 김만수 백정원 주낙순</authors>

  22. 5.2.2 사용자가 정의하는 단순 타입 • 유니온(union)을 이용한 단순 타입 확장 • 유니온 타입 • 여러 개의 단일 타입이나 리스트 타입 주에서 한 타입을 지정해서 사용할 수 있는 방법을 제공 • <union> Element로 정의 • memberType 속성을 이용해서 사용 가능한 데이터 타입들을 기술 유니온 타입 정의 유니온 타입의 사용 <xsd:simpleType name=“author”> <xsd:restriction base=“xsd:string”> </xsd:simpleType> <xsd:simpleType name=“authors”> <xsd:list itemType=“author”/> <xsd:simpleType> <xsd:simpleType name=“writer”> <xsd:union memberType=“xsd:positiveInteger authors”> <xsd:simpleType> <writer>123</writer> <writer>김만수 백정원 주낙순 </writer>

  23. 5.2.3 복합 타입과 합성자(compositor) • 복합 타입 • 자식 원소를 갖거나 속성을 필요로 하는 데이터 타입 • <complexType> Element로 정의 형식 <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 . . .}> (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence) ?, ((attribute | attributeGroup)*, anyAttribute?)))) </complexType>

  24. 5.2.3 복합 타입과 합성자(compositor) • 복합 타입 • 순차(sequence) • 자식 원소들이 순서대로 나타나야 하는 경우 • <sequence> Element로 정의 형식 <sequence id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = (nonNegativeInteger | unbounded) : 1 {any attributes with non-schema namespace . . .}> Content : (annotation?, (element | group | choice | sequence | any)*) </sequence> <xsd:complexType name=“OrderType”> <xsd:sequence> <xsd:element name=“customer” type=“CustomerType”/> <xsd:element name=“items” type=“ItemType”/> <xsd:element name=“ship” type=“ShipAddressType”/> </xsd:sequence> </xsd:complexType>

  25. 5.2.3 복합 타입과 합성자(compositor) • 복합 타입 • 선택(choice) • 여러 개의 서브 원소중에서 하나를 선택할 수 있는 것 • <choice> Element로 정의 형식 <choice id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = (nonNegativeInteger | unbounded) : 1 {any attributes with non-schema namespace . . .}> Content : (annotation?, (element | group | choice | sequence | any)*) </choice> <xsd:complexType name=“PaymentType”> <xsd:choice> <xsd:element name=“currency” type=“xsd:decimal”/> <xsd:element name=“creditcard” type=“xsd:string”/> <xsd:element name=“check” type=“xsd:string”/> </xsd:choice> </xsd:complexType>

  26. 5.2.3 복합 타입과 합성자(compositor) • 복합 타입 • 그룹(group) • 여러 개의 원소들을 하나의 단위로 묶어서 사용 • <group> Element로 정의 형식 <group id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = (nonNegativeInteger | unbounded) : 1 name = NCName ref = QName {any attributes with non-schema namespace . . .}> Content : (annotation?, (element | group | choice | sequence | any)*) </group> • GoodsGroup은 반복 사용 • 지불 방법은 PaymentType 중에 하나를 선택 <xsd:group name=“GoodsGroup”> <xsd:sequence> <xsd:element name=“goodsid” type=“xsd:string”/> <xsd:element name=“qty” type=“xsd:nonNegativeInteger/> </xsd:sequence> </xsd:group> <xsd:complexType name=“itemType”> <xsd:sequence> <xsd:group ref=“GoodsGroup” minOccurs=“1” maxOccurs = “unbounded”/> <xsd:element name=“payment” type=“PaymentType”/> </xsd:sequence> </xsd:complexType>

  27. 5.2.3 복합 타입과 합성자(compositor) • 복합 타입 • 전체(all) • SGML의 DTD에는 있지만, XML의 DTD에는 생략 • 하위 원소들의 순서에 관계없이 서술 하기 위해 사용 형식 <all id = ID maxOccurs = 1 : 1 minOccurs = (0 | 1) : 1 {any attributes with non-schema namespace . . .}> Content : (annotation?, element*)) </all> <xsd:complexType name=“ShipAddressType”> <xsd:all> <xsd:element name=“city” type=“xsd:string”> <xsd:element name=“street” type=“xsd:string”> <xsd:element name=“phone” type=“xsd:string”> </xsd:all> </xsd:complexType>

  28. 5.2.4 복합 타입 확장 • extension을 이용한 복합 타입 확장 • <simpleContent>와 <complexContent> Element의 <extension> Child Element를 이용하여 새로운 타입을 정의 • <simpleContent> • 단순 타입을 복합 타입으로 변환하기 위해서 사용 • string 데이터 타입 element에 속성을 추가하는 경우 • 속성은 복합 타입으로만 선언이 가능 형식 형식 <simpleContent id = ID {any attributes with non-schema namespace . . .}> Content : (annotation?, (restriction | extension)) </simpleContent> <extension base = Qname id = ID {any attributes with non-schema namespace . . .}> Content : (annotation?, ((attribute | attributeGroup)*, anyAttribute?)) </extension>

  29. 5.2.4 복합 타입 확장 • extension을 이용한 복합 타입 확장 • <simpleContent> Schema <xsd:complexType name=“PriceType”> <xsd:simpleContent> <xsd:extension base = “xsd:float:> <xsd:attribute name=“currency” type= “xsd:NMTOKEN”/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> 데이터 타입 선언 예 <xsd:element name = “price” type=“PriceType”/> 문서 예 <price currency=“USD”>500.25</price> . . . . . <price currency=“WON”>25000</price>

  30. 5.2.4 복합 타입 확장 • extension을 이용한 복합 타입 확장 • <complexContent> • 복합 타입을 바탕으로 새로운 복합 타입을 정의 형식 <complexContent id = ID mixed = boolean {any attributes with non-schema namespace . . .}> Content : (annotation?, (restriction | extension)) </complexContent> 형식 <extension base = Qname id = ID {any attributes with non-schema namespace . . .}> Content : (annotation?, ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))) </extension>

  31. 5.2.4 복합 타입 확장 • extension을 이용한 복합 타입 확장 • <complexContent> Schema <xsd:simpleType name="IdType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Z]{2}\d{6}-\d{3}"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="EmployeeType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="xsd:int"/> <xsd:element name="dept" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="IdType"/> </xsd:complexType> 문서 예 <manager id=“AJ199904-001”> <name>주낙순</name> <age>31</age> <dept>연구개발부</dept> <title>팀장</title> <subordinates>백정원 신만수</subordinates> <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”/> Java에서 EmployeeType를 상속 받은 ManagerType 클래스에서 ‘subordinates’멤버를 추가하는 의미와 같음

  32. 5.2.4 복합 타입 확장 • restriction을 이용한 복합 타입 확장 • 기존 데이터 타입에 제약 사항들을 기술 • <simpleContent>에서 <restriction> 형식 : p 5-32 참조 Schema <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:simpleContent> </xsd:complexType> <xsd:simpleType name=“HomeOffice”> <xsd:restriction base=“xsd:string”> <xsd:enumeration value=“home”/> <xsd:enumeration value=“office”/> <xsd:restriction> </xsd:simpleType> 데이터 타입 선언 예 <phone where=“office”>234-4567</phone>

  33. 5.2.4 복합 타입 확장 • restriction을 이용한 복합 타입 확장 • 기존 데이터 타입에 제약 사항들을 기술 • <complexContent>에서 <restriction> 형식 : p 5-33 참조 Schema <xsd:simpleType name="IdType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Z]{2}\d{6}-\d{3}"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="TopManagerType"> <xsd:complexContent> <xsd:restriction base="EmployeeType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="xsd:int"/> <xsd:element name="dept" type="xsd:string" minOccurs="0" maxOccurs="0"/> <xsd:element name="title" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="IdType"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:element name="topmanager" type="TopManagerType"/> <xsd:complexType name="EmployeeType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="xsd:int"/> <xsd:element name="dept" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="IdType"/> </xsd:complexType> 고위 관리자(top manager)는 특정 부서에 속하지 않음

  34. 5.2.4 복합 타입 확장 • 추상 타입과 교체 • 추상 원소와 타입 • Java의 추상 클래스 사용 개념과 유사 • ‘abstract’ Attribute 값을 “true”로 지정 • 추상 원소나 데이터 타입은 XML 문서에서는 직접 사용이 불가능  상속을 통해서 사용 Schema : transport.xsd . . . <xsd:complexType name=“Vehicle” abstract=“true”/> <xsd:complexType name=“Car”> <xsd:complexContent> <xsd:extension base=“Vehicle”> </xsd:complexContent> </xsd:complexType> <xsd:complexType name=“Plane”> <xsd:complexContent> <xsd:extension base=“Vehicle”/> </xsd:complexContent> </xsd:complexType> <xsd:element name=“transport” type=“Vehicle”/> <?xml vesion=“1.0” encoding=“euc-kr”?> <transport xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation=“transport.xsd”> <Car> . . . </Car> </transport> <?xml vesion=“1.0” encoding=“euc-kr”?> <transport xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation=“transport.xsd”> <Plane> . . . </Plane> </transport>

  35. 5.2.4 복합 타입 확장 • 추상 타입과 교체 • 교체 그룹(Substitution Group) • Element를 다른 Element로 교체할 수 있음 Schema . . . <xsd:element name=“comment” type = xsd:string” abstract = “true”/> <element name=“shipComment” type=“string” substitutionGroup=“comment”/> <element name=“customerComment” type=“string” substitutionGroup=“comment”/> comment 대신에 shipComment 혹은 customerComment로 대신 할 수 있음

  36. 5.3 스키마의 구조 • Schema Element 형태

  37. 5.3 스키마의 구조 • element

  38. 5.3.2 element • 속성이 있는 공백 원소 • 속성을 가지는 타입은 <complexType> • 다른 원소를 포함하지 않기 때문에 <simpleContent> Schema <xsd:complexType name=“ToType”> <xsd:simpleContent> <xsd:extension base = “xsd:string”> <xsd:attribute name=“what” type=“xsd:string”/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name=“to” type=“ToType”/> 데이터 타입 선언 예 <to what=“name”>홍길동</to>

  39. 5.4 기타 • 네임스페이스 • Schema 원소의 targetNamespace 속성을 이용해서 Schema에서 정의하는 원소, 속성, 데이터 타입 등에 NameSpace를 기술 가능 • 전역으로 선언된 원소, 속성, 데이터 타입은 Target Namespace에 소속 • 지역으로 선언된 원소, 속성, 데이터 타입은 Target Namespace에 포함되지 않음

  40. 5.4.1 네임스페이스 • 다른 XML 스키마에서 정의하는 원소, 속성, 데이터 타입 등을 위한 네임스페이스 이름 • 접두어 ssu에 대한 네임스페이스를 정의 • 전역으로 선언된 데이터 타입 • 다른 Schema 문서에서 참조 가능한 데이터 타입

  41. 5.4.1 네임스페이스 • Schema에서 namespace를 사용하기 xsi:schemaLocation=“타겟네임스페이스이름스키마파일이름” Request가 어느 네임스페이스에서 선언된 타입인지를 기술 안 함 네임스페이스를 기술 안 함 지역적으로 선언된 것들은 네임스페이스 접두어를 붙이지 못함

  42. 5.4.1 네임스페이스 • Schema에서 namespace를 사용하기

  43. 5.4.2 외부 스키마 사용하기 • Manager, TopManager, Employee 관계에서 • 객체지향적인 방법으로 XML 스키마를 사용하기 위해서는 Employee를 위한 스키마와 Manager, TopManager 스키마 파일을 분리 • <include>와 <import> Element를 사용 • <include> Element • 동일한 네임스페이스를 사용하는 외부 스키마를 포함 시킬 경우 • <import> Element • 다른 네임스페이스를 사용하는 외부 스키마를 사용하는 경우

  44. 5.4.2 외부 스키마 사용하기 같은 네임스페이스

More Related