作者: 閑舎
日時: 2003/11/06(14:20)
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/