スキーマとは

スキーマは、XML ドキュメントであるという点で WSDL に似ています。 WSDL がコンピュータ Web サービス言語を定義するのに対し、スキーマは、WSDL で使われるデータ型を定義します。

Product Advertising API を利用するためにスキーマを作成する必要はありません。スキーマはすでに作成されています。しかし、レスポンスで返されるデータ型を判別できるようにするためにスキーマを理解しておくと便利です。

W3C は、int、string、float などの基本データ型を定義しています。これらのデータ型は便利ですが、あまりわかりやすいものではありません。例えば、XML ドキュメントの全てのテキストを文字列型として定義していると、パラグラフや注釈などのテキスト間の違いが不明瞭になります。パラグラフと注釈が使われるようなアプリケーションでは、スキーマに文字列基本クラスの拡張が含まれ、パラグラフ (<para>) や注釈 (<note>) がXMLドキュメントのタグとして使用できるようになっています。

スキーマを使用すると、XML ドキュメントの内容を識別するために、独自のデータ型を作成できます。作成する全てのデータ型は、W3C で定義されている基本データ型を基にする必要があります。これは、WSDL 例で定義されているスキーマネームスペースです。

xmlns:xs="http://www.w3.org/2001/XMLSchema" 

作成できるデータ型は、単純型または複合型です。複合型にはサブ要素と属性を指定できますが、単純型には指定できません。

この章の WSDL のセクションで、複合型は complexType として宣言されていることを説明しました。次の例で、要素 SearchBinSet は、2つの子要素 Bin と NarrowBy を持つものとして定義されています。

<xs:element name="SearchBinSet">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="tns:Bin" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence>
    <xs:attribute name="NarrowBy" type="xs:string" use="required" /> 
  </xs:complexType>
</xs:element>

NarrowBy 属性は、基本型 string を使用して定義されています。しかし、Bin パラメータはそうではりません。これは、Bin がスキーマの別の場所で定義されていることを意味します。WSDL 構文などのスキーマ構文は、要素がスキーマの別の場所で定義されている場合、キーワード "ref" を使用します。

Bin を理解するための次のステップは、スキーマ中のその定義を参照することです。Bin のサブ要素全てが基本型で定義されているかもしれません。その場合、調査はそこで終わりです。SearchBinSet とその子要素の完全な定義が得られます。しかし、Binにさらに複数の "ref" が含まれている場合は、以下の例のように基本型を使用した要素型定義に到達するまで、子要素の検索を繰り返すことになります。

name="BinItemCount" type="xs:string"