- 追加された行はこの色です。
- 削除された行はこの色です。
RIGHT:> [[Pluxis クッキング]]
#br
XMLを活用したシステムを素早く構築するためのデータモデリング技法
#contents
#br
*汎用的な3階層のネスト構造 [#ddfecdf7]
*多くのシステムで有効な3階層のネスト構造 [#ddfecdf7]
多くのデータは、子要素のみが内容を持つ、3階層のネスト要素として表現でき、多くのシステムではこのデータ構造のみで事足りることがしばしばあります。
''国.xml''
<?xml version="1.0" standalone="no"?>
<?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>
#ref(rp01.jpg,center,wrap)
*3階層のネスト構造を定義する汎用的なExcel用XMLスキーマ [#y5567aa9]
''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シートの表示と同期がとれるので、非常に便利です。
*具体的なプロトタイピング例(海外の自動車データをXMLシステム化) [#q2e80d73]
(この原稿は書きかけです)
**プロトタイピング用データ [#of38b001]
#ref(rp02.jpg,center,wrap)
#br
#ref(rp03.jpg,center,wrap)
**データが持っている項目名 [#ia11c168]
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
**列名と項目名の対応を使って管理 [#ydf1370b]
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対応付けをする [#m4e8dac1]
XML対応付け(マッピング)は、ルート要素(table 要素)をシートにドラッグするだけで完了。~
その結果、各項目とXML要素名とが対応付けされます。
#ref(rp04.jpg,center,wrap)
*PluxisでXMLファイルを出力 [#l4fda326]
#ref(rp05.jpg,center,wrap)
<?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ファイルを出力 [#ee117bd8]
#ref(rp06.jpg,center,wrap)
*列を絞ったブックを用意するだけで簡易フィルタツールが完成 [#zcdf4465]
#ref(rp07.jpg,center,wrap)
#br
#ref(rp08.jpg,center,wrap)
*さらなる機能拡張も [#k6c01f20]
-簡易検索システムのプロトタイピング
-データ更新系とデータ検索系を分離したプロトタイピング
-列名のXML要素を、実際の項目名に変換する仕組み
-DB2などのXMLデータベースと連携する仕組み
-列名(変数)は実データ項目名を抽象化しているので、本格的なオントロジー(セマンティクス)アプローチへの展開も可能