XSLTその後

XSLTの練習をかねて、いろんなスクリプトを書いてみる。今書いているのは、gladeのXMLをHTC(私の定義したHTMLのマクロ言語)に変換するもの。

XSLTの変数は一度しか代入ができない。と言うか、定義はできるが代入はできない。配列なんてものもない。厳密な意味でのループもない。となる と、GnumericのXMLみたいな「テーブル状のものを想定して、そこの値が行と列番号と共に入っている」といったものを処理しようとすると、頭を抱 えることになる。

最初は「できないんだ」と思っていたのだが、XSLTは再帰ができるらしい。再帰ができるということは、もちろんループが作れるということだから、どうとでもなる。

ということを発見した時には「そうかその手があったか」と思うと共に、「Lisperならいざ知らず、普通のカタギの言語しか使ったことのない人 には使えないじゃん」とも思った。潔い仕様だとは思うが、XSLTってそういった理論がどーこーな言語じゃなくて、カタギな人がガンガンXMLを処理する ために作られた言語じゃないのかしらん。

木の処理に再帰というのは、本質的とも言えるのでカタギでも納得してくれるだろうが、たかがループにまで再帰を使えと言ったら、「なんで?」という反応をするのが普通ではないだろうか。