Amazon AWS を利用できるためのXML, XSL理解備忘録

 

powered by Amazon.co.jp


ブログで、Amazonのアソシエイト・プログラムを手軽に利用したいアフィリエイト・ブロガーなら、アメーバ・ブログが便利。アフィリエイトだけじゃなくてブログを書いて100万円ゲットでもニンキなアメーバブログは、どんどん利用者が増えているブログのひとつ。(こんな感じで使っている)。アメーバブログをセカンドかサードブログにしてしまうと、下に書いたような面倒なことはしなくてもすむ。

2004.12.2追加

サイト内のページにAmazonのページの一部を自然な形で表示したり、紹介したい商品やアイテムを好きなように表示できたりするAWSを利用するためには、XMLやXSLが理解がどれだけ必要だろう?

実際に活用したサイトやブログにはいきつくけれど、あまりにXML等の基礎知識がないためか、よく理解できなかった。部分的にいじるよりは、初歩的な部分の理解につとめてみる。このページはその備忘録。

Amazon Webサービスを使うには、デベロッパー・トークンを取得する必要がある。さらに、アソシエイトとして、紹介料をもらうためには、アソシエイト・プログラムに参加しアソシエイトIDをとっておく必要がある。このあたりまでの理解は、問題ない。

KITをダウンロードすると、 kit\AmazonWebservices\API Guide\index.html へまずアクセスする。(そうするように、READMEFIRST.txtに書いてある)

すべて英語で書かれているが、(どこかで翻訳か要約してあるサイトがあったような、なかったような)、左のTable of ContentsからGetting StartedのIntroductionをみてみた。

Webサービスの多くは、 SOAP (Simple Object Access Protocol)やREST (HTTP経由のXML?)を介して利用されることが多いらしい。RESTは、XML/HTTPという書き方になっている文章もあった。

Amazonのカタログ情報やデータベースにアクセスするには、RESTとかSOAPを使う必要があるということだろう。

Table of Contentsから、AWS Overviewのページをみると、

  • 日本のアマゾンへアクセスする場合:
    http://xml.amazon.com/onca/xml3?t=
    アソシエイトID&dev-t=デベロッパー・トークン&KeywordSearch=dogs&mode=books-jp&type=lite&page=1&f=xml&locale=jp
  • ところが、どうもURLが変わったようで、現在はxml.amazon.comではなくて、xml-jp.amznxslt.comのようだ。 特に但し書き等なければ以降日本のAmazon用にこの部分は置き換えておく。
  • こんなURLでAmazonのxmlにアクセスするとある。例えば、こんな感じ(1)でやってみる。ところがこのままでは見慣れたページの体裁をなしていない。

    AWS OverviewのWriting Applications Using Web Servicesへ読みすすむと、Creating a Static Web Site using REST/XSLTという項目にたどりつく。上のXMLのデータばかりがならぶページを見慣れたページに変換して表示するにはXSLTスタイルシートを使わなければならないようだ。静的ページでも、動的(ダイナミック)ページでもいけそうだが、動的ページはサーバーに負荷がよりかかる。

    AWS OverviewのData Flow データフローをみると、XMLあるいはSOAPを通じて、AmazonのREST (XML/HTTP)やSOAPプロセシング・レイヤーへリクエストがゆき、そこがAmazonのカタログ・データベースからリクエストに応じたデータを引き出す。引き出されたデータはXSLプロセッサーを通じて人に見やすい形に整えられてウェブページとして表示されるかもしくはXMLかSOAPを通じて渡される。後者の場合は、さらにスクリプト等で人が理解しやすいページの体裁へ変換されるように理解する。(後者の理解は100%自信がないので、そうかも知れないという程度)

    次に、Accessing Amazon Web Servicesの中から、Using XMLのページをみてみる。Using SOAPは、サーバーへの負荷等考えるとあまり使う気になれないのでパス。

    Using XMLは、RESTメソッドを使ったカタログデータへのアクセスをするかについて簡単に書かれている。Amazonから返ってくるXMLには2種類ある。 lite と heavy の2様式で、 liteの場合、商品名、値段と言ったベーシックな情報を含み、 heavyの場合はより充実した情報(例えば、売上ランキング、レビューなど)。RESTメソッドを利用するにあたっては、ガイドライン、利用規則の中でも特筆すべき留意点として次の4点が記載されている(遵守しなければならないルールはこの4点に限られない)、

    1.Amazonのサーバーへ1秒1回以上のリクエストを行ってはいけない
    2.カタログデータを一時的にでもキャッシュできるシステムをもつこと
    3.エラーの取り扱いに何らかの処置が施されること
    4.リクエストを失敗したあとすぐに再リクエストしない設定であること。

    さて、Using XSLTのページへ移る。ここには、RESTメソッドを使ったキーワード・サーチの例が説明されている。

    http://xml-jp.amznxslt.com/onca/xml3?t=[Associates ID goes here]&dev-t=[Developer Token goes here]&KeywordSearch=[subject keyword goes here]&mode=[product line goes here]&type=[lite or heavy]&page=[page # goes here]&f=xml&locale=jp

    実際にIDとTOKEN等置き換えてみた例。(2)

    上で、最後のlocale=jp(この部分は、kitのページにはなかったが、追加しておいた)の手前の f=xmlの部分を、
    f=http://www.foo.com/bar.xslといったあらかじめアップしておいたXSLスタイルシートへのURLとすることで、通常のページの体裁として表示することができる。 bar.xslというファイル名は例えばとして使われているファイル名だが、実際のXSLファイルは、20kを超えてはいけない。検索結果、リスト、あるいは商品詳細情報といったwidget(こじんまりとした)HTML以外には使うべきでないとある。さらに、Amazonのプラットフォームで、5分までこのXSLスタイルシートを使った結果をキャッシュする。逆に考えると5分経たないとキャッシュが消えない。XSLスタイルシートをおくURLはパスワード・IP制御がないURLであること、一般に公開されているURLでなければならない。

    Using XSLT Stylesheetsに、XSLスタイルシートのサンプルがある。これをそのまま使って、上の(2)f=xmlの部分を置き換えてみると、こうなった。それらしきページになってきた。あまりにそっけなかったので、<title>と<h1>を加えた。

    ここまでできたら、あとはXSLスタイルシートをカスタマイズしていくだけ。

    1. 文字エンコードを UTF-8としたら、XSLファイルもUTF-8で保存しないとエラーがでる。

    2. Product Line US mode parameter JP mode parameter
      Books books books-jp
      Popular Music music music-jp
      Classical Music classical classical-jp
      DVD dvd dvd-jp
      Video vhs vhs-jp
      Electronics electronics electronics-jp
      Kitchen & Housewares kitchen kitchen-jp
      Software software software-jp
      Computer & Video Games videogames videogames-jp
      Magazines magazines magazines-jp
      Toys & Games toys toys-jp
      Camera & Photo photo photo-jp
      Baby baby NA
      Outdoor Living garden NA
      Computers pc-hardware pc-hardware-jp
      Tools & Hardware tools NA
      English/Foreign Books NA books-us
    3. Enabling Purchases > Adding Items to Shopping Carts に、ショッピング・カートにいれるためのタグが説明されている。同じページに、ウィッシュリストに加えるためのフォーム・タグもある。

    4. Reference > Search, Sort, and Parameter Typeへいくと、Parameter、Search、Sortなどに使うタイプ決めのためのパラメーターが一覧になっている。

    5. Reference > Constraints and Limitationsには、RESTメソッド (XML/HTTP)クエリーに使うURLの長さは最大2083文字。クエリーの際、ワード間には %20 でワードを分けること。

    6. Refemce ? DTD,XSD and SOAP WSDLには、XML,XSLで使われるエレメントの一覧がある。

    kitにサンプルとして入っている、 XSLTSamplesの中から heavy-data-to-html.xslを使ってみたけれど、日本のAmazon用ではないので、少しいじる必要がある。 こうなった (3)

    ここまでできると、たのしいXML : XML/XHTML入門を読んでみてXMLをどのように扱えるかを少しずつ理解できる気がしてきた。上の(2)をクリックするとAmazonのデータセンターから反ってくるデータが.xmlで表示される。このデータを保存してみた(これ)。次にXML/XHTML入門を参照にして、(3)で使ったXSLスタイルシートを適用してみると、(<?xml-stylesheet type="text/xsl" href="heavy-data-to-html.xsl"?>を保存したxmlページの2行目に追加)、うまく表示できた。こんな感じ。Amazonのデータセンターからライブにデータをひっぱってこないので、値段とかに変更があった場合は変更されない(と理解する)ので、誤解を生みそうな項目は表示しないようにXSLスタイルシートの変更が必要。ちなみに、保存したxmlページにxslを適用したものは、インタネットの接続が必要な箇所(画像とか)ある場合はそれらが表示されるにはインターネット接続が必要だが、そのままローカルでオープンできる。(XMLページのファイルをieを使って開くということ)。

    ここまで何とか理解できて、RESTメソッドでページを表示させることできたら、GoogleでXML, AWS, amazonといったキーワードで検索してでてくるサイトで説明されていることにはいっていきやすいのでは?

    KITのダウンロード、トークンの取得のための説明をみてみる

    [参考ページ]

    XSL (Extensible Stylesheet Language) [XSLの役割説明] < XML用語辞典 @IT
    XML Q&A  < 日本XMLユーザーズグループ
    XMLへの誘い:第3回 XMLは変幻自在 XMLがXSLTを使って処理されている図

    Extensible Stylesheet Language (XSL)
    標準情報 XSL 1.0 < Y-ADAGIO
    どら猫本舗のリファレンスカウンター XML仕様書、関連規格の仕様書など。

    たのしいXML : XML/XHTML入門 おすすめ。
    XSL入門 4.XSL記述の基礎

    Amazonの個別商品リンクを画像つきで作るスクリプトが、hail2u.netさんのブログで紹介されている。賢い!
    Adsenseの代替広告:
    English NaviでXSLテンプレート多数公開されている。
    eXpirituaLog+のAds by Google & Amazon Web Serviceというエントリーでの説明も参考になる。
    XML : amazonが値引きしている場合に割引率を表示するXSLT、
    Landscapeさんのページ。
    アフィリエイトを始めよう、のアマゾンのWebサービスの
    説明はコンパクトと全体がまとめられている。
    XMLとXSLのベーシックな部分をやさしく説明してある、
    kajikajiさんのサイト。


    ちょっと応用して検索窓をつけみた。検索結果を表示するURLへのリンクだけでなく、利用方法がひろがるように感じる。商品検索エンジンのようにもみせることができる。 (2004.12.30) (2005.3.12)

    2005.3 旧サイト閉鎖のため、このページへ移動。

    2005.3.24

    使うのを躊躇していたnusoap版AWSページを試し始めた (アマゾンお手軽検索)。REST版でnusoapを使わない版ページが割と分かりやすくつくることができるスクリプトをみつけたので、カテゴリー限定だけれどエレクトロニクス・カテゴリーのページでアップしてみた。

    2005.7.1

    ブログなどで使いまわしできそうなAmazon APIの使い方ができそうなスクリプトを実習してみた。

    2005.7.

    Data Islandを少し使えるようになった。


    検索

    ホーム / 検索 / ゲーム / ミニ・ショップ