2003/09/15 はやぶさ通信 Vol 15号 今回は、ちょっと趣向を変えて、RDF RDF( RDF(Resource Description Framework) Framework)というメタ言語の応用例として、 RSS (RDF Site Summary)を取り上げたいと思います。 Summary) RDF 自身は、XML フォーマットで、資源記述の枠組 みとして、『 『計算機が理解可能なウェブ上の情報を交換 するアプリケーションに対して,相互運用性を提供す するアプリケーションに対して,相互運用性を提供す る』事を目的に W3C で作成されました。 る』 W3C:REC-rdf-syntax-19990222 http://www.w3.org/TR/REC-rdf-syntax 邦訳 TR X 0022:1999 資源記述の枠組み(RDF) モデル及び構文規定 http://www.y-adagio.com/public/standards/tr_rdf_ms/t oc.htm これを応用して、ニュースサイトのヘッドライン配信や、 Blog(ブログ)のサマリーなどに使用される、RSS (RDF Site Summary) が、注目を集めています。 今回は、RDF/RSS の利用方法について、実際に、 RSS リーダーを入手し、RDF フォーマットデータを作成し てみたいと思います。 1.SharpReader 1.SharpReader の入手 今現在、フリーで日本語表示可能な有名所のリーダ ーとして、『 『SharpReader』 SharpReader』があります。.NET Framework 上で動作するので、ちょっと手間ですが、インターネット 上に資料が豊富なので、これにします。 ・ .NET Framework 再頒布パッケージ(20.4 MB) dotnetredist.exe ・ Microsoft .NET Framework 1.0 Service Pack 2 NDP10_SP_Q321897_Ja.exe の両方を入手しておきます。(2003 年9月13現在) http://www.microsoft.com/japan/msdn/netframew ork/downloads/sdk.asp ・ SharpReader SharpReader0921.zip http://www.sharpreader.com/ ダウンロード自身は、非常に簡単です。 2.インストール SharpReader は、.NET Framework 上で動作します。 まずは、.NET をインストールし、SP2 を当ててから、 SharpReader をインストール(ZIP の解凍)します。 1) .NET Framework ダウンロードした、dotnetredist.exe を、 ダブルクリックするだけです。 2) Service Pack 2 これも、ダウンロードファイルを、ダブルクリック するだけです。 3) SharpReader ダウンロードした、SharpReader0921.zip を 解凍後、所定のフォルダに置いてください。 3.設定 使い方は、google 等でホームページを探せば、日本語 解説記事が見つかると思いますので、参考にしてください。 http://www.atmarkit.co.jp/fdotnet/special/rss/rss_01.html 注意点としては、デフォルトのフォントでは日本語表示で きませんので、日本語フォントを指定しなおしてください。 Tools | Options の Font タブで、設定できます。 4.『RDF 4.『RDF』ファイルの作成 RDF』ファイルの作成 RDF ファイルの作成は、M. Kanzaki (神崎正英)氏のホー ムページで丁寧に解説されています。 http://www.kanzaki.com/docs/sw/rss.html 今回は、試験的に、この 『はやぶさ通信』の更新情報を 記述してみたいと思います。 データとしましては、『はやぶさ通信 Vol 09号』でも取り 上げています、『Oracle 『Oracle XDK形式』で記述します。 XDK形式』 この形式のデータは、判りやすい(加工がしやすい)のと、 直接 ORACLE データベースとファイルのやり取りができる のが魅力です。 ヘッダー情報など、同一データが各カラムに混在して、 冗長になっていますが、扱いやすさと拡張性を優先して 今回は、設計しています。 【更新情報 (tecInfo.xml)】 <?xml version="1.0" encoding="Shift_JIS"?> <ROWSET> <ROW NUM="1"> <CLASSIFY>『はやぶさ通信』</CLASSIFY> <TITLE>はやぶさ通信 Vol 09号</TITLE> <MODIFYDATE>20021202</MODIFYDATE> <AUTHOR>TARO HAYABUSA</AUTHOR> <subject>『はやぶさ』の【心】について </subject> <TEXT>『はやぶさ』とは、JSP で開発する Web ア プリケーションフレームワークの総称です。</TEXT> <FILENAME>tec-hayabusa-001.pdf</FILENAME> </ROW> <ROW num="2"> ・・・・・・ </ROW> ・・・・・・ </ROWSET> 2003/09/15 【RDF 情報(tecInfo.rdf)】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="RDFWeb.xsl"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://purl.org/rss/1.0/" xml:lang="ja"> <channel rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tecInfo Info.rdf"> Info.rdf"> <title>『はやぶさ通信』更新履歴一覧</title> <link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link> <description>『はやぶさ通信』更新履歴一覧</description> <image rdf:r rdf:resource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif" esource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif" /> <dc:creator>HAYABUSA Sectional Committee</dc:creator> <items> <rdf:Seq> <rdf:li rdf:resource="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tecrdf:resource="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusahayabusa-001.pdf" /> <rdf:li rdf:resource=" ・・・・・・・・” ・・・・・・・・” /> ・・・・・・・・ </rdf:Seq> </items> </channel> <image rdf:about="http://www.geocities.jp/hayabusa_labo/images/hybs.gif"> <title>『はやぶさ通信』更新履歴一覧</title> <link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link> <url>http://www.geocities.jp/hayabusa_labo/images/hybs.gif</url> </image> <item rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tecrdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusahayabusa-001.pdf" > <title>はやぶさ通信 Vol 01号</title> <description>『はやぶさ』とは、JSP で開発する Web アプリケーションフレームワークの総称です。 </description> <link>http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusa-001.pdf</link> <dc:date>2002-12-02</dc:date> <dc:subject>『はやぶさ』の【心】について</dc:subject> <dc:creator>TARO HAYABUSA</dc:creator> </item> <item rdf:about=" rdf:about="・・・・・ bout="・・・・・ “> ・・・・・・・・ </item> </rdf:RDF> 対応付けや、各種要素(XML タグ)の説明は、他の文 献を調査いただきたいと思います。 更新情報 (tecInfo.xml)から、RDF 情報(tecInfo.rdf)を 作成するには、XSLT を利用して変換します。 同様に、RDF 情報(tecInfo.rdf)を Web で表示させる場合 は、さらに、XSLT で、HTML に変換すれば、簡易的に表示 させることが可能(※)になります。 ※ ただし、IE5、IE5.5 では、MSXML3 が必要です。 IE6 では、そのまま、XSLT が使用できます。 2003/09/15 【XML⇒RDF 変換(tecInfo.xsl)】 <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns="http://purl.org/rss/1.0/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" > <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> <xsl:variable name="classify" select="/ROWSET/ROW/CLASSIFY" /> <xsl:template match="/"> <xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="RDFWeb.xsl"</xsl:processing-instruction> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja"> <xsl:call-template name="CHANNEL" /> <image rdf:about="http://www.geocities.jp/hayabusa_labo/images/hybs.gif"> <title><xsl:value-of select="$classify" />更新履歴一覧</title> <link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link> <url>http://www.geocities.jp/hayabusa_labo/images/hybs.gif</url> </image> <xsl:call-template name="ITEM" /> </rdf:RDF> </xsl:template> <xsl:template name="CHANNEL"> <channel rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tecInfo.rdf"> <title><xsl:value-of select="$classify" />更新履歴一覧</title> <link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link> <description><xsl:value-of select="$classify" />更新履歴一覧</description> <image rdf:resource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif"/> <dc:creator>HAYABUSA Sectional Committee</dc:creator> <items> <rdf:Seq> <xsl:for-each select="ROWSET/ROW"> <xsl:element name="rdf:li"> <xsl:attribute name="rdf:resource"> <xsl:value-of select="concat('http://www.geocities.jp/hayabusa_labo/hayabusa/tec/',FILENAME)" /> </xsl:attribute> </xsl:element> </xsl:for-each> </rdf:Seq> </items> </channel> </xsl:template> <xsl:template name="ITEM"> <xsl:for-each select="ROWSET/ROW"> <xsl:variable name="link" select="concat('http://www.geocities.jp/hayabusa_labo/hayabusa/tec/',FILENAME)" /> <xsl:element name="item"> <xsl:attribute name="rdf:about"> <xsl:value-of select="$link" /> </xsl:attribute> <title><xsl:value-of select="TITLE" /></title> <link><xsl:value-of select="$link" /></link> <dc:subject><xsl:value-of select="SUBJECT" /></dc:subject> <dc:date> <xsl:value-of select="concat(substring(MODIFYDATE,1,4),'-',substring(MODIFYDATE,5,2),'-',substring(MODIFYDATE,7,2))" /> </dc:date> <dc:creator><xsl:value-of select="AUTHOR" /></dc:creator> <description><xsl:value-of select="TEXT" /></description> </xsl:element> </xsl:for-each> </xsl:template> </xsl:stylesheet> 2003/09/15 【RDF⇒HTML 変換(RDFWeb.xsl)】 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/1999/xhtml" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" exclude-result-prefixes="rdf rss dc" > <xsl:template match="/"> <xsl:apply-templates select="rdf:RDF"/> </xsl:template> <xsl:template match="rdf:RDF"> <html xml:lang="ja" lang="ja"> <xsl:apply-templates select="rss:channel"/> <body> <h1><xsl:value-of select="rss:channel/rss:title"/></h1> <table border="1" cellpadding="1" cellspacing="1" frame="box" rules="all" summary="tecWeb" > <xsl:apply-templates select="rss:item"/> </table> <hr /> </body> </html> </xsl:template> <xsl:template match="rss:channel"> <head> <title><xsl:value-of select="rss:title"/></title> <link rel="stylesheet" href="../common/default.css" type="text/css" /> </head> </xsl:template> <xsl:template match="rss:item"> <tr class="row_0"> <td nowrap="nowrap"> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="rss:link"/></xsl:attribute> <xsl:attribute name="target">_subGamen</xsl:attribute> <xsl:value-of select="rss:title"/> </xsl:element> </td> <td nowrap="nowrap"><xsl:value-of select="dc:date"/></td> <td rowspan="2"><xsl:value-of select="rss:description"/></td> </tr> <tr class="row_1"> <td colspan="2" nowrap="nowrap"><xsl:value-of select="dc:subject"/></td> </tr> </xsl:template> </xsl:stylesheet> これらのファイルの関係を図に示します。 更新情報 (tecInfo.xml) XML⇒RDF 変換 (tecInfo.xsl) RDF 情報 (tecInfo.rdf) HTML ブラウザ RDF⇒HTML 変換 (RDFWeb.xsl) RSS は、規格そのものがまだ、ごたごたしていますが、面 白い技術だと思います。 サイトの更新履歴ばかりではなく、業務上のイベント発生 や作業依頼など、サイト(画面)への誘導に利用できないか、 検討していきたいと思っています。 はやぶさ通信 Vol 15 号 2003/09/15 はやぶさ推進委員会/はやぶさ連絡協議会 会社名および製品名は、各社の商標または登録商標です。
© Copyright 2024 Paperzz