はじめに
本稿では、ホームページ製作に役立つさまざまなスクリプトをXSLTを用いて実装します。
XSLTはXMLの変換に特化したスクリプト言語で、ホームページ製作に使用するXHTMLの操作を簡単に行うことができます。
- 繰り返し入力する内容の雛型化
- タイトルにサイト名を自動的に追加
- ローカルテスト時とアップロード時でのリンク先の切り替え
- ヘッダとフッタの自動追加
- 目次の自動生成
- キーワードの自動リンク
- サムネイルの自動生成
対象読者
本稿では、XSLTスクリプトの文法やテンプレートなど、XSLTの基礎に関する説明を省略しています。XSLTに初めて触れる方は、参考文献で紹介したXSLTの解説サイトなどと併せてご覧ください。
必要な環境
このサンプルはInternet Explorer 6.0+MSXSLを使用して動作確認をしています。スクリプト中でMSXSLの独自拡張を使用しているため、実行にはMSXSLが必要になります。MSXSLはMicrosoftが配付している、MSXMLの中に含まれています。MSXMLはMicrosoftのホームページからダウンロードできます。
一部のスクリプトは、内部でJScriptを呼び出しファイル操作を行います。そのため「ウイルス対策ソフト」から、警告を受けるものがあります。スクリプトの内容はなんら悪意を含むものではありませんが、実行する際は記事の内容をよく読み、自己責任でお願い致します。
また、「7.サムネイルの自動生成」のサンプルスクリプトを実行するためには、AKIHITO38さんのフリーソフト「Easyサムネイル」をインストールする必要があります。EasyサムネイルはVectorのダウンロードページより入手できます。
0.何もしないXSLTスクリプト
XSLTは、XML文章の変換に特化したスクリプト言語です。「変換元XMLファイルに対し、何らかの操作を加えて、出力する」という形が、XSLTによる変換の核になります。例えば、ヘッダ自動挿入を行うXSLTスクリプトは、変換元のXHTMLにヘッダを挿入して出力するスクリプトであると言えます。
初めに、変換元を加工せず、そのまま変換先に出力するXSLTスクリプトを紹介します。このスクリプトは、今後紹介するスクリプトの土台となります(実際にファイルを作成するときは、文字コードにご注意ください)。
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- 出力モード --> <xsl:output method="html" encoding="Shift_JIS"/> <!-- 処理命令は無視 --> <xsl:template match="processing-instruction()"/> <!-- ノードや属性はそのまま出力 --> <xsl:template match="@*|node()" priority="-1.0"> <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy> </xsl:template> </xsl:stylesheet>
1行目はXML宣言で、このファイルがXMLファイルであるということを示します。XSLTスクリプト自身もXML形式で記述します。
2~3行目タグは、このXMLファイルがXSLTスクリプトであることを示すもので、このXMLファイルのルート要素(XMLファイルの一番上位の要素ノード)です。
6行目のタグは、XSLTの出力に関する設定を行っています。今回は出力する文章の種類をHTMLに(method="html"
)、文字コードをShift_JISに(encoding="Shift_JIS"
)設定しています。
9行目のタグは、変換元文章中の処理命令に対する処理を記述しています。今回は空要素になっているので、処理命令を見つけても何もしない、という指定になっています。
12~14行目のタグは、変換元ファイルの処理命令以外のノードや属性に対するテンプレートを記述しています。テンプレートとは、変換元ファイルの要素に対する処理を記述したもので、XSLTにおけるコードの単位となります。くわしくは、参考文献をご覧ください。このテンプレートは、ノードや属性をそのままコピーすることを表しています。これにより、このXSLTスクリプトは変換元ファイルをそのまま出力します。
それでは、このスクリプトを使用してXSLT変換を実際に行ってみましょう。テキストエディタを起動して、次の内容を入力し、ファイル名を「smaple.xml」として保存してください。上の2行にXSLT変換のための記述があることを除けば、普通のHTMLファイルと変わりありません。
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <html> <head> <title>0.何もしないXSLTスクリプト</title> </head> <body> <h1>0.何もしないXSLTスクリプト</h1> 変換元ファイル(このファイル)の内容がそのまま出力されます。 </body> </html>
後は、Internet Explorerで変換元のファイルを開くだけで、変換が実行されます。
このXSLTスクリプトは『何もしないXSLTスクリプト』なので、変換元ファイルに書かれたHTMLがそのまま出力されました。
XSLT変換とInternet Explorer
XSLTスクリプトを実行するアプリケーションは、XSLTプロセッサと呼ばれます。XSLTプロセッサにはいくつか種類がありますが、本稿ではMicrosoftのMSXSLを使用します(MSXSLのインストール方法については、「必要な環境」をご覧ください)。
MSXSLで変換を行うには、コマンドプロンプトで次のように入力します。
msxsl 変換元ファイル XSLTスクリプト -o 変換結果を出力するファイル名
これがMSXSLの基本的な実行方法ですが、変換元ファイルを変更するたびにコマンドの実行を行うのは面倒です。そこで、Internet Explorerの出番となります。Internet Explorerには、<?xml-stylesheet type="text/xsl" href="..."?>
の記述があるXMLファイルに対して自動的にXSLT変換を行い、その結果を表示する機能があります。この機能を使用すると、変換元ファイルに変更を加えた時、更新ボタンを押すだけで変更結果を確認することができます。
変換結果を確認するときは「Internet Explorer」、変換結果を保存するときは「コマンドプロンプト+MSXSL」という使い分けができます。