zerosp.blog > Web Programming > 2005/10/03 23:50 >

Amazon Webサービスで覚えるXSLTプログラミング

このカテゴリはAmazon Wwbサービス 3.0(以下AWS)を利用してXSLTプログラミングを学習しましょうというカテゴリです。ただ、あんまし突っ込んだことはやらずに、軽めにざっと覚えましょうという企画。次のVersionのE-Commerceサービス 4.0(以下ECS)がリリースされているのに何故3.0を使うのかというと、4.0に比べてシンプルで分かりやすい構造をしているためです。

XSLTを覚えても使いどころが少ないんじゃない?と思う方も多いかもしれませんが、XSLTを覚えればXMLのデータをHTML、RSS、JSONなどのデータに変換できたりして案外便利だったりします。ちなみにうちで稼動しているAmazonの検索サイトAmagalyはXSLTベースで稼動しています。

XSLTスタイルシートを作成する上での注意点

文章中(タグは除く)の「<」「>」「&」は、それぞれ「&lt;」「&gt;」「&amp;」と書きましょう。HTMLに変換する場合は困らないのですが、Javascriptに変換するときに困るのが「"」「'」です。こちらの場合は「&quot;」「&#39;」になります。

そして各種タグ類もキチンと閉じないといけません。例えば画像タグなどは、<img src="aaa.jpg">と書く人も多いです。これはHTML4.0では問題ないのですが、XMLとしてはエラーになります。XSLT文章内に書く場合は、<img src="aaa.jpg" />となります。改行タグなども、<p>あいうえお<br>かきくけこ</p>と書くとエラーになります。pタグはキチンと閉じられていますが改行タグは閉じられていません。<br />としましょう。<br></br>とも書けますが通常はimg、br、hrタグなどは<br />と書かれることが殆どだと思います。

もう1つタグは正しい入れ子で書いてください。<p>あい<small>うえお<strong>かきくけ</small></strong>こ</p>はエラーになります。smallタグとstrongタグがきちんとした入れ子になっていません。正しくは<p>あい<small>うえお<strong>かきくけ</strong></small>こ</p>になります。

XSLTの基本的な書き方

つづいてはXSLTの基本的な書きかたといいますが構造です。とりあえず最低限のものを書いたXSLTスタイルシートは以下のようなものになります。

1:  <?xml version="1.0" encoding="UTF-8"?>
2:  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3:  <xsl:output method="html" encoding="UTF-8" media-type="text/html" />
4:
5:  <xsl:template match="/">
6:
7:    表示する文章や処理内容を記述
8:  
9:  </xsl:template>
10:  
11: その他の展開するTemplate群
12:  
13: </xsl:stylesheet>

ごく簡単に書くとスタイルシートの中身はこのようになります。便宜上行番号を入れてあります。

XSLTスタイルシートも中身はXMLで書くことになります。その為XML宣言を行わないといけません。1行目 <?xml version="1.0" encoding="UTF-8"?>がXML宣言となります。encoding指定でShift_JIS、EUC- JP、UTF-8などと指定します。AWSで使用する場合はUTF-8と指定してください。そしてXSLTはUTF-8N形式でファイル保存をしてください。

2行目はこの文章がXSLT Version 1.0にて記述されたものであることを明記してあります。2-13行目の<xsl:stylesheet><xsl:/stylesheet>内に処理内容や表示内容は記述してください。AWS3.0だとこの例のままでいいのですが、ECS4.0になるとここに更に定義しないといけないものがでてきます。それはまた後ほど書くとしましょう。

3行目はXMLにXSLTを適応して出力するわけなんですが、その出力形式やエンコード形式などを指定してあげます。指定できるものは以下のとおりです。

attribute説明
methodhtml or xml or text ...出力されるフォーマット形式
encodingShift_JIS or EUC-JP or UTF-8 ...出力される文章のエンコード形式
meida-typetext/html ...MIMEタイプの指定
omit-xml-declarationyes or noXML宣言の出力
doctype-public-//W3C//DTD HTML 4.01 Transitional//EN などDOCTYPE宣言のpublic内容の指定
doctype-systemhttp://www.w3.org/TR/html4/loose.dtd などDOCTYPE宣言のsystem内容の指定

5-9行目に実際のXSLTの処理命令や出力するHTMLなどを記述していく事になります。<xsl:template match="/">は何かといいますと、まずheavyのデータ構造にて図解したXMLのツリー図を思い浮かべてください。ツリーの頂点がRoot要素になります。そのRoot以下に各要素が定義されています。Root要素を表すものが/ (スラッシュ)になります。詳しくは後々書いていきますが5行目は、XMLのルート要素以下に対して5-9行目の処理をを適応しなさいという命令になります。

XSLTスタイルシートの外枠としてはこんな感じでしょうか。次のエントリ以下で5-9行目に書くようなXSLTでのプログラミングについて触れていきたいと思います。あぁ、でも次のエントリはXPathについて書きます。XPathというのは要素の場所を表すものなので、これが分からないと要素の指定ができなかったりしますので。。。XPathもデータ指定方法がたくさんあるのですが、AWS3.0を使う上で最低限知っておいたほうがいいというものだけ解説したいと思います。

分かりにくいとは思いますが、こんな感じでXSLTの解説を進めていこうと思います。

投稿日 2005-10-03 23:50

当サイトのコメントとトラックバックの扱いについて。

スパム対策のため認証制となっています。受け取ったコメント、トラックバックは一旦保留扱いとなり管理人が許可したものだけ表示されます。

トラックバック

  • Amazon Webサービスで覚えるXSLTプログラミングのトラックバックURL

コメント

コメントフォーム