AWSECommerceService.xsdのスキーマは間違っている。
バージョン2005-10-05のAWSECommerceService.xsdでバインディングするとどうしても、
バインディング例外が起きていたので調べてみたら、要求した結果とXMLSchemaが違うのを発見。
現象はLanguage要素の子要素でJAXBを使っているのであれば↓のような例外が出る。
Caused by: javax.xml.bind.UnmarshalException: Unexpected element {http://webservices.amazon.com/AWSECommerceService/2005-10-05}:Type
兎に角、Type要素あたりが変だと言う事が分かったのでXMLSchemaを見てみると↓のように定義されていました。
1883|<xs:element name="Languages" minOccurs="0"> 1884| <xs:complexType> 1885| <xs:sequence> 1886| <xs:element name="Language" minOccurs="0" maxOccurs="unbounded"> 1887| <xs:complexType> 1888| <xs:sequence> 1889| <xs:element name="Name" type="xs:string"/> 1890| <xs:element name="Type" type="xs:string"/> 1891| <xs:element name="AudioFormat" type="xs:string" minOccurs="0"/> 1892| </xs:sequence> 1893| </xs:complexType> 1894| </xs:element> 1895| </xs:sequence> 1896| </xs:complexType> 1897|</xs:element>
結果のXMLを見ながらXMLSchemaと比較してみると↓のようなType要素だけのLanguage要素が…変だコレ…
<Language> <Type>Subtitled</Type> </Language>
仕方ないのでXMLSchemaを書き換えました。
1889| <xs:element name="Name" type="xs:string"/>
↓に修正
1889| <xs:element name="Name" type="xs:string" minOccurs="0"/>
っで、ここで気になることが。IE6とFirefox1.0.7でXMLにXMLSchema指定して表示してみたら動いてる…
どうやらXMLSchemaのelementのデフォルト値が違うのかもしれない。