私が設計したこの伝票綴.XMLのデータ形式を説明します。
まず、古典的にCOBOLのデータ部のように表現すれば、
|
以上のようになります。
一応、勘定の諸口の回数と商品の種類は3回以内とみなして、記述していますが、XMLの場合は、<借方>〜</借方>
や <貸方>〜</貸方> や <商品部>〜</商品部>
のように囲んでおけば、要素がないときは省略してもよいし、いくつもあるときには何回分でも並べることができます。
だから、逆にCOBOLの場合は、OCCURS句の回数指定を増やせば対応ができます。ただし、ネットワークの先の別の利用者が元の「OCCURS
3」のままで読み取ろうとすれば、レコードが正しく読みとれないエラーが発生するでしょう。この点で、COBOLのような固定長レコードは融通が利かないことが指摘できます。
次に伝票綴.XMLのデータ構造をグラフィック表現で表記してみます。
なお、独特の記号として、?は1回あるかないか、+は1回以上ある、*は0回以上あることを示します。また、->は下の要素が左から順番通りに出てくることの指定です。そして、何も記号をつけていない要素は必ず1回ということを意味します。
以上がグラフィック表現です。COBOLの表記が各フィールド名を下の行に書き加えていくのに対して、XMLのグラフィック表現は、各要素を横に並べて、線で結んで階層構造を表現します。
そして、この各要素の親子関係を考慮しながら、データの抽出や整列や集計をしていきます。
そして、第3番目にXML文書の文書型定義DTD(Document Type Definition)の記述を挙げます。XML文書はタグの入れ子に矛盾がなければ、このDTDがなくても使えますが、一応、COBOLの記述と対比してみると興味深いと思います。
|
以上です。このDTDの終わり4行分の属性指定は、いずれ伝票の形式を5伝票制に対応するように変形できるようにするために追加しています。
また、借方と貸方の形式が同一ということは、仕訳単子という集合要素を決めて、その属性に借方か貸方を示す貸借区分を付加すれば、もっと簡潔になるはずです。
また、手形処理の要素は省略していますので、より汎用性を持たせるには、手形処理用の要素を組み込んだ方がよいでしょう。ただ、別に実用化するあてはないのですが。
これにより、具体的に取引の記録をXML形式で表記すると、下のような例になります。紫色の部分が伝票綴XMLで決めたタグです。HTMLに似て見えるでしょう。また、緑色の部分が個々のデータで、任意の値が入ります。はさむもののないタグを取り除いても、うまく働きます。
これは、「バーゲン本舗へ単価\150,0000のノートパソコン2台を当座預金振込で売上げた」という取引を表現しています。
XMLファイルのソースコードを表示してもらえば分かりますが、すべてのXMLファイルの内容は同じです。ただ、第2行目で指定しているスタイルシートを換えることで、編集方法の違う表記をします。データそのものにすでに集計表の足掛かりが用意されているのです。
試しにブラウザ上のURL表記の拡張子を(*.XML) から (*.XSL)に打ち換えてスタイルシートを表記してみれば、集計表示するために各項目の階層構造を厳密に表記しながら集計関数や整列の指定をしていることを見ることができます。
|
構想としては、伝票XML自動編集Webページを開発するつもりです。仕訳伝票風のWebページの各フィールドに入力すれば、伝票の下の枠に入力したとおりの1件分の伝票XMLが自動的に編集されて表示されるWebページです。JavaScriptを組み込めば、フロッピーディスクからでもブラウザに呼び出せて使えるでしょう。