Amazon MWS API を利用して出品する際にXMLで一覧を生成するのだが、その生成したXMLが正しいかを判別するために Amazon MWS API のドキュメントサイトで配布されている XSD を利用した。
http://docs.developer.amazonservices.com/ja_JP/feeds/Feeds_FeedType.html
注: XMLフィードの作成方法によっては、商品情報フィードではなく、アイテムフィードスキーマを使用するよう、出品者に求められます。
ほんまAmazon紛らわしいな。。
こんな紛らわしいのに開発環境提供してくれないし。。。
Item フィード
https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_1_9/Item.xsd
Product フィード
https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_1_9/Product.xsd
XSDを利用してのXML検証方法
- $xml = new DOMDocument();
- libxml_use_internal_errors(true);
- $xml->load('./sample.xml');
- if ($xml->schemaValidate('./validate.xsd')) {
- echo "Success \n";
- }
- else {
- echo "Error \n";
- $errors = libxml_get_errors();
- foreach ($errors as $error) {
- echo display_xml_error($error, $xml);
- }
- libxml_clear_errors();
- }
- function display_xml_error($error, $xml)
- {
- $return = $xml[$error->line - 1] . "\n";
- switch ($error->level) {
- case LIBXML_ERR_WARNING:
- $return .= "Warning $error->code: ";
- break;
- case LIBXML_ERR_ERROR:
- $return .= "Error $error->code: ";
- break;
- case LIBXML_ERR_FATAL:
- $return .= "Fatal Error $error->code: ";
- break;
- }
- $return .= trim($error->message) .
- "\n Line: $error->line" .
- "\n Column: $error->column";
- if ($error->file) {
- $return .= "\n File: $error->file";
- }
- }