2005 年 6 月の履歴(もしくは日誌)


2005 年 6 月

6 月 7 日

Google Sitemaps の Time Zone offset まわりの不具合

すげー簡単なんて言い放ちましたが,じつは昨日の XSLT スタイルシートで RSS 1.0 から ML Sitemap Format のファイルへ変換して Google Sitemaps に登録してみましたが,Invalid Date って言われてしまいました.これはどうも Google Sitemaps 側の不具合らしいです.

一部を引用します:

Sitemap Protocolを読むと、lastmod要素のタイムスタンプはISO 8601形式(Date and Time Formats)で指定することになっていますが、実際にはISO 8601形式のすべての時刻表現を受け付けてくれるわけではないようです。私の気が付いた限りでは、以下のようにLocal Time + Time Zone offset (2005-06-04T09:24:00+09:00)で指定しようとすると、Google Sitemapsは「Invalid Date」と判定するようです。

引用終わり.

まさにこの問題のためにぼくが試した時も駄目でした.

この不具合は Google 側が修正対応してくれるのだろうと期待していますが,とりあえずはざっくり時刻情報を無くしてしまえばいいかなぁ,Google からの情報収集が数時間おきにくる訳ぢゃないんだから.

そういう訳で XSLT を一部修正してみます.

 <xsl:template match="rss:item">
    <url>
        <loc><xsl:value-of select="rss:link"/></loc>
        <lastmod><xsl:value-of select="substring-before(dc:date,'T')"/></lastmod>
    </url>
 </xsl:template>

時刻情報を削って日付だけにするのではなく,時差を計算して世界標準時に変換するなら EXSLT の Dates and Times を使うことになるでしょうね.

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050607n1 TrackBack

6 月 6 日

dc.date のある RSS 1.0 から XML Sitemap Format へ XSLT

やっぱりさっそく XSLT のスタイルシートを書いてみました.RSS 1.0 に dc.date で 1 つの記事の投稿した日時の情報が入っている場合に,URI と更新日時だけからなる単純な XML Sitemap Format へ変換します.

<?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.google.com/schemas/sitemap/0.84"
  xmlns:rss="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  exclude-result-prefixes="rdf rss dc"
>

<xsl:output method="xml" indent="yes" encoding="utf-8" /> 

 <xsl:template match="/">
    <xsl:apply-templates select="rdf:RDF"/>
 </xsl:template>

 <xsl:template match="rdf:RDF">
    <urlset>
        <xsl:apply-templates select="rss:item"/>
    </urlset>
 </xsl:template>

 <xsl:template match="rss:item">
    <url>
        <loc><xsl:value-of select="rss:link"/></loc>
        <lastmod><xsl:value-of select="dc:date"/></lastmod>
    </url>
 </xsl:template>

</xsl:stylesheet>

あははは.すげー簡単ですね.

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050606n2 TrackBack

XML Sitemap Format と RSS (RDF Site Summary)

Google から Google Sitemaps という新しいサービスが発表されました.正式なサービスというよりは,まだ実験的な意味合いもあるベータ版という位置づけです.
これまでは Google の検索エンジン用の情報を収集しているソフトウェアプログラム (ロボット もしくは クローラ)は,勝手にやってきていろいろ収集して行ったので,収集して欲しいところを収集してくれないという取りこぼしがあったのですが,今後はもっとうまく動くようになりそうです.Google Sitemaps はこちら側から積極的に「こことここを収集してね.これとあれならこっちが重要ですよ.このファイルは毎週更新するけど,こっちは月に一回くらいしか更新しないですよ.」っていう情報を登録しておくことができて,Google のロボットが情報を収集する時にそれを参照するという仕組みです.すばらしい.

で,簡単には収集してほしい URL をテキストファイルに列挙しておけば良いようですが,もっと詳細な情報を登録するには決められた書式である XML Sitemap Format の XML ファイルを作成して登録する必要があるそうです.

ぼくは以前からサイトマップ相当のメタ情報を RDF で用意しておこうと思って RSS 1.0 形式で用意していたのです.これから余分な情報を削って,XML Sitemap Format に変換すれば良い訳です.XSLT で簡単に変換できそうです.でも XML Sitemap Format ぢゃなくて RSS 1.0 などの RDF/XML だったら,すでにあるものが使いまわせたりしたんだろうになぁ.

おのひろきおんらいんの「履歴もしくは日誌」については,1 年分の RSS 1.0 ファイルを生成しています.これを で XML Sitemap Format に変換して登録すればいいのだなって思いました.複数の sitemap ファイルがある場合は,sitemap_index.xml というファイル名でサイトマップインデックスファイルを用意すれば良いようです.だったら「履歴もしくは日誌」については,最新のものと 1 年分まとめたのものを過去の何年分を用意して,さらにおのひろきおんらいんの他のコンテンツについての sitemap ファイルも作っておけばいいかな.

「履歴もしくは日誌」の個別の記事としての URI は例えば http://onohiroki.cycling.jp/weblog200506.html?d20050606n1_ となるのですが,これが Google ではうまく拾われていなくて,代わりに http://onohiroki.cycling.jp/weblog200506.html が収集されているのです.sitemap ファイルを利用すれば,個々の記事が拾われるようになるかな?

なんにしても XSLT で RSS 1.0 を sitemap に変換すれば良いのですから,そんなに難しいことではありません.明日にでもやってみようと思います.

Google Sitemaps については,「絵文録ことのは」で「よくある質問」の日本語訳が公開されていて,とても参考になりました:

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050606n1 TrackBack