-
XML 스키마Programmer/Computer Science 2012. 12. 28. 10:21
XML 스키마는 XML 문서의 구조화시키는 방법을 제공한다. XML 스키마는 DTD의 제한 사항을 개선한 차세대 문서 구조화 기법이다.
XML 스키마의 특징- XML로 작성되었다.
- XML 네임스페이스와 데이터 타입을 지원한다.
- 확장성을 가졌다.
<schema> 요소
- XML 스키마 문서의 최상의 요소이다.
- 예
- targetNamespace - 작성하는 스키마 문서 내에서 사용자가 임의로 정의하는 문서 요소(요소, 속성 등)이 위치할 네임스페이스를 나타내기 위해서 사용한다.
- attributeFormDefault, elementFormDefault - XML 문서 내의 요소와 속성이 한정되는 형태를 지정한다.
- qualified - 요소 또는 속성이 네임스페이스 URI와 결합된다. 일반적으로 이것이 기본값이다.
- unqualified - 요소 또는 속성이 네임스페이스 URI와 결합되지 않는다.
- xmlns:xs - 스키마 스펙에서 명시하는 네임스페이스를 나타낸기 위해서 사용한다.
- xmlns - 접두사를 명시하지 않고 네임스페이스를 선언하기 위해서 사용한다. 일반적으로 targetNamespace의 URI와 동일하다.
<xs:schema targetNamespace="urn:mpeg:DASH:schema:MPD:2011" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="urn:mpeg:DASH:schema:MPD:2011"> </xs:schema>
XML 문서에서 스키마 참고하기
- XML 문서를 스키마로 검사하려면 참고하도록 명시해야 한다.
- 예
- xmlns:xsi - 인스턴스 네임스페이스 URI를 지정한다.
- xmlns - 기본 네임스페이스의 선언을 명시한다.
- xsi:schemaLocation - 두개의 값이 공백으로 구분된다. 첫번째는 사용할 네임스페이스(보통 기본 네임스페이스와 동일)이고, 두번째는 참조할 스키마 파일명이다.
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:DASH:schema:MPD:2011" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd"> </MPD>
간단한 요소 정의
- 형식
- name - 요소의 이름
- type - 데이타의 형식. 아래는 내장된 테이타 형식.
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
- minOccurs - 문서 내에서 사용할 수 있는 최소 횟수. 기본값은 1.
- maxOccurs - 문서 내에서 사용할 수 있는 최대 횟수. 기본값은 1.
- default - 기본값을 지정. 값이 명시되지 않은 요소에 기본값을 할당한다.
- fixed - 고정값을 지정. 고정값 이외에 다른 값을 명시할 수 없다.
<xs:element name="xxx" type="yyy"/>
복잡한 요소 정의
- <sequence>
- <choice>
- <all>
<element name="xxx"> <complexType> <sequence> <element name="yyy"> <element name="zzz"> </sequence> </complexType> </element>
<element name="xxx"> <complexType> <choice> <element name="yyy"> <element name="zzz"> </sequence> </complexType> </element>
<element name="xxx"> <complexType> <all> <element name="yyy"> <element name="zzz"> </sequence> </complexType> </element>
속성의 정의
- 형식
- name - 속성의 이름.
- type - 데이타의 형식. 내장된 데이타 형식은 요소 정의 참조.
- default - 기본값을 지정. 값이 명시되지 않은 속성에 기본값을 할당한다.
- fixed - 고정값을 지정. 고정값 이외에 다른 값을 명시할 수 없다.
- use - 선택할 수 있는 세가지 값이 있다.
- optional - 속성이 생략 가능.
- prohibited - 절대로 포함될 수 없음.
- required - 반드시 포함되어야 함.
<xs:attribute name="xxx" type="yyy"/>
예 : MPD schema
<!-- MPD: main element --> <xs:element name="MPD" type="MPDtype"/> <!-- MPD Type --> <xs:complexType name="MPDtype"> <xs:sequence> <xs:element name="ProgramInformation" type="ProgramInformationType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Location" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Period" type="PeriodType" maxOccurs="unbounded"/> <xs:element name="Metrics" type="MetricsType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="profiles" type="xs:string" use="required"/> <xs:attribute name="type" type="PresentationType" default="static"/> <xs:attribute name="availabilityStartTime" type="xs:dateTime"/> <xs:attribute name="availabilityEndTime" type="xs:dateTime"/> <xs:attribute name="mediaPresentationDuration" type="xs:duration"/> <xs:attribute name="minimumUpdatePeriod" type="xs:duration"/> <xs:attribute name="minBufferTime" type="xs:duration" use="required"/> <xs:attribute name="timeShiftBufferDepth" type="xs:duration"/> <xs:attribute name="suggestedPresentationDelay" type="xs:duration"/> <xs:attribute name="maxSegmentDuration" type="xs:duration"/> <xs:attribute name="maxSubsegmentDuration" type="xs:duration"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <!-- Presentation Type enumeration --> <xs:simpleType name="PresentationType"> <xs:restriction base="xs:string"> <xs:enumeration value="static"/> <xs:enumeration value="dynamic"/> </xs:restriction> </xs:simpleType>
관련 링크
'Programmer > Computer Science' 카테고리의 다른 글
GLib의 GHashTable로 알아보는 해시 테이블의 충동 해결 방법 (1) 2013.09.17 GLib의 GTree로 알아보는 균형 이진 트리 알고리즘 (0) 2013.08.20 DTD (0) 2012.12.27 XML (0) 2012.12.21 이동 통신 표준 표 - 초간단 버젼 (0) 2012.12.06 댓글