오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)
XML문서의 구조를 정의하는 문서모델의 한종류
(참고로 데이터베이스 스키마는 테이블과 필드의 구조를 정의)
XML Schema정의들은 줄여서 XSD라고도 부른다.
SGML의 문법이 아닌 XML을 사용하여 작성된다.
네임스페이스 권고안을 완전히 지원한다.(네임스페이스를 지원한다)
XML Schema 함수들은 외부DTD와 유사한 기능을 제공하며, XML
문서들은 XML Schema에 대한 참조를 포함하게 된다. 특정 XML
Schema를 따르고 있는 XML문서들을 XML Schema 인스턴스 문서
라고 한다.
데이터의 형식을 단순형식(siimple types)과 복잡형식
(complex types)이며속성및 다른 요소들을 포함할수 있는 요소들은
complex types이며 속성값이나 텍스트만을 포함하는 요소는 simple
types가 된다. simple types에는 요소및 속성안에 허용되는 텍스트
데이터의 형식을 규정하며 XML Schema안에 내장되어 있다.
XML Schema의 루트요소
해당 Schema문서안의 선언들의 기본이 되는 내용과 네임스페이스 정보들
을 선언할수 있게 해준다.
<schema targetNameSpace="URI"
attributeFormDefault="qualified or unqualified"
elementFormDefault="qualified or unqualified"
version="버전번호"
>
XML Schema NameSpace
XML Schema 권고안에 해당하는 네임스페이스임을 표시한다
대소문자를 구분한다. 일치하지 않다면 XML Schema Validator는 그문서를
스키마문서로 인정하지 않는다.
<schema xmlns=“http://www.w3.org/2001/XMLSchema”>
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
위의 3 가지를 네임스페이스로 사용하며 , XML 권고안에서는 2 번째 xs 접두사를 사용한다.
targetNameSpace 속성
XML Schema 의 기본적인 목적은 XML 데이터를 선언하는 것이다. 그리고
선언된 XML 데이터들은 targetNamespace 속성에 규정된 네임스페이스
에 의해 식별될 수 있다.
모든 XML 스키마가 tergetNamespace 속성을 가지지는 않는다.
(네임스페이스가 필요하지 않은 XML 문서를 정의하는 경우에는 사용되지
않는다.)
대소문자를 구분한다. 일치하지 않다면 XML Schema Validator는 그문서를
스키마문서로 인정하지 않는다.
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNameSpace="http://www.wrox.com/name"
xmlns:target="http://www.wrox.com/name"
>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNameSpace="http://www.wrox.com/name"
xmlns="http://www.wrox.com/name"
>
기본선언 (elementFormDefault, attributeFormDefault)
인스턴스 문서에 들어있는 요소 및 속성에 대한 기본(Default)한정형태를 제어
qualified(한정되는) 또는 unqualified(한정되지않는) 가 될수있다.
한정된다는 의미는 요소 및 속성이 네임스페이스 URI와 결합되어 있다는 의미
한정은 되어 있지만 접두사는 갖지 않는것(기본네임스페이스로 한정)
<name xmlns="http://www.wrox.com/name">
<first>John</first>
<middle>Pizza</middle>
<last>Doe</last>
</name>
한정되어 있으며 접두사를 가지고 있다.
<n:name xmlns:n="http://www.wrox.com/name">
<n:first>John</n:first>
<n:middle>Pizza</n:middle>
<n:last>Doe</n:last>
</n:name>
<name>요소는 한정되어 있지만 <first><middle><last> 요소들은
한정되어 있지 않다. 즉 <first><middle><last>는 기본네임스페이스를
포함해서 어떤 네임스페이스와도 결합되어 있지 않으므로 한정되지
않은 요소가 된다. 즉 한정된 요소와 한정되지 않은 요소가 섞여있다.
elementFormDefault, attributeFromDefault 모두 unqualified가 된다.
elementFromDefault가 unqualified라고 할지라도 어떤 요소가 반드시 한정되어야 한다.<name>요소의 경우 Schema 요소의 직계자식 으로서 인스턴스 문서안에서 전역으로 선언되었기 때문에 네임스페이스를 사용하여 한정시켰다.
<n:name xmlns:n="http://www.wrox.com/name">
<first>John</first>
<middle>Pizza</middle>
<last>Doe</last>
</n:name>
XML Schema 예제(note.xsd)
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML Schema 예제(note.xml)
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
검증방법 java Validate note.xml
<** 참고로 위의 검증 방법은 MSXML을 이용하지 않고 Java 기반의Xerces를 이용하였습니다..>
*** Xerces 2.1.0을 설치하는 방법
1. http://www.w3.org/XML/Schema#Tools 가면 최신 XML Tools을 제공)
2. 다운로드 받은 파일의 압축을 풉니다.
- 압축을 풀면 "xerces-2_1_0" 디렉토리 및 파일들이 생성됩니다.
3. "xerces-2_1_0" 디렉토리의 "xercesImpl.jar" 파일과 "xmlParserAPIs.jar"
파일을 클래스 Path에 포함시킨다.
- 해당 파일들을 CLASSPATH 경로에 포함시키거나
- "JRE/lib/ext" 디렉토리에 복사합니다.
Xerces Java Parser를 이용하여 XML 문서를 검증하는 방법
1. Xerces Java Parser를 이용하여 XML Schema를 검증하는 Java소스파일 을(Validate.java) 다운로드 받은후 XML 작업 디렉토리에 복사후 Compile
한다.
2. Xerces Java Parser가 설치된 디렉토리 아래 data Directory에서
personal-schema.xml 파일과 personal.xsd 파일을 XML 작업디렉토리로
복사한다.
3. 다음 슬라이드의 XMLSchemaSample.xml 과 XMLSchemaSample.xsd File
을 작성한 후 두개의 파일이 있는 디렉토리에서
java Validate XMLSchemaSample.xml 라고 입력한다.
댓글 없음:
댓글 쓰기