AmazonのProdcuct Advertising APIで改行の入った商品名が返ってくる

 AmazonのPAAPIことAmazonのProdcuct Advertising APIではまったのでメモ。
 Amazonのサーバー側でXSLT処理をやらせてJavaScriptを出力するというプログラム。自前のサーバー側の負担を軽減するための処置。あとは、取得したXSLTされたデータをキャッシュすることでAmazonのサーバーへのアクセス回数を減らそうという魂胆。だったのだが。
 うまく表示されなくなっている。
 キャッシュデータを見ると、問題なような気配。ちゃんとデータは取得できている。
 で、調べてみると、SafariやChrome、Firefoxでは問題なく表示されるのだが、IEでは表示されてないことが判明。
 終了していない文字列型の定数です。
 というエラーが出ている。どうやら、変数を定義する際に文字列に余計な改行が入ってるから。
 キャッシュデータを改めてチェックすると、引用符の間に意図せず改行が入っている。Amazonから返ってきたデータの商品名の途中に改行が入っているのだった。
 その商品はこれ。
 Kis-My-Ftに逢えるde Show vol.3 at 国立代々木第一体育館 2011.2.12/Kis-My-Ft2 Debut Tour 2011 Everybody Go at 横浜アリーナ 2011.7.31(仮)(ジャケットA)【初回限定生産】 [DVD]
 「[DVD]」の手前に改行が紛れ込んでいた。ありえねー!
 ということで、XSLTでなんとかできないかといろいろ試行錯誤。translateでなんとかなるかと思ったけど、うまいこと改行が拾えない。&#10も&amp#13も、さらに&#xAも&amp#xDもだめ。なんか見落としてるのかと思いつつ数時間。
 あきらめてキャッシュする側のプログラム(サーバー側)で対処。というか、これなら一瞬だった。キャッシュする前に改行を全部削除する。それだけ! なぜ、そっちを先に思いつかなかったんだろう。自分のバカさ加減にあきれた。


 というか、Amazon側のデータの不備だと思うんだが。
 いや、XMLデータを生で拾うぶんには問題がなく、XSLT処理側に問題があったということだろうか? とかいろいろ考えて、生データも見てみる。取得できるXMLデータそのものには問題がなかった。XSLT処理に問題がありそう。というか、この商品名が長すぎるんじゃね? とか思わないでもない。
 ここ1年くらい、Amazonでも楽天みたいに売り文句を入れた商品名が増えてきたけど、それはAmazon本体以外のマーチャントだけだと思ってた。今回の商品はAmazon本体の扱い。うーむ。別に売り文句みたいなのが入ってるわけではないものの。サブタイトルみたいなのまで入ってるから長いのか。初回限定とか、ジャケットAみたいなのが余計なのか。余計ってことはないか。
 データがおかしいと報告したほうがいいのか? とか思ってはみたのだけども、しなくてよかった。
 ついでに、IEの仕様もどうかな? とか思った。

コメント