連載
» 2003年11月12日 10時00分 公開

XMLテクニック集(7):XML Schemaで単純型要素を定義する (3/3)

[山田祥寛,@IT]
前のページへ 1|2|3       

XML Schemaで属性ノードを定義する

アイコン

XML Schemaで属性ノードを定義するには<xsd:attribute>要素を使用します。ここで重要なのはuse属性で、属性の必須/任意や固定値指定など、属性の特性を表すための情報を記述します。

カテゴリ XML Schema
関連要素 <xsd:attribute>
関連記事 XML Schemaで単純型要素を定義するXML Schemaで複雑型要素を定義する

 XML Schemaにおいて、属性ノードを定義するには<xsd:attribute>要素を用います。

 要素ノードの定義方法については、別稿「XML Schemaで複雑型要素を定義する」を参照いただくとして、ここでは下記book.xmlの<books>要素のname属性、<book>要素のisbn属性に注目してみることにします。

[book.xml]

<?xml version="1.0" encoding="Shift_JIS" ?>
<atit:books xmlns:atit="urn:bookList" name="書籍情報一覧">
  <book isbn="ISBN4-7981-0189-3">
    <title>10日でおぼえるJSP/サーブレット入門教室</title>
    <author>Y.Yamada</author>
    <published>翔泳社</published>
    <price>2800</price>
    <publishDate>2002/05/17</publishDate>
  </book>
  <book isbn="ISBN4-7741-1646-7">
    <title>JSP/PHP/ASPサーバサイドプログラミング徹底比較</title>
    <author>Y.Yamada</author>
    <published>技術評論社</published>
    <price>2880</price>
    <publishDate>2002/12/16</publishDate>
  </book>
  ……中略……
</atit:books>

<books>要素の名前空間プレフィックス(<atit:〜>)は、XML SchemaとXML文書とをひも付けるためのキーとなります。

[book.xsd]

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="books">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="book" type="book_type"
          minOccurs="0" maxOccurs="unbounded" />
      </xsd:sequence>
      <xsd:attribute name="name" type="xsd:string"
        use="optional" />

    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="book_type">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" />
      <xsd:element name="author" type="xsd:string" />
      <xsd:element name="published" type="xsd:string" />
      <xsd:element name="price" type="xsd:positiveInteger" />
      <xsd:element name="publishDate" type="xsd:date" />
    </xsd:sequence>
    <xsd:attribute name="isbn" type="xsd:string"
      use="required" />

  </xsd:complexType>
</xsd:schema>


 以下の部分に注目してみてください。

<xsd:attribute name="name" type="xsd:string" use="optional" />
  ……略……
<xsd:attribute name="isbn" type="xsd:string" use="required" />


 構文的には<xsd:element>要素について理解していれば、直感的に分かるはずです。name属性に属性名、type属性に属性値のデータ型を指定します。type属性で指定可能なデータ型については、別稿「XML Schemaで単純型要素を定義する」を参照してください。

 ここで重要なのは、その後の部分――use属性の個所です。use属性は属性の必須/任意や固定値指定など、属性の特性を表すための情報になります。use属性で指定可能な値は、以下のとおりです。

設定値 概要/記述例
required 必須(無指定の場合はエラー)
<xsd:attribute name="isbn" type="xsd:string" use="required" />
optional 任意(無指定可能)
<xsd:attribute name="name" type="xsd:string" use="optional" />
default デフォルト値指定(属性値無指定の場合、value属性の値を採用)
<xsd:attribute name="category" type="xsd:string" use="default" value="other" />
fixed 固定値指定(かならずvalue属性の値でなければなりません)
<xsd:attribute name="selected" type="xsd:string" use="fixed" value="selected" />
use属性で指定可能な値

 use属性がdefault、またはfixedの場合には、value属性は必須となります。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。