先月中に変換用のスタイルシートをある程度のかたちにまで仕上げたかったのですが、 document
関数の使い方がいまいちわからなかったので、今のような不恰好なかたちに相成りました。や、単一の文書読み込みそして結果に反映させることは出来たのですが、それを任意の数だけ最新部分 (/home
) に切り抜くことや、たくさんの文書を次々に読み込むことなどがイマイチ……という。←あまり気にしないでください。(考えてみたら document
関数とは関係なかったですね、この問題)
http://klezer.s53.xrea.com/_no/200411a#d02h23m46
納期に間に合わなかったとはいえど、それでも少しは成長したようで、 Xalan-J の拡張である、単一のソース文書及び単一の変換用スタイルシートから (変換過程に於いて) 複数の文書の生成というのはなんとなくではありますが、理解は出来ました。興味のある方は Redirect を参照していただければすぐにわかるかと思います。以下、自分用メモとして。
<?xml version="1.0"?>
<document>
<foo>
<para>Guyya</para>
</foo>
<bar>
<para>Mush</para>
</bar>
<baz>
<para>Ortiga</para>
</baz>
</document>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
extension-element-prefixes="redirect">
<xsl:template match="foo|bar|baz">
<xsl:param name="Extension">
<xsl:text>xml</xsl:text>
</xsl:param>
<redirect:write select="concat(local-name(),'.',$Extension)">
<xsl:apply-templates />
</redirect:write>
</xsl:template>
</xsl:stylesheet>
これによって、 foo.xml
, bar.xml
, baz.xml
の 3 つが生成されます。出力された文書の内容は、それぞれのものになります。ちなみに extension-element-prefixes
属性でもってきちんと名前空間接頭辞を除去するようにしていないと上手いこと行かないようでした。
で、 redirect:write
要素のselect
属性の値で選択されたものが生成されるファイル名になるのですが、これって決め打ち出来ないのでしょうか。たとえば、 hoge.xml
として出力したいのであれば、 select="hoge.xml"
とすれば済むようになど。その他、生成する文書を現在とは異なったディレクトリに出力するなど。出来ないのかな、と思いまして。
また考えナシに書いてみました。いつまで経っても理解ができません。
http://klezer.s53.xrea.com/_no/200411a#d03h19m41
document
関数がわからない月というか、上旬・中旬・下旬をまたいでしまうと、/home に出力される記事の数が不恰好になってしまうこともあり、それを解決しようと試みました。で、当初は変換過程に於いて「足りなかったら過去から必要な分だけ取り込む」という方法で解決しようとしたのですが、これがどうしても出来ませんでした。それならばというわけで、アプローチを変え、まず最初に過去のそれと現行のそれを繋ぎひとつ大きな XML 文書を生成し、そこから変換すれば何とかなるのではと思いついたわけです。
手元では上手くいき、キャッキャと騒いでいたのですが、しかしそれをサイトの方にも記録しておこうと思い、再現をしようと試みたのですが、これがどうにも上手くいかず。疑問点が湧いたらに目を通せば大半のことは解決するのですが、しかし今回ばかりは仕様に目を通したところでさっぱり理解ができないこともあり、解決せず。参りました。正直、「何言ってんのかわかんない」状態。涙腺から脳味噌が零れ落ちました。
取り敢えず手元の方では上手くいき、懸念が払拭されたので良しとしておきます。今は。しかし根本的な流れを変えなければダメなのだろうなと思ったり。 link 要素とか少しアレ気味だし。
http://klezer.s53.xrea.com/_no/200411a#d07h16m59
理解がままならなかったとは言えど、 document
関数を用いて生成した (いくぶん無駄な) 文書をそのままにしておくのは勿体無いと感じ、どうにか再利用できないものかと考えてみたところ、 RSS を生成するのが妥当かなと思い立ち、試験的に RSS を配信してみることにしました。
変換用スタイルシートを書いている当初、RSS の仕様がよくわからなかったので主に日記系サイトで配信されているそれを参考にして作ってみました。しかし、やっとこさで作り上げて、ふと詳しく説明しているところがあったなと思い出し (RSS(RDF Site Summary)によるサイト情報の要約と公開) 、目を通してみたところ、どうも自身が思い描いていたそれとは異なっている様子でした。しかし今更書き直すのもいくらか億劫なので、このままで。
要約文 (description
要素) は最初のパラグラフを切り抜いて生成しているだけなので、妥当ではないかもしれないです。あまり切り抜くことを意識して書いてもおらず。あと、所定の文字数より多かった場合、以降を切り捨てているのですが、このとき使う文字列は何が妥当なのかが疑問だったり。「...」か「……」かあるいは「――」か、など。そもそも使う人がいるのかどうか。
以下余談です。
先日「はてな」から住所の登録をしてくださいとのメールが届き、しかしアンテナしか使っていない人間からすると釈然としない部分が多々あり、退会を考えているのですが、そうすると巡回に手間がかかるようになるかもと予測がたつわけで、どうしようかと代替案を考えたところ、 RSS を使えばなんとかなるかもしれないなどと思いついたのでした。 RSS の URI を列挙し document
関数で取り込み、そしてそれをクライアントサイドで変換させ、というように。 RSS を配信していないサイトでも XHTML 文書であればどうにか出来そうです (そこまでするかという) 。素直に RSS リーダを使えという感じがしないでもないですが。
追記。更新情報を参照してみたらだうんろーどを促された。どうしろと。更に追記。直せた。っぽ?
http://klezer.s53.xrea.com/_no/200411a#d07h18m38