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のデフォルト値が違うのかもしれない。