朝顔日記

ややこし更新システムを更新する

2003-11-24

昨日のxsltはどうもテスト不十分で駄目だったので書き換えました。今度もおかしいかもしれませんが、とりあえずいいように見えています。:p)

気を取り直して、続きです。

さて、ややこし更新システムには問題点があります。renketu.xsl と renketu.bat の中で、具体的なファイルを指定しているためにこのままでは毎月これらのファイルを書き換えなければなりません。それは面倒くさいのでこないだ、続・日記更新の半自動(?)化 で使ったのと同じように、perlスクリプトで、これらのファイルを毎度生成することにしました。


#!perl
@date = localtime(time);
$this_month=sprintf("%02d%02d",$date[5]-100,$date[4]+1);
$prev_month = sprintf("%02d%02d",$date[5]-100,$date[4]);

#renketu.xsl 生成
open(FILE,">renketu.xsl");
print FILE "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n";
print FILE "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n";
print FILE "xmlns=\"http://www.w3.org/1999/xhtml\"\n";
print FILE "xmlns:x=\"http://www.w3.org/1999/xhtml\"\n";
print FILE "exclude-result-prefixes=\"x\" >\n";
print FILE "<xsl:output method=\"xml\" version=\"1.0\" encoding=\"Shift_JIS\"\n";
print FILE "indent=\"yes\"\n";
print FILE "omit-xml-declaration=\"no\"/>\n";
print FILE "<xsl:template match=\"/\">\n";
print FILE "<html>\n";
print FILE "<head>\n";
print FILE "<title>先月分と今月分</title>\n";
print FILE "</head>\n";
print FILE "<body>\n";
print FILE "<xsl:copy-of select=\"x:html/x:body/x:div/x:div\" />\n";
print FILE "<xsl:copy-of select=\"document('$this_month.html')/x:html/x:body/x:div/x:div\" />\n";
print FILE "</body>\n";
print FILE "</html>\n";
print FILE "</xsl:template>\n";
print FILE "</xsl:stylesheet>\n";
close(FILE);

#renketu.bat 生成
open(FILE,">renketu.bat");
print FILE "Msxsl -xe $prev_month.html renketu.xsl > renketu.htm\n";
print FILE "Msxsl renketu.htm sort.xsl > sort.htm\n";
print FILE "Msxsl sort.htm latest.xsl > latest.html\n";
close(FILE);

これを呼び出し、さらに renketu.bat を実行するのバッチファイルが、latest.bat で以下のような内容です。


@echo off
cd c:\web\noasobi\diary
Perl latest.pl
call renketu.bat

これで、日記を書くときは diary.bat を実行して、サーバから今月分のファイルをダウンしてきてエディタで開き、書き終わったら latest.bat を実行すると最新版の日記が出来上がり、rss.bat を実行すると、最新の日記から RSS を生成後、自動でサーバにアップしてくれるという自動化が完成したはずです。

私は、素の html をエディタで書くのは苦にならないというか、どちらかといえば趣味だし、CMSなどの各種ツールの独特の記法を覚えるのがいやなので、目指せ!はてな日記より簡単に更新できるシステムはこれで完成したということにしておきます。

というわけで、やっぱり似非Blog(何)で、行きます。:p)

「ややこし更新システムを更新する」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事へのツッコミ

1: yuu (2003-11-27T20:35:22+09:00)
>各種CMTツールなんかの
CMTというのは何の略でしょうか。CMSじゃないですよね。
2: のり (2003-11-27T22:08:24+09:00)
CMSなToolという私の脳内造語ですた。(汗
直しておきます。ご指摘感謝。
3: のり (2003-11-27T22:13:54+09:00)
月別のファイルは直しましたが、最新版は次回更新時ということで。
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2003/11/diary_031124a.html