概要

名前空間(ネームスペース)のURIはhttp://www.w3.org/2001/XMLSchemaである。接頭辞(プリフィクス)は任意に付けられるが、慣習的にxsdが使われる。
XMLスキーマのルート要素はschemaであり、名前空間の接頭辞xsdを付けて、xsd:schemaと表記される。
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 ・・・・・・
</xsd:schema>

XML Schemaでは2種類のデータ型が存在する。要素の宣言は以下のデータ型の種類により異なる。
データ型 説明
複雑型 子要素または属性を持つ要素のデータ型
単純型 子要素及び属性を持たない要素のデータ型、あるいは属性値のデータ型

これらの考え方(複雑型の"sequence"要素や"choice"要素等)はデータ型を記述するASN.1と似ている。

参考

単純型

要素を宣言するにはxsd:element要素を使用して宣言する。
  • 書式
<xsd:element name="string" type="xsd:string" minOccurs="number" maxOccurs="number" />
  • 属性
    • name
      属性には要素名を指定する。
    • type
      データ型として、組み込みデータ型または複合型(xsd:complexType)を指定する。
    • maxOccurs
      最大出現回数を指定します。maxOccursを省略すると"1"を指定したものとみなされます。出現回数の上限をなくす場合は maxOccurs="unbounded" と指定します。
    • minOccurs
      最少出現回数を指定します。minOccursを省略すると"1"を指定したものとみなされます。"0"を指定すると省略可能な要素となります。

複雑型(子要素の定義)

複雑型の要素を宣言する場合は、xsd:complexType要素を"xsd:elemnet"要素の直下に記述します。
子要素が複数存在する場合は"xsd:complexType"要素の内容として、xsd:sequence要素を用い、"xsd:element"要素を宣言します。
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="customer">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="name" type="xsd:string"/>
        <xsd:element name="address" type="xsd:string" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

  • 複雑な例(addressの拡張)
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="customer">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="name" type="xsd:string"/>
        <xsd:element name="address">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="prefecture" type="xsd:string" />
              <xsd:element name="city" type="xsd:string" />
              <xsd:element name="street" type="xsd:string" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

  • 複雑な例(ref属性で要素を参照)
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="customer">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="name" type="xsd:string" />
        <xsd:element ref="address" />   ... (参照)
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="address">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="prefecture" type="xsd:string" />
        <xsd:element name="city" type="xsd:string" />
        <xsd:element name="street" type="xsd:string" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

複雑型(属性の定義)

属性は子要素と同様、"xsd:complexType"の内容に記述し、子要素を記述した後にxsd:attribute要素を使用して宣言する。
  • 書式
<xsd:attribute name="名前" type="データ型" use="..." default="デフォルト値" fixed="固定値" />
  • 属性
    • type
      データ型として、組み込みデータ型または複合型(xsd:complexType)を指定します。
    • use
      定義した属性が必須かどうかを次の値の中から指定します。
      • required:必須
      • optional:省略可能(規定値)
      • prohibited:存在を禁止
    • default
      use属性がoptional の場合、省略時のデフォルト値を指定します。default 属性と fixed 属性は併用できません。
    • fixed
      固定値を指定します。default属性とfixed属性は併用できません。

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="customer">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="name" type="xsd:string"/>
       <xsd:element name="address" type="xsd:string" />
     </xsd:sequence>
     <!-- 属性を追加する -->
     <xsd:attribute name="id" type="xsd:string"/>
   </xsd:complexType>
 </xsd:element>

</xsd:schema>


タグ:

+ タグ編集
  • タグ:
最終更新:2011年05月06日 13:41