OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

amazonECS4.0 XMLをHTMLに変換出来ません

  • すぐに回答を!
  • 質問No.3362718
  • 閲覧数73
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 11% (9/78)

amazonECS4.0を利用してRESTリクエスト通信により返ってきたXMLをXSLTによりHTMLに変換したいのですが、うまく行きません...

■解決してほしい点
xmlにて戻ってきたタイトル情報のみを表示させようとしている、xslをアップロードしているのですが、うまくいきません。。。
まずは特定の情報のみを抜き出して表示する方法を知りたいのですが、分かる方いらっしゃいますでしょうか?
このXMLに対してタイトル情報と画像情報のみを抜き出して表示出来るようなXSLソースを求めています。
XML、XSL以前にamazonECS4.0的におかしな記述がありましたら、そちらもご指摘お願いします。
※環境等
サーバー名 s285.xrea.com
Apache 1.3.37
PHP 5.1.6
PEARの使用は考えていません。
よろしくお願いします。

■XML出力URL
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=09CD3TD99AGC2WFY5582&Operation=ItemSearch&Keywords=web&IdType=ASIN&ResponseGroup=Small&SearchIndex=Books&ContentType=text/xml

■HTML出力URL
http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&SubscriptionId=09CD3TD99AGC2WFY5582&Operation=ItemSearch&Keywords=web&IdType=ASIN&ResponseGroup=Small&SearchIndex=Books&ContentType=text%2Fhtml&Style=http%3A%2F%2Fspunkyweb.net%2Famazon%2Famazon%5F2.xsl

■XSL文書URL
http://spunkyweb.net/amazon/amazon_2.xsl
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 54% (1660/3060)

>どこかおかしな点がありますでしょうか?

指摘しようとしたら実はわからなかったので,敢えて検討せずにごまかしてました。ちぇー許してくれないか。

手元での検証の結果とそれを元にした検証でひとつはっきりしました。
======================
http://developer.mozilla.org/ja/docs/Introduction_to_using_XPath_in_JavaScript

>注意すべきなのは、【XPath では接頭辞のない QName は名前空間が null の要素にのみマッチすると定義されている】という点です。XPath にはデフォルト名前空間を取得する手段はありません。名前空間が null ではない要素や属性にマッチさせるには、接頭辞付きの名前テストを使い、その接頭辞を名前空間にマッピングする名前空間リゾルバを作成する必要があります。詳しくは下記のユーザ定義の名前空間リゾルバを作成する方法を参照して下さい。
=================
だそうです

現に手元の別ソースのamazon名前空間接頭辞をデフォルト名前空間にして取り除いたら結果が異なりました(汗

あとはほとんど影響ありません。前回の回答の地点でわかっていた内容ばかりです
「Item要素の直接の子としてTitle要素は存在しないので,<xsl:value-of select="ItemAttributes/Title" />としないとならない点。

それから,xsl:apply-templatesのselectを省略したときは
その全ての子要素(【OperationRequest要素を含みます!!】)にテンプレートルールを適用する

ビルトインテンプレートのおかげで、xsl:value-of要素のselect属性でテキストノードを指定しなくてもそのテキストが表示されます
http://www.asahi-net.or.jp/~PS8A-OKZK/xml/xslt10_1/builtin_template.html
http://www.asahi-net.or.jp/~ps8a-okzk/xml/memo/memo_xslt.html
上記で述べたことを考えると,これはRequestId要素のテキストノードやRequestProcessingTime要素のテキストノードにも適用されていますので注意!
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 54% (1660/3060)

==============xsl.xsl=============== <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform&q ...続きを読む
==============xsl.xsl===============
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:amazon="http://webservices.amazon.com/AWSECommerceService/2005-10-05"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="amazon"
>

<!--
「名前空間なし」

「名前空間が指定されたデフォルト名前空間」
は明確に異なる。match属性やselect属性等に指定されるXPathも
名前空間接頭辞をつける必要があるので注意。

Firefoxのソース表示では名前空間宣言が表示されないようなので
気づきにくい。注意。
-->

<!--
個人的な好みからmethodはxmlに変更している
script要素等をhead要素に埋め込むときには注意すること。(#PCDATA)
個人的には外部のファイルにすることを強く勧める。
-->

<xsl:output
method="xml"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
indent="yes"
/>

<xsl:template match="/amazon:ItemSearchResponse">
<html lang="ja">
<head>
<link rel="stylesheet" href="normal.css" type="text/css" media="screen"/>
<!--
オフラインで実験しているが,質問者様のサーバによってはCSSファイルが同一サーバ同一ディレクトリに配置できないかも
その場合はもちろんhref属性を書き換えること
-->
</head>
<body>
<xsl:apply-templates select="amazon:Items/amazon:Item"/>
</body>
</html>
</xsl:template>

<!-- xsl:for-eachを使わない記法にした。使ったときの方法がわからんかったので(汗-->
<xsl:template match="amazon:Item">
<p class="Itemtitle"><xsl:value-of select="amazon:ItemAttributes/amazon:Title" /></p>
<!-- font要素を撤廃し,class属性を付与,外部CSSによって,見た目を制御する。-->
</xsl:template>

</xsl:stylesheet>

=====normal.css============
@charset "UTF-8";

.Itemtitle{
color:#FF0000;
}
補足コメント
takeya4649

お礼率 11% (9/78)

ご回答ありがとうございました。

http://spunkyweb.net/amazon/index_test.html
の3というリンクで上記のxslを利用しているのですが、
http://spunkyweb.net/amazon/amazon_2.xsl
と同じくタイトル以外もダッーと表示されてしまいます。。。
どこかおかしな点がありますでしょうか?
まずは特定の情報のみを抜き出して表示する方法を知りたいのです。
よろしくお願いします。
投稿日時 - 2007-09-26 19:27:30
このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ