WWW Watch

リストマニア × Amazon Web サービス

前回からの続きです。さて、今回はリストマニアでお気に入りリストを制作、それを Amazon Web サービス [REST] を利用して XML で取得、XSLT...

Amazon Web サービス前回からの続きです。さて、今回はリストマニアでお気に入りリストを制作、それを Amazon Web サービス [REST] を利用して XML で取得、XSLT で XHTML の形に変換するところまで進んでみたいと思います。

まずはリストマニアでリストを作る必要がありますね。しかしここではリストマニアについての説明は省きます。Amazon のアカウント持っている人なら誰でも簡単に作れますので、詳しくは Amazon のサイト内の説明ページを見てリストマニアを作ってみてください。

※ この記事は 2005年 5月に書かれたものです。(参考エントリー

ちなみに作ったリストマニアは、AWS で取得できるようになるまで多少のタイムラグがありますので、リストを作ったらしばらく放置で。

次は実際に制作したリストマニアから AWS によって XML データを取得してみます。まず自分のリストマニアにアクセスして、その URI を見てみましょう。

http://www.amazon.co.jp/exec/ ~

と始まり、

~ /list-browse/-/2E1VP3TGS5XTJ/***-****

といった URI になっているはずです。最後の 「***-****」 の部分はセッション ID なので無視。その直前の 「2E1VP3TGS5XTJ」 のような部分がリストマニアの ID になります。この ID はリストマニアごとに個別のものが振られているので、この ID がわかれば別に自分のリストマニアでなくても、例えば友人のリストマニアなどを引っ張ってくることもできます。

ではこのリストマニア ID を使って、XML を取得するには AWS に対してどのようにリクエストを送ればよいかというと......

http://xml-jp.amznxslt.com/onca/xml3?
t=アソシエイトID
&dev-t=登録ID
&type=heavy
&page=1
&f=xml
&locale=jp
&ListManiaSearch=リストマニアID

のようになります。もちろん、実際には改行は無しで記述します。

AWS は1リクエストに対して 10件までのデータを返してくるので、リストマニアに登録された商品が 11個以上ある場合は、「page=」 の部分を 「2」、「3」 などと変更することで取得できます。前回も書きましたが、「f=xml」 とすれば生の XML データが帰ってきます。

リクエストをしても空のデータしか帰ってこない場合は、作ったリストマニアが正式に公開されていない 「待ち」 の状態になっている可能性があります。 1日、2日待ってみるくらいのゆとりをもってチャレンジしてみましょう。それでもだめなら、リクエスト方法 (リストマニア IDなど) に間違いがあると思いますので再確認を。

きちんと XML データが取得できることが確認できたら、次に XSLT 文書の制作に入りますが、今回は、お気に入り CD のジャケ画像を一覧表示してタイル張りのように表示させてみようと思いますので、XSLT の中身も簡単。

ブラウザでの表示と実際のソースは多少違う場合もあるので、コピーする場合はソースを表示させてそれを保存してください。

ソース内、3行目の 「xsl:output」 という部分で、変換時の出力形式を指定しています。今回はサイトのコーディングに合わせて 「XHTML」 に変換しますので、「method="xml"」 として出力ファイル形式を 「XML」 に指定。

文字コードは 「utf-8」、ページ内の一部として取り込むので、「omit-xml-declaration="yes"」 として XML 宣言の出力を省略。「omit-xml-declaration」 は 「method="xml"」 の時のみ有効。「no」 にすれば XML 宣言を出力。

doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"」は、DOCTYPE 宣言の公開識別子を指定。サイトのコーディングと同じ「XHTML 1.0 Strict」。

media-type="application/xhtml+xml"」 で出力されるファイルのメディアタイプを指定。「indent= "yes"」 は出力結果にインデントを入れるかどうかですが、ここでは入れる設定に。それほど重要でもないので別になくても大丈夫です。

<xsl:variable name="baseurl"> ~ </xsl:variable>

に記述されているのが、画像をクリックした際のリンク先 URI のうち固定の部分。「tag=」 の部分には自分のアソシエイト ID を入れましょう。

この XSL ファイルを適当な名前を付けて保存します。拡張子は 「.xsl」 で。それを自前のサーバーの適当な場所にアップし、そのファイルの URI をメモっときましょう。

(例) http://example.com/amazon.xsl

そうしたら、先ほど説明した AWS へのリクエスト URI の 「f=」 の部分に、今アップし たXSL ファイルの URI を記述します。そして、改めて AWS にリクエストを投げてみると......

こんな感じできちんと XHTML に変換されて帰ってきていると思います。あとはこれをページに取り込むだけ。Let's Enjoy !

【メモ】
XSL ファイルを自分なりにカスタマイズする際、XSLT を適用した結果を確認するたびに Amazon に対してリクエストを送るのは迷惑なので、一旦取得した XML をローカルに保存しておき、自分の PC 上で XSLT による XHTML 変換をテストするようにしましょう。

まず、「f=xml」 として生 XML を取得し、ローカルに 「.xml」 の拡張子で保存。自分で作った XSL ファイルと同じフォルダに入れておきます。次に保存した XML ファイルをテキストエディタなどで開いて、1行目の XML 宣言、

<?xml version="1.0"?>

の後に XSL ファイルを適用するため、次の 1行を追加します。

<?xml-stylesheet type="text/xsl" href="example.xsl"?>

「example.xsl」 の部分は自分が作った XSL ファイルのファイル名に置き換えてください。現在普及している最新のブラウザ (IE6.0 以降など) には、XSLT プロセッサが搭載されていますので、XSL ファイルをいじってみて、その都度ブラウザで XML ファイルを開いてみれば、変換後の状態が確認できるでしょう。

こうやってテストをし、XSL ファイルが完成したらサーバーにアップして、実際に AWS にリクエストを投げてみるという手順がスマートです。

Recent Entry

全ての記事一覧を見る

Hot Entry

逆引きおすすめエントリー