さらにやり込んでみましたが、色々辛い部分が。まず、スクリプト中の文字列定数とか perl ブロック内の正規表現とかに日本語が入ってるとパースエラーになることがあります。スクリプトが長くなってくると今まで大丈夫だったのが突然エラーになったり。書く場所を変えるとなおったりもするのですが、それがかえって怪しいような。。。
encoding, query-encoding を utf-8 にしてもダメです。perl ブロックに use utf8 とか書いてもダメ。インタラクティブモードでは基本的に大丈夫なんですが。簡単な回避方法はないですが、日本語の文字列とかは外部のXMLファイルとかから読み込んで使う仕組みにするといいみたい。最初からそういうつもりで書いたほうがよさげです。
あと、xslt コマンドは XSLT スタイルシート自体のエラーを報告するときにスタイルシート上のエラー発生位置を表示しません。いきなり Invalid expression とか出てきてもわけわかんなくて、ていうか xsh 側のエラーかと思ってハマりました。。。
あと、xslt の出力を html モード(:F html オプション)で save するとまたしても日本語がユニコード文字参照に化けてしまいました。html モードを使わずに XHTML を出力するスタイルシートを書いて xml モード(デフォルト)で save しましょう。