[ADOS] ADOS Developer's Site - XML Stadium
ADOS Company slogan - XML Total Solution
RIGHT:> [[Pluxis クッキング]]

#br

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

#contents

#br

*多くのシステムで有効な3階層のネスト構造 [#ddfecdf7]

多くのデータは、子要素のみが内容を持つ、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>

#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シートの表示と同期がとれるので、非常に便利です。列名要素("A"〜"AZ")は、必要に応じて減らしたり増やしたりしてください。

*具体的なプロトタイピング例(海外の自動車データを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データベースと連携する仕組み
-列名(変数)は実データ項目名を抽象化しているので、本格的なオントロジー(セマンティクス)アプローチへの展開も可能


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

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