XML Schema
태그 :
- 개념
- XML Schema의 정의 - DTD를 대체하기 위해 개발된, 문서를 좀 더 쉽게 처리할 수 있게 하는 데이터 형(Data Type)만들기를 제공하는 스펙
I. DTD를 대체하여 Data Type 생성을 지원하는, XML Schema의 개요
가. XML Schema의 정의
- DTD를 대체하기 위해 개발된, 문서를 좀 더 쉽게 처리할 수 있게 하는 데이터 형(Data Type)만들기를 제공하는 스펙
나. XML Schema의 필요성
- 기존 DTD로는 어떤 정보의 데이터 형이나 범위를 제한하고 확장하는 기능이 없음
- DTD를 기술하는 문법은 XML을 기술하는 문법과 다름, 즉, DTD, XML모두 문법을 알아야 함
II. XML Schema의 특징 및 DTD와 비교
가. XML Schema의 특징
- 기존 DTD보다 복잡한 타입 선언이 가능하고 새로운 데이터 형을 생성하여 사용할 수 있음 -> 데이터 형 지원
- 스키마 문서 안에 Schema location 지시자를 이용하여 또 다른 스키마 문서를 포함 할 수 있음 -> 복잡구조정의 지원
- XML Schema는 Name Space를 지원함
* Namespace: XML 문서타입으로부터 엘리먼트들을 뽑아내어 다른 문서와 결합시킬 때, 여러 개의 문서를 동시에 처리하고 있을 때, 엘리먼트를 구별 할 수 있는 추상적인 존재
나. XML Schema와 DTD의 비교
구분 |
XML Schema |
DTD |
작성문법 |
XML 1.0을 만족 |
EBNF + 의사 |
구조 |
복잡함 |
상대적으로 간결함 |
Namespace |
지원함(문서 내 다수 사용가능) |
지원하지 못함(문서 내 단일) |
DOM지원 |
XML이므로 DOM지원 및 이용가능 |
못함 |
동적 스키마지원 |
가능(런타임 시에 선택, 상호작용의 결과로 변경될 수 있음) |
불가능(DTD는 실제로 읽기만 가능) |
데이터 형 |
확장적인 데이터 형 |
매우 제한적인 데이터 형 |
확장성 |
완전히 객체 지향적인 확장성 |
문자열 치환을 통해 확장형 |
개방성 |
개방적, 폐쇄적 수정 가능한 컨텐츠모델 |
폐쇄적 구조 |
다. XML Schema와 DTD의 양식 비교
<!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)> |
<xsd:schema xmlns:xsd=http://www.w3.org/2001/SMLSchema> <xsd:elemnet 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> |
III. XML Schema의 구성(.xsd)
가. 스키마 문서의 물리적 구성
- xsd 확장자를 갖음 (xs 확장자로도 표현함)
- 주 Schema 하나일 수도 있고, 주 Schema 하나에 외부 Schema 여럿일 수도 있음
- XML 문서는 게시된 Schema에 맞게 작성하고 또 그 Schema에 근거해 유효성을 판단
- Schema에 따라 작성된 XML 문서를 Schema Instance 라고 함
나. XML문서에 XML 스키마 적용 방법
- DTD 선언과 마찬가지로, XML 스키마 선언을 할 때도 XML 문서에 스키마 파일을 지정해 주어야 함
- 네임스페이스를 사용하지 않는 스키마 파일은 “noNamespaceSchemaLocation” 속성을 이용해서 표현
XML 문서 (-.xml) |
<?xml version=”1.0” encoding=”euc-kr”?> <루트엘리먼트 Xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
Xsi:noNamespaceSchemaLocation=”demo.xsd”> </루트엘리먼트> |
스키마 문서 |
<?xml version=”1.0” endcoding=”euc-kr”?> <xsd:schema Xmlns:xsd=http://www.w3.org/2001/XMLSchema> <!--외부 XML Schema 문서의 참조에 관련된 엘리먼트 --> <!--새로운 엘리먼트 및 속성을 선언하는 엘리먼트 --> </xsd:schema> |
IV. XML Schema의 활용 방안
- XML Schema는 데이터베이스의 내용을 XML로 변환하거나 XML을 데이터베이스로 저장할 때, 문서편집기 등에서 타입을 기반으로 검증 및 스키마 기반의 문서편집 등의 다양한 용도로 사용
- 현재 DTD는 널리 사용되고 있고, 기존의 많은 응용 프로그램들과 문서들이 사용 하고 있으므로, DTD가 모두 XML Schema로 변환되기는 어려운 상황