2006 年 9 月 25 日 23 時 52 分

XSL #1: 元の XML を用意する


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


さて、実際に XSL を試してみよう。

まず変換元の XML 文書を用意する必要がある。
適当に簡単なものを生成してもよいのだが、
ここでは、少しは実用的なものを題材にしてみよう。

ということで、以下の RSS 2.0 をサンプルとして利用する。

http://loafer.jp/mixi/diary/rss.xsp

RSS は、Web サイトの概要を表現した XML 適合文書だ。
RSS を利用すれば、Web サイトの更新情報を、
他の Web サイトから取得して連動させたり、
プログラム的に処理したりすることができる。

まあ、今回は RSS についての説明は割愛するが、
RSS は色々な Web サイトで利用されている。

RSS は XML に基づいた規格なので、
画面のデザインに関する情報を持たず、
そのままでは Web ブラウザで表示することができない。
できたとしても、無骨な XML のツリーが表示されるだけだ。

そこで、XSL を使って HTML に変換し、
Web ブラウザがレイアウトできるようにしてみよう。

RSS 2.0 は、<rss> がルート要素であり、
その下に <channel> 要素が 1 つ含まれる。
<channel> 直下には、<title> や <link>、
<description> などの要素がある。
これらは、RSS 文書の情報である。

また、<channel> 要素の中には、
任意の数の <item> 要素が含まれる。
<item> 要素は、公開されている項目に関する情報である。
更新履歴の場合は、最新変更された項目が含まれる。

<item> 要素も、<title> や <link>、
<description> などの要素を持つ。
これらは、項目に関する情報となる。

今回利用する枠組みを抜き出してみるとこんな感じとなる。

<rss version="2.0">
    <channel>
        <pubDate>更新日時</pubDate>
        <title>タイトル</title>
        <link>Web サイトの URL</link>
        <copyright>著作権情報</copyright>
        <item>
            <title>項目タイトル #1</title>
            <description>項目の説明 #1</description>
            <pubDate>項目の更新日時 #1</pubDate>
            <link>項目の URL #1</link>
        </item>
        <item>
            <title>項目タイトル #2</title>
            <description>項目の説明 #2</description>
            <pubDate>項目の更新日時 #2</pubDate>
            <link>項目の URL #2</link>
        </item>
    </channel>
</rss>

この RSS を以下のような HTML に変換したい。

<html>
    <head>
        <title>タイトル</title>
    </head>
    <body>
        <h1><a href="Web サイトの URL">タイトル</a></h1>
        <p>更新日時</p>
        <hr>
        <h2><a href="項目の URL #1">項目のタイトル #1</a></h2>
        <p>
            項目の説明 #1...<br>
            (<small>項目の更新日時 #1</small>)
        </p>
        <hr>
        <h2><a href="項目の URL #2">項目のタイトル #2</a></h2>
        <p>
            項目の説明 #2...<br>
            (<small>項目の更新日時 #2</small>)
        </p>
        <hr>
        <address>著作権情報</address>
    </body>
</html>

さて、上記の変換を行う XSLT を書いていこう。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.