Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

ExelデータをXMLにマッピングしたい

■ ExelデータをXMLにマッピングしたい

いかにXMLファイルが「人間にもコンピュータにも扱いやすい」言語であるとは言え、エンドユーザにXMLを直接(しかも正確に)テキストエディタなどから入力させることには、やはり無理があります。また入力の効率性といった観点からも現実的ではないでしょう。

そこで、ここでは代表的な表計算ソフト「Exel」で作成した注文書票を、XML文書で出力する手法を紹介します。こうしたツールを用意しておくことで、編集では使い慣れたExelで、システムとのやりとりを行う場合はXMLでという、適材適所の使い分けができるようになります。

今後こうした仕組みが増えていくことで、XMLはよりユーザの目から隠されていくことになると思います。しかしそれは、システムとシステムとを結びつけるという、本来黒子的な役割を担ったXMLの本質的なありかたなのではないでしょうか。

■ ポイント

Excel帳票からXMLファイル(result.xml)を生成する際、各セルの内容をXMLのどの要素にマッピングするかという情報変換をtransfer.xmlに記述することにします。
プログラム本体はあくまで変換情報はもたず、いわゆる「変換エンジン」として設定情報を読み取り、XMLファイルを生成する機能だけをもちます。

変換情報と変換ロジックを分割することの有効性は、いまさら言うまでもないでしょう。情報種別ごとの分離は、まさに昨今の処理の多層化やモジュール化で表されているものでもあります。

しかし、各種情報を分離した時に意外と陥りやすい罠というのが、情報の複雑化です。
ロジックの中に組み込まれていた時にはコンパクトにまとまっていた情報が、切り出した途端に肥大化してしまうというのは、よくあることのようです。特にXMLは、どのような形態でも柔軟にとれるだけに、設計者はあれもこれもと欲張ってしまいがちなのでしょう。

しかし、こうした複雑さはすべて、後にプログラム側で吸収するべき困難に直結します。
やりたいことを明確かつ簡潔にし、また、なにもかもXML側に取り込むのではなく、場合によっては個々のカスタム要件はロジックの中に残すつもりで設計をおこなうことが重要です。

■ 構造ファイル

ファイル名
概要
exel_xml.asp エクセルファイルの内容をXMLファイルに変換するためのASPスクリプト(起動ファイル)
transfer.xml エクセルからXMLへの変換方法を記述したXMLファイル
order.xml 入力元となるエクセルファイル(注文帳票)
result.xml エクセルからXMLへの変換結果を出力するXMLファイル

■ XMLの構造(transfer.xml)

ノード名
ノード型
ノードの概要
<map> 要素 変換設定XML(transfer.xml)のルート要素
<header> 要素 セル単位の変換を定義(帳票のヘッダ情報)
<body> 要素 列単位の変換を定義(帳票の本体情報)
start 属性 一覧変換の開始行
end 属性 一覧変換の終了行
<cell> 要素 変換情報を定義
<original> 要素 変換セル(<header>配下の場合)、もしくは変換列(<body>配下の場合)を定義
<transfer> 要素 変換後の要素名を定義
設定ファイル transfer.xml は、大きく分けて二つの部分から成り立っています。
帳票番号や記票者・発注者など、一帳票内に必ず一つしかないヘッダ部、そして、品番や単価などの帳票内に一覧表形式で示されている実データ部です。
ヘッダ部はセル一つに一要素が割り当てられているのに対し、一覧表部分は対象列に対して一要素が割り当てられています。

■ XMLの構造(result.xml)

ノード名
ノード型
ノードの概要
<result> 要素 変換結果XML(result.xml)のルート要素
<header> 要素 ヘッダ情報を定義
<data> 要素 一覧表示情報を定義
<注文No> 要素 注文No
<発注者> 要素 発注者
<注文日> 要素 注文日
<datum> 要素 個々の行情報を定義
<品番> 要素 商品番号
<品名> 要素 商品名
<単価> 要素 商品単価
<個数> 要素 商品の購入個数
設定ファイル transfer.xml に従って、エクセルから変換されたXMLファイルの例です。
<result>要素を固定のルート要素として、出力されます。
オリジナルの帳票や設定情報を変更することで、配下の要素群は変わります。(<header>, <data>, <datum>要素は固定)

■ exel_xml.asp

 

■ TIPS

 

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box