[ADOS] ADOS Developer's Site - XML Stadium
ADOS Company slogan - XML Total Solution

【ラピッドプロトタイピングのコツ】


XMLを活用したシステムを素早く構築するためのデータモデリング技法


多くのシステムで有効な3階層のネスト構造

多くのデータは、子要素のみが内容を持つ、3階層のネスト要素として表現でき、多くのシステムではこのデータ構造のみで事足りることがしばしばあります。

国.xml

<?xml version="1.0"?>
<table xmlns="urn:test:1.1">
	<row>
		<col1>日本</col1>
		<col2>Japan</col2>
		<col3>東京</col3>
	</row>
	<row>
		<col1>フランス</col1>
		<col2>France</col2>
		<col3>パリ</col3>
	</row>
</table>
rp01.jpg

3階層のネスト構造を定義する汎用的なExcel用XMLスキーマ

cols.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="table">
   <xs:complexType>
     <xs:sequence>
       <xs:element minOccurs="0" maxOccurs="unbounded" ref="row"/>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

 <xs:element name="row">
   <xs:complexType>
     <xs:sequence>
       <xs:element ref="A"/>
       <xs:element ref="B"/>
       <xs:element ref="C"/>
       <xs:element ref="D"/>
       <xs:element ref="E"/>
       <xs:element ref="F"/>
       <xs:element ref="G"/>
       <xs:element ref="H"/>
       <xs:element ref="I"/>
       <xs:element ref="J"/>
       <xs:element ref="K"/>
       <xs:element ref="L"/>
       <xs:element ref="M"/>
       <xs:element ref="N"/>
       <xs:element ref="O"/>
       <xs:element ref="P"/>
       <xs:element ref="Q"/>
       <xs:element ref="R"/>
       <xs:element ref="S"/>
       <xs:element ref="T"/>
       <xs:element ref="U"/>
       <xs:element ref="V"/>
       <xs:element ref="W"/>
       <xs:element ref="X"/>
       <xs:element ref="Y"/>
       <xs:element ref="Z"/>
       <xs:element ref="AA"/>
       <xs:element ref="AB"/>
       <xs:element ref="AC"/>
       <xs:element ref="AD"/>
       <xs:element ref="AE"/>
       <xs:element ref="AF"/>
       <xs:element ref="AG"/>
       <xs:element ref="AH"/>
       <xs:element ref="AI"/>
       <xs:element ref="AJ"/>
       <xs:element ref="AK"/>
       <xs:element ref="AL"/>
       <xs:element ref="AM"/>
       <xs:element ref="AN"/>
       <xs:element ref="AO"/>
       <xs:element ref="AP"/>
       <xs:element ref="AQ"/>
       <xs:element ref="AR"/>
       <xs:element ref="AS"/>
       <xs:element ref="AT"/>
       <xs:element ref="AU"/>
       <xs:element ref="AV"/>
       <xs:element ref="AW"/>
       <xs:element ref="AX"/>
       <xs:element ref="AY"/>
       <xs:element ref="AZ"/>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

 <xs:element name="A" type="xs:string"/>
 <xs:element name="B" type="xs:string"/>
 <xs:element name="C" type="xs:string"/>
 <xs:element name="D" type="xs:string"/>
 <xs:element name="E" type="xs:string"/>
 <xs:element name="F" type="xs:string"/>
 <xs:element name="G" type="xs:string"/>
 <xs:element name="H" type="xs:string"/>
 <xs:element name="I" type="xs:string"/>
 <xs:element name="J" type="xs:string"/>
 <xs:element name="K" type="xs:string"/>
 <xs:element name="L" type="xs:string"/>
 <xs:element name="M" type="xs:string"/>
 <xs:element name="N" type="xs:string"/>
 <xs:element name="O" type="xs:string"/>
 <xs:element name="P" type="xs:string"/>
 <xs:element name="Q" type="xs:string"/>
 <xs:element name="R" type="xs:string"/>
 <xs:element name="S" type="xs:string"/>
 <xs:element name="T" type="xs:string"/>
 <xs:element name="U" type="xs:string"/>
 <xs:element name="V" type="xs:string"/>
 <xs:element name="W" type="xs:string"/>
 <xs:element name="X" type="xs:string"/>
 <xs:element name="Y" type="xs:string"/>
 <xs:element name="Z" type="xs:string"/>
 <xs:element name="AA" type="xs:string"/>
 <xs:element name="AB" type="xs:string"/>
 <xs:element name="AC" type="xs:string"/>
 <xs:element name="AD" type="xs:string"/>
 <xs:element name="AE" type="xs:string"/>
 <xs:element name="AF" type="xs:string"/>
 <xs:element name="AG" type="xs:string"/>
 <xs:element name="AH" type="xs:string"/>
 <xs:element name="AI" type="xs:string"/>
 <xs:element name="AJ" type="xs:string"/>
 <xs:element name="AK" type="xs:string"/>
 <xs:element name="AL" type="xs:string"/>
 <xs:element name="AM" type="xs:string"/>
 <xs:element name="AN" type="xs:string"/>
 <xs:element name="AO" type="xs:string"/>
 <xs:element name="AP" type="xs:string"/>
 <xs:element name="AQ" type="xs:string"/>
 <xs:element name="AR" type="xs:string"/>
 <xs:element name="AS" type="xs:string"/>
 <xs:element name="AT" type="xs:string"/>
 <xs:element name="AU" type="xs:string"/>
 <xs:element name="AV" type="xs:string"/>
 <xs:element name="AW" type="xs:string"/>
 <xs:element name="AX" type="xs:string"/>
 <xs:element name="AY" type="xs:string"/>
 <xs:element name="AZ" type="xs:string"/>
</xs:schema>

Excelの列名をそのままXML要素名に使用しています。プロトタイピング中は、Excelシートの表示と同期がとれるので、非常に便利です。列名要素("A"〜"AZ")は、必要に応じて減らしたり増やしたりしてください。

具体的なプロトタイピング例(海外の自動車データをXMLシステム化)

プロトタイピング用データ

rp02.jpg

rp03.jpg

データが持っている項目名

	Mfr Cd
	Mfr Name
	Engine Family
	EF Sys#
	Evap Family
	EvF Sys#
	Division
	Carline
	ECS-Ev
	Displ
	Tran
	ETW
	Ax Ratio
	Dyno HP
	Target Coeff A
	Target Coeff B
	Target Coeff C
	Set Coeff A
	Set Coeff B
	Set Coeff C
	Tst Prc
	Tst Proc Desc
	Fuel Typ
	Fuel Type Description
	Sales Area
	U Life
	Emission
	Cert Level
	Standard
	Tier
	Mult DF
	Add DF

列名と項目名の対応を使って管理

 A	Mfr Cd
 B	Mfr Name
 C	Engine Family
 D	EF Sys#
 E	Evap Family
 F	EvF Sys#
 G	Division
 H	Carline
 I	ECS-Ev
 J	Displ
 K	Tran
 L	ETW
 M	Ax Ratio
 N	Dyno HP
 O	Target Coeff A
 P	Target Coeff B
 Q	Target Coeff C
 R	Set Coeff A
 S	Set Coeff B
 T	Set Coeff C
 U	Tst Prc
 V	Tst Proc Desc
 W	Fuel Typ
 X	Fuel Type Description
 Y	Sales Area
 Z	U Life
AA	Emission
AB	Cert Level
AC	Standard
AD	Tier
AE	Mult DF
AF	Add DF

PluxisでXML対応付けをする

XML対応付け(マッピング)は、ルート要素(table 要素)をシートにドラッグするだけで完了。
その結果、各項目とXML要素名とが対応付けされます。

rp04.jpg

PluxisでXMLファイルを出力

rp05.jpg
<?xml version="1.0" standalone="yes"?>
  <table>
	<row>
		<A>30</A>
		<B>Ford Motor Company</B>
		<C>7FMXK04.66RA</C>
		<D>1</D>
		<E>7FMXR0265GAS</E>
		<F>1</F>
		<G>FORD</G>
		<H>E250 ECONOLINE 2WD</H>
		<I>102</I>
		<J>4.6</J>
		<K>L4 LOCK-UP/AUTOMATIC/4-SPEED</K>
		<L>7000</L>
		<M>4.1</M>
		<N>35</N>
		<O>73.42</O>
		<P>0.7102</P>
		<Q>0.08574</Q>
		<R>32.192</R>
		<S>0.46905</S>
		<T>0.08676</T>
		<U>21</U>
		<V>FED FUEL 2 DAY EXH (BUTANE LOAD)</V>
		<W>61</W>
		<X>TIER 2 UNLEADED</X>
		<Y>FA</Y>
		<Z>120</Z>
		<AA>CO</AA>
		<AB>1.5</AB>
		<AC>7.3</AC>
		<AD>HDV</AD>
		<AE>1</AE>
		<AF>0.93</AF>
	</row>

    …(中略)

  </table>

PluxisでCSVファイルを出力

rp06.jpg

列を絞ったブックを用意するだけで簡易フィルタツールが完成

rp07.jpg

rp08.jpg

さらなる機能拡張も

  • 簡易検索システムのプロトタイピング
  • データ更新系とデータ検索系を分離したプロトタイピング
  • 列名のXML要素を、実際の項目名に変換する仕組み
  • DB2などのXMLデータベースと連携する仕組み
  • 列名(変数)は実データ項目名を抽象化しているので、本格的なオントロジー(セマンティックス)アプローチへの展開も可能

添付ファイル: filerp08.jpg 1364件 [詳細] filerp07.jpg 1239件 [詳細] filerp06.jpg 1328件 [詳細] filerp05.jpg 1318件 [詳細] filerp04.jpg 1304件 [詳細] filerp03.jpg 1284件 [詳細] filerp02.jpg 1223件 [詳細] filerp01.jpg 1213件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Thu, 19 Jun 2008 11:52:12 JST (5783d)

Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved.