Hi Hi

'xml 스키마 파셋'에 해당되는 글 1건

  1. XML 스키마 만들기

XML 스키마 만들기

 

스키마란 ? 
XML 문서를 구조화 하기 윈한 목적에서 DTD의 문제점을 해결하고자 W3C에서 개발 한것이다.

XML DTD 와 XML scheme의 차이점

-XML DTD는 XML 의 문법을 사용하지 않는 반면에. XML Schema는 XML과 같은 문법을 사용한다.
-XML DTD는 문서에서 정의할 수 있는 데이터 형식이 제한적인 반면  
                                                                         XML Schema는 데이터 형식의 표현이 자유롭다.

-XML DTD는 요소들이 반복하여 정의될 수 있는지 없는지 여부만을 제한할 수 있다.
                                                     달리 XML Schema는 반복 획수에 대한 제한을 설정 할 수 있다.

-XML Schema는 네임스페이스를 사용하여 다양한 타입 정의를 포함할 수 있다.



스키마에 어떤 구성요소를 사용할 수 있는가?



형식과 구성 요소 선언하기

XML 스키마 작성

예제Ex.xml
?xml version="1.0" encoding="UTF-8"?>

<transaction borrowData="2011-7-14">
<Lender phone="607.555.222">
<name> Doug Glass </name>
<street> 416 Disk Drive </street>
<city> Medfield </city>
<state> MA </state>
</Lender>

<Borrower>
<name>Britta Regensburg</name>
<street>219 Union Drive</street>
<city>Medfield</city>
<state>CA</state>
</Borrower>

<note>Lender wants these back in two week</note>

<books>
<book bookID="123-4567-890">
<bookTitle>Earthquakes for breakfast</bookTitle>
<pubDate>2011-7-15</pubDate>
<replacementValue>15.95</replacementValue>
<maxDaysOut>14</maxDaysOut>
</book>
</books>

<books>
<book bookID="123-4567-891">
<bookTitle>Avalanches for Lunch</bookTitle>
<pubDate>2011-7-16</pubDate>
<replacementValue>16.95</replacementValue>
<maxDaysOut>14</maxDaysOut>
</book>
</books>

<books>
<book bookID="123-4567-892">
<bookTitle>Meteor Showers for Dinner</bookTitle>
<pubDate>2011-7-17</pubDate>
<replacementValue>17.95</replacementValue>
<maxDaysOut>14</maxDaysOut>
</book>
</books>

<books>
<book bookID="123-4567-893">
<bookTitle>Snacking on Volcanoes</bookTitle>
<pubDate>2011-7-18</pubDate>
<replacementValue>18.95</replacementValue>
<maxDaysOut>14</maxDaysOut>
</book>
</books>

</transaction>



EX2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:annotation>
  <xs:documentation>
   Book borrowing transaction schema.
  </xs:documentation>
</xs:annotation>

<xsd:element name="transaction" type="transactionType"/>
  <xsd:complexType name="transactionType">
  <xsd:sequence>
    <xsd:element name="Lender" type="address"/>
    <xsd:element name="Borrower" type="address"/>
    <xsd:element ref="note" minOccurs="0"/>
    <xsd:element name="books" type="books"/>
  </xsd:sequence>
  <xsd:attribute name="borrowDate" type="xsd:date"/>
  </xsd:complexType>

<xsd:element name="note" type="xsd:string"/>
  <xsd:complexType name="address">
    <xsd:sequencd>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="street" type="xsd:string"/>
      <xsd:element name="city" type="xsd:string"/>
      <xsd:element name="state" type="xsd:NMTOKEN"/>
    </xsd:sequencd>
    <xsd:attribute name="phone" type="xsd:string" use="optional"/>
  </xsd:complexType>

<xsd:complexType name="books">
  <xsd:sequence>
    <xsd:elemente name="book" minOccurs="0" maxOccurs="10">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="bookTitle" type="xsd:string"/>
          <xsd:element name="pubDate" type="xsd:date" minOccurs="0"/>
          <xsd:element name="replacementValue" type="xsd:decimal"/>
          <xsd:element name="maxDaysOut">
            <xsd:simpleType>
              <xsd:restriction base="xsd:integer">
                <xsd:maxExclusive value="14"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="bookID" type="catalogID"/>
      </xsd:complexType>
    </xsd:elemente>
  </xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="catalogID">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="\d{3}-\d{4}-|d{3}"/>
  </xsd:restriction>
  </xsd:simpleType>
</xs:schema>


구성요소들이 나타나는 빈도 지정하기

최소 빈도는 minOccurs 속성에서 지정하며, 최대 빈도는 manOccurs 속성에서 지정할 수 있다. <note> 구성요소가 transationType 형식에서 0에서 5번 까지 나타날 수 있도록 하고 있다.

구성요소의 기본값 지정하기
fixed와 default 속성은 구성요소가 가져야 하는 값을 지정할 때 사용한다.

예제를 보면
<maxTrial>에 100을 지정하였는데,  fixed 속성을 사용하여 항상 100이 되어야 한다.

 <xsd: element name="maxTrials" type="xsd:integer" fixed="100"/>

반면에, default 속성을 사용하여 기본값만 100으로 지정하고 있다.
<xsd: element name="maxTrials" type="xsd:integer" default="100"/>

속성의 제한조건과 기본값 지정하기
-속성은 만드시 단순형(simple type)이어야만 한다.
-속성은 기껏해야 한 번 나타날 수 있으므로 min0ccurs와 max0ccurs속성을 사용하지 않는다.
-속성은 <xsd:attribute> 구성요소에 선언한다.

use속성
속성을 필수조건으로 할 것인지, 선택조건으로 할 것인지를 지정하고, 속성의 값을 고정시킬 것인지, 기본값을 지정할 것인지 등을 지정한다.
 value속성
필요한 값을 지정할 때 사용한다.


아래 use 속성에서 사용할 수 있는 값들의 목록이다.
·required : 속성이 반드시 필요하며, 어떤 값을 가지 수 있다.
·optional : 속성을 생략할 수 있으며, 어떤 값을 가질 수 있다.
·fixed : 속성을 고정시키며, 그 값을 value 속성에 지정한다.
·default : 속성이 나타나지 않는다면, value 속성에 지정한 값을 기본값으로 사용한다. 속성이 나타난다면, 문서에 지정해놓은 값을 사용한다.
·prohibited : 속성이 나타나서는 안된다.

속성 선언에서는 counter라는 이름으로 항상 400이라는 값을 갖는 정수형 속성을 선언한다.
 <xsd:attribute name="phone" type="xsd:int" use="fixed" value="400"/>

counter 속성이 문서에서 사용되지 않을 경우 기본값 400을 가지며, 문서에 사용되었다면 지정한 값을 갖게된다.
<xsd:attribute name="phone" type="xsd:int" use="default" value="400"/>


단순형 만들기
catalogID 형식은 XML스키마 규격에 내장되어 있지 않은 단순형이지만, <simpleType>을 사용하여 정의 한다.


단순형의 속성을 세부적으로 정의하려면 XML스키마 파셋(facet)을 사용한다.
단순형에서텍스트를 표시하기 위한 patten 파셋을 사용하여 정규 표현식
"\d{3}-\d{4}-\d{3}"을 지정해 주어야 한다.



파셋을 사용하여 단순형 만들기
파셋(facet)을 사용하면 단순형에 저장할 수 있는 데이터를 제한할 수 있다.
dayOfmonth라는 단순형을 만들고 minInclusive와 maxInclusive의 두 가지 파셋을 사용하여 1부터 31까지라고 세부적으로 정의한다.


단순형과 적용 가능한 파셋들


순서배열이 가능한 단순형과적용 가능한 파셋들



익명(anonymous)의 형식 정의 사용하기

한 번만 참조하게 되는 형식을 새로 정의하지 않아도 된다.

<xsd:element> 구성요소에 <xsd:complexType>을 삽입하기만 한것이다.

이름을 부여한 별도의 복하형을 전혀 정의 하지 않ㅎ고도,<book>구성요서 내에 원하는 구성요소를 추가할 수 있다.

혼합-내용 구성요소 만들기
텍스트와 다른 구성 요소를 포함하는 혼합-내용의 구성요소를 스키마와 DTD에서 모두 만들 수 있다.



복합 내용을 처리할 수 있도록 하기 위해<complexType> 구성요소의 mixed속성에 "true"를 지정해야한다.

주석문 스키마

스키마에서는 주석문(annotaing)을 추가하기 위해 <annotation>, <documentation>, <appInfo> 새로운 구성 요소를 정의해야 한다.



선택 만들기
선택 기능에서는 여러 개의 구성요소를 지정하고, 그 중하나만을 선택하도록 한다.
<xsd:choice>구성요소를 사용한다.

한 권을 빌리거나 여러권을 빌리거나 선택할 수 있는 구성요소


구성요소의 그룹 만들기


그룹은 구성요소들을 모아놓은 것이다. <xsd:group> 요소를 사용하여 다른 구성요소들을 포함시키고 나면, 그룹의 이름을 다른 곳에서 참조할 수 있다.



all
그룹 만들기
그룹의 자식들은 모두 개별적인 구성요소이어야한다. 즉, 절대로 그룹을 포함할 수 없다.
minOcurs와 maxOccurs의 값으로 0과 1만을 허용한다.

transactiomType을 all 그룹으로 변경
- 이 형식의 요소들은 최대한 한 번 까지만 나타날 수 있다.
- 추카적으로 구성요소를 선언 할 수 없다.

'' 카테고리의 다른 글

HTML 폰트, 글꼴 설정  (0) 2011.11.02
XML 스키마 만들기  (0) 2011.07.14
1) XML 들어가기- 문서만들기  (0) 2011.07.03