kikwai@... (機械伯爵) さん wrote.
> とっても便利そうなのですが、スクリプトじゃだめ
> なのかな、というのが気になります。
>
> 例えばAWKスクリプトならほとんどどんな処理系でも
> 動きますから。
XML で問題なのが文字コードです。いろいろな文字コード、特に Unicode を
AWK は簡単に扱えないのがつらいです。となると Perl (や Ruby)で Jcode.pm
を入れて、ということも考えられます。ただ Perl 自体が大きいので重いこと、
タグの前処理を組み込むとさらに重くなること、Perl 自体を日常的に扱える人
が少ないこと、タグの扱い方が簡単とは言えないこと、など考え、自作してみよ
うと思いました。
> プログラムに無縁の方々にも、というのであれば、
> 制御言語の設計がかえって難しそうなのですが・・・
> それともインターフェイスは対話式なんでしょうか。
最終的なインターフェースは GUI にしたいですが、スクリプト部分はやはりエ
ディタで書く必要があります。でも、スクリプトは簡単で、
<書式> {
s/.*//;
}
というようにして、書式タグ以下全削除でき、
<数量> {
$num = $_;
}
<単価> {
$price = $_;
$sum = $sum + $price * $num;
}
で単価合計が計算でき、
<見積書> {
s/担当者>/担当者>\n <単価合計>$sum<\/単価合計>/;
s/ *<\/?表書>\n//;
}
にて必要な項目の挿入や削除ができるだろう、と思うわけです。これらを組み合
わせたスクリプト hoge.xrc をどこかに置いておき、
xmlrec -sT hoge.xrc seikyu.xml > ryoshu.xml
などと実行、領収書のできあがりです。文法は AWK に似たタグ駆動のアドレス
部分、加減乗除と代入、s///; による置換でほとんどまかなえ、一応、if 文、
while 文程度は使えるようにしようかな、と思うくらいで、きわめてシンプルな
ものです。覚えることはほとんど『ない』でしょう。
全文書のパースは AWK とちがい複数回できるようにし、その都度動的にタグ
構造を変更します。パースの単位は改行や空行でなく、開始タグから終了タグま
でを基本とします。こういった点で、まあ XML 専用超小型スクリプト言語、と
考えています。
--
本田博通(閑舎)
テキストとスクリプトの http://rakunet.org/TSNET/