XMLを学習する−暫定的成果

XMLを学習するの暫定的な結果。面白いこと出来ないかなぁと思ったけど、学習したことはXMLドキュメントからデータを取り出すことなので、あまり面白いことは出来なかった。残念。
結果的に、ブログから出るRSSを適当に表示するもの、が出来ました。文字列を扱いたかったのでsubstringなどを適宜使用しました(カテゴリを外して表示するため)。

1:RSSデータを取り出す


適当にRSSを吐いているサイトへ行き、RSSのソースを手に入れます。例として、このブログのRSSIEで手に入れる方法を。図のオレンジ色のボタンを押し、「フィードを表示しています」という画面になったら、「表示」タブの「ソース」を押して出てきた文書を「rss.xml」とでも名付けて保存します。
ごちゃごちゃしているファイルですが、一番頭の

<?xml version="1.0" encoding="utf-8" ?>

の直後に、以下の文をコピペします。

<?xml:stylesheet type="text/xsl" href="trans.xsl" ?>

2:下の文書をtrans.xslとして保存、RSSファイルをIEで開く

前回のJavaScriptが何故か一部欠けた状態で表示されてしまったので、今回は色つき無しで。プログラミングよりもむしろXMLファイルとして使えそうなものを探すのに時間が掛かったっていうね。なんだか、あまり理解できていない気もするので(作りたいものがすぐ作れない)、まだまだ学習する必要があるなぁ。

<?xml version="1.0" encoding="ISO-2022-JP" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
<html lang="ja">

<body>
  <table border="4"><xsl:apply-templates /></table>
</body>
</html>
</xsl:template>

<!-- カッコつきのタイトルを受け取ると先頭カッコを除く。回帰関数-->
<xsl:template match="item" name="title-maker" >
 <xsl:param name="temp-title"/>
 <xsl:choose>
  <xsl:when test="substring($temp-title,1,1)='['">
   <xsl:call-template name="title-maker">
    <xsl:with-param name="temp-title"><xsl:value-of select="substring-after($temp-title,']')"/></xsl:with-param>
   </xsl:call-template>
  </xsl:when>
  <xsl:otherwise><xsl:value-of select="$temp-title"/></xsl:otherwise>
 </xsl:choose>
</xsl:template>

<xsl:template match="item" >
 <tr>
  <td><xsl:value-of select="substring(pubDate,1,16)"/></td>
  <td><a>
   <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
   <xsl:call-template name="title-maker">
    <xsl:with-param name="temp-title"><xsl:value-of select="title"/></xsl:with-param>
   </xsl:call-template>
  </a></td>
 </tr>
</xsl:template>

</xsl:stylesheet>