- Home ›
- Amazon Web サービス入門 ›
- ページ管理 ›
- HERE
要素の値を取得
ここまでは要素そのものを変換するルールを記述していました。ここでは要素の値を取得する方法を確認します。
前のページでは「Item」要素の中身は省略していましたが、実際には次のような要素が含まれています。
<Item> <ASIN>...</ASIN> <DetailPageURL>...</DetailPageURL> <ItemLinks> ... </ItemLinks> <ItemAttributes> <Author>柴田 望洋</Author> <Manufacturer>ソフトバンククリエイティブ</Manufacturer> <ProductGroup>Book</ProductGroup> <Title>明解Java 入門編</Title> </ItemAttributes> </Item>
「Item」要素の中に「ItemAttributes」要素が含まれます。この「ItemAttributes」要素の中に「Title」要素や「Author」要素がさらに含まれます。「Title」要素の値には本のタイトルが記述され「Author」要素の値には本の著者が記述されています。ではこの要素の値を取得してみます。
要素の値を取得するには次の書式を使います。
<xsl:value-of select="式"/>
式には値を取得したい要素を指定します。例えばある要素の変換ルールの中に「<xsl:value-of select="aws:Title"/>」と記述すると、この部分が「Title」要素の値に置き換えられます。
では「Item」要素内に含まれる「ItemAttributes/Author」要素と「ItemAttributes/Title」要素のテキストを取得してみます。。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2009-07-01" version="1.0"> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="/"> <xsl:apply-templates select="aws:ItemSearchResponse/aws:Items/aws:Item"/> </xsl:template> <xsl:template match="aws:ItemSearchResponse/aws:Items/aws:Item"> <p> [タイトル] <xsl:value-of select="aws:ItemAttributes/aws:Title" /> [著者] <xsl:value-of select="aws:ItemAttributes/aws:Author" /> </p> </xsl:template> </xsl:stylesheet>
この場合は「Item」要素のテンプレートルールの中で「ItemAttributes/Title」要素と「ItemAttributes/Author」要素の値を取得し「Item」要素を変換しています。
サンプル
では実際に試してみます。まず次のようなXSLTスタイルシートを用意します。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2009-07-01" version="1.0"> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="/"> <html lang="ja"> <head> <title>XSLサンプル</title> </head> <body> <xsl:apply-templates select="aws:ItemSearchResponse/aws:Items/aws:Item"/> </body> </html> </xsl:template> <xsl:template match="aws:ItemSearchResponse/aws:Items/aws:Item"> <p> [タイトル] <xsl:value-of select="aws:ItemAttributes/aws:Title" /> [著者] <xsl:value-of select="aws:ItemAttributes/aws:Author" /> </p> </xsl:template> </xsl:stylesheet>
次のようなリクエストを送信します。(「Style」パラメータにはXSLTスタイルシートを設置したURLを指定して下さい)。
http://xml-jp.amznxslt.com/onca/xml? Service=AWSECommerceService &AWSAccessKeyId=[AccessKey] &Version=2009-07-01 &ResponseGroup=Small &Operation=ItemSearch &SearchIndex=Books &Keywords=Java &ContentType=text/html &Style=http://www.example.com/ecs5-1.xsl
結果として取得したXMLデータがXSLTスタイルシートによって変換され次のように出力されます。
( Written by Tatsuo Ikura )