レスポンス定義

レスポンスセクションは、各オペレーションによってデフォルトで返されるレスポンスを定義しています。次のコードは、 ItemSearch レスポンスの一部を示しています。

<xs:element name="ItemSearchResponse">
  <xs:complexType>
    <xs:sequence>
    <xs:element ref="tns:OperationRequest" minOccurs="0" />
    <xs:element ref="tns:Items" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence>
  </xs:complexType>
</xs:element>

このレスポンスセクションは、 ItemSearch レスポンスに2つのオプション (minOccurs=0) 要素、 OperationRequestと Items が含まれることを示しています。これらの要素はどちらも参照(ref=) であるため、WSDL のさらに後方で定義されていることを意味します。

WSDL の後方では、OperationRequestが次のように定義されています。

<xs:element name="OperationRequest">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="tns:HTTPHeaders" minOccurs="0" /> 
      <xs:element name="RequestId" type="xs:string" minOccurs="0" /> 
      <xs:element ref="tns:Arguments" minOccurs="0" /> 
      <xs:element ref="tns:Errors" minOccurs="0" /> 
      <xs:element name="RequestProcessingTime" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    </xs:sequence>
  </xs:complexType>
</xs:element>

この定義にもいくつかの参照が含まれています。1つはArgumentsです。これは、WSDL のさらに後方で定義されています。リクエストの各部の定義を完全に理解するために、参照の階層を掘り下げて見ていく必要があります。要素の定義に "ref" がなくなれば定義階層の最後に到達したことがわかります。要素定義には、要素の名前である "name" と、要素の型である "type" が含まれます。型は、スキーマ(xs:)で定義されている文字列などの基本型です。次に例を示します。

<xs:element name="RequestId" type="xs:string" minOccurs="0" />

この行は、RequestIdの型が、W3C スキーマで定義されている文字列であることを定義しています。

次の例に示すレスポンス例では、RequestIdの定義がどのように行われているかがわかります。

<ItemSearchResponse xmlns="
http://ecs.amazonaws.com/AWSECommerceService/2006-09-13">
...
  <OperationRequest>
  ...
    <RequestId>0VFY0HFBRTJGRE6KES74</RequestId>

まず、RequestIdの値が文字列であることがわかります。次に、要素名がRequestIdになっています。さらに、XML階層からRequestIdの定義が、OperationRequest要素の入れ子になっており、それはItermSearchResponse要素のさらに入れ子になっていることがわかります。WSDL で入れ子になるのが "ref" キーワードであることに注意してください。