- Home ›
- Amazon Web サービス入門 ›
- ページ管理 ›
- HERE
ルートノードを変換
ではここからXMLデータをHTMLに変換するルールを記述していきます。まずはXMLデータ全体を変換するルールを記述します。
XMLデータに含まれるデータの中で、指定のノード以下の変換規則を記述するには次の書式を使います。
<xsl:template match="パターン"> <!-- 変換ルールを記述 --> </xsl:template>
このようにパターンに一致する変換ルールを記述したものをテンプレートルールと呼びます。
パターンには変換対象の要素名を記述します。今回はXMLデータ全体を表すルートノードを対象としますが、ルートノードのパターンは「/」で表されますので次のように記述します。
<?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:template>
</xsl:stylesheet>
このルールによってまずXMLデータ全体が次のように変換されます。
<xsl:template match="/"> <!-- XMLデータ全体がここに記述した内容に変換される --> </xsl:template>
例として次のような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> <p>サンプル</p> </body> </html> </xsl:template> </xsl:stylesheet>
今回の場合はXMLデータのルートノードを<html>から</htm>までの部分に変換するようにルールを記述しています。XMLデータの内容を何も使っていませんのでXMLデータがどんなデータであっても同じように変換されます。
サンプル
では実際に試してみます。上記の「ecs2-1.xsl」をXSLTスタイルシートとして設置し、その後で次のようなリクエストを送信します。(「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/ecs2-1.xsl
リクエストに対して通常はXMLデータが返されますが、今回の場合はStyleプロパティによって指定されたXSLTスタイルシートによってルートノード内の全データが変換されたHTMLデータとして返されます。
取得したHTMLデータは次のようになっています。
<html xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2009-07-01" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>XSLサンプル</title> </head> <body> <p>サンプル</p> </body> </html>
今回のようなXSLTスタイルシートでは、どのようなリクエストを送信してもまったく同じHTMLデータに変換されます。次のページ以降ではリクエストに対して返された値の中の必要なデータを取り出してHTMLデータの中に追加する方法を確認します。
( Written by Tatsuo Ikura )