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

【XSLTによるB2Bメッセージインターフェイスの開発】

(2004/10/14 溝口@アドス)

目次


概要

本チュートリアルでは、サンプルXMLデータから簡単にスタイルシートを作成する方法について解説します。ビジネスユーザによるスタイルシートのパラメータ設定や、大量高頻度のスタイルシート作成を実現します。

背景として、購買情報などB2Bで交換されるXMLデータのインターフェイス開発があります。このようなXMLデータには、ビジネスに不要なデータも多く含まれており、目的のデータを見つけにくいことがあります。また、ツリー形式による表示には、データを比較しにくい性質があります。そのため、ビジネスでの使用では、XMLデータをHTML形式などに変換して表示する必要があります。

しかし、運用するXMLフォーマットの種類が多い場合や、XMLの項目の使用方法の変更が多い場合には、それに比例してインターフェイス開発のコストが膨れ上がる恐れがあります。したがって、1フォーマットあたりの開発コストはできるだけ低くする必要があります。

そこで、XSLTにより簡単にインターフェイスを生成する方法について検討します。これは、サンプルXMLデータを変換してインターフェイス出力用XSLTを自動的に作成する方法です。サンプルXMLデータを利用することでビジネスユーザにより作成できるメリットがあります。

本チュートリアルでは、簡単なサンプルにより、開発から運用までの流れを解説します。なお、サンプルXMLデータとして、RosettaNetのPIP4A4を使用します。


XSLTによるB2BメッセージのHTML表示

導入として、実運用のXMLデータをHTMLに変換するスタイルシートの例を見ます。B2Bの運用時には、図のような構成で使用されます。あらかじめXSLTを作成してシステムに配置し、運用時に生成されるXMLデータをXSLT変換して表示します。

m4ddabf33.png
サンプルファイル
実XMLデータ(サンプルXMLデータ)fileServiceContent.xml
XSLT(2次XSLTのサンプル)fileServiceContentToHtml.xsl

これは手書きで記述したXSLTファイルです。XSLTのコードにはPIP4A4のパスが組み込みで記述されており、PIP4A4固有のXSLTであることが確認されます。さらに、テーブル表示する繰り返し項目も組み込みで指定されており、PIP4A4のXML構造の特定の使い方に限定したXSLTであることが確認されます。したがって、このXSLTによって他のPIPのXMLデータを変換して表示させることはできません。

4dd67ab5.png

このXSLTにより下図のようにXMLデータがHTMLへ変換されます。繰り返し項目の階層を、複数のテーブルにより表示しています。テーブル間はキー項目のハイパーリンクにより関連付けされており、ナビゲーションの利便性に配慮しています。素のXMLデータと比較して、表示項目の抽出や一覧表示により見やすくなっています。

4c2e9615.png

本チュートリアルでは、このようなXSLTを簡単かつ大量に作成することが目標となります。


1次XSLTの開発手順

XSLTをXSLTで作成することにより前述の目標を達成したいと考えます。下図は開発フェーズと運用フェーズ含めてのファイル生成の流れです。緑枠内の1次XSLTの開発は、XSLT技術者によりXSLTコードを記述する作業となります。一方、青枠内の2次XSLTの開発は、ビジネスユーザ(情報システム部門等)によりマーク付きサンプルXMLデータを作成して2次XSLTに変換する作業となります。

m4831938f.png
サンプルファイル
マーク付きサンプルXMLデータfileServiceContentMK.xml
1次XSLTfileServiceContentToHtml2.xsl
2次XSLTfileServiceContentMK.xsl

1次XSLTの開発手順は次のようになります。

  1. 「2次XSLT」のサンプルの作成
  2. 「マーク付きサンプルXMLデータ」のサンプルの作成
  3. 「1次XSLT」の作成

次節以降、この順に作成します。なお、「2次XSLT」のサンプルの作成は前節に差し替えます。


マーク付きサンプルXMLデータの作成

ユーザ企業においてB2Bを実装する際には、大抵サンプルXMLデータが用意されます。ビジネスユーザも、このサンプルXMLデータを確認して、どのようなビジネスデータを送受信するか理解することになります。したがって、サンプルXMLデータはビジネスユーザにも比較的馴染みがあると言えます。

そこで、サンプルXMLデータを基に2次XSLTのパラメータを設定することにより、ビジネスユーザによる2次XSLT作成が可能になります。

本チュートリアルでは、下記のルールでマーク付きサンプルXMLデータを作成します。これらのマークはHTMLに出力する項目にのみ記述します。実際の1次XSLTの開発では、1次XSLTや2次XSLTに必要なパラメータに従って、このようなマーク付けルールを定義します。

  • 繰り返し要素にrow属性を設定し、その属性値にテーブルのタイトルを記述する
    <PartnerProductForecast
    	 row="GlobalBusinessIdentifier - GlobalProductIdentifier">
  • ルート要素には必ずrow属性を設定する
    <Pip4A4PlanningReleaseForecastNotification
    	 row="Pip4A4PlanningReleaseForecastNotification">
  • 末端の繰り返し要素で、詳細テーブルを出力しない場合は、row属性の値に「#end」と記述する
    <ProductSchedule row="#end">
  • 任意回数の繰り返し要素は1つを残して他を削除する
  • 固定回数の繰り返し要素は、その回数分の要素を記述する
  • テーブルを関連付けするキー要素にkey属性を設定し、その属性値にテーブルにおける項目名を記述する
    <GlobalBusinessIdentifier key="DUNS">111111111</GlobalBusinessIdentifier> 
  • 概要テーブルと詳細テーブルに出力する要素にindex属性を設定し、その属性値にテーブルにおける項目名を記述する
    <FreeFormText xml:lang="ja" index="コンタクト名">A</FreeFormText>
  • 詳細テーブルにのみ出力する要素にfield属性を設定し、その属性値にテーブルにおける項目名を記述する
    <GlobalProductUnitOfMeasureCode field="単位">
    	10 Kilogram Drum</GlobalProductUnitOfMeasureCode>
  • その他、処理に影響のない要素は編集しなくてよい
42256ade.png

1次XSLTの作成

サンプルの2次XSLTとマーク付けサンプルXMLデータを基に、1次XSLTを作成します。具体的には、サンプルの2次XSLTからXSLTコードのパターンを抽出し、1次XSLTのtempleteを記述していきます。サンプルの2次XSLTに3階層分くらいのコードがあれば、パターンを見つけやすくなります。

参考:XSLTを出力するXSLTの記述


2次XSLTの開発手順

1次XSLTの開発後は、B2BのXMLフォーマットごとに下記の手順で2次XSLTを作成します。青枠の作業となります。

  1. マーク付きサンプルXMLデータの作成
  2. 1次XSLTによりマーク付けサンプルXMLデータを変換して2次XSLTを作成
  3. 2次XSLTをシステムに配置
m4831938f.png

2次XSLTをシステムに配置したら、図の赤枠のように運用します。

マーク付きサンプルXMLデータfileServiceContentMK.xmlをさまざまに編集し、1次XSLTfileServiceContentToHtml2.xslにより変換して結果の2次XSLTを確認してみてください。


応用事例

本チュートリアルのポイントは、ビジネスユーザにも編集可能なサンプルXMLデータから、スタイルシート(XSLT)を自動的に作成可能なことです。同様にして、スタイルシートでなく他のファイルを出力することも可能です。

例えば、データ入出力に関しては下記のような利用が考えられます。

  • XMLデータをCSVやDBに入出力するXSLTファイルやSQL文の出力
  • XMLデータを入出力するDBを構築するSQL文の出力

一般的には、B2Bメッセージの変換に関する処理スクリプトへの利用に適用可能です。




添付ファイル: filem4ddabf33.png 621件 [詳細] filem4831938f.png 591件 [詳細] file4dd67ab5.png 597件 [詳細] file4c2e9615.png 592件 [詳細] file42256ade.png 581件 [詳細] fileServiceContentToHtml2.xsl 820件 [詳細] fileServiceContentToHtml.xsl 698件 [詳細] fileServiceContentMK.xsl 713件 [詳細] fileServiceContentMK.xml 673件 [詳細] fileServiceContent.xml 688件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Thu, 14 Oct 2004 19:48:11 JST (5208d)

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