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로 변환되기는 어려운 상황              

댓글