![]() ![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第5章
Novell exteNd Composerでは、XML、XSL、DTD、またはXSD、あるいはこれらすべての関連グループを、名前を付けた「テンプレート」に整理するという概念に大きく依存しています。
XMLデータを使った設計作業が進めやすくなるよう、Composerには定義済みのXMLテンプレートが用意されています。XMLテンプレートの目的は、単に関連ドキュメントを単一の機能グループに整理することです。 たとえばXML統合アプリケーションを設計する際、架空の「入力データ」を表すサンプル入力ドキュメントを数多く用意することも、そう珍しいことではありません。 この入力ドキュメントは、ある特定のスキーマ(.xsd)やDTDに準拠していることも、そうでないこともあるでしょう。 XSLスタイルシートとの関連付けも、ある場合とない場合があります。 さらに、さまざまな種類の「障害ドキュメント」をサービスに関連付けることも、そうしないこともあります。 Composerでは一般に、複数のサンプル「入力」ドキュメントをひとつのXMLテンプレートにまとめます。サンプル「出力」ドキュメントについても、(上述のような関連項目の一部または全部を含む)別のXMLテンプレートを用意します。 「XMLテンプレート」ラッパは、スタイルシート、スキーマドキュメント、DTDファイル、障害ドキュメントなど、サンプルXMLドキュメントに関連するドキュメント群をグループにまとめるために使います。
設計に際しては、テンプレート中のサンプルXMLドキュメントを、Composerで適切にツリー表示するための「ヒント」として使います。これを使うと、設計中のサービスの入出力ドキュメントを、さまざまなGUI画面に適切にツリー表示できるのです。 Composerは上述のテンプレートその他を使って、単純なUI動作(ドラッグ&ドロップなど)をXPathやECMAScriptの表現に変換します。ランタイム時にはこれをもとに、マッピングや変換などの操作が行われることになります (XPathやDOMメソッドを生成する「面倒な」処理はComposerが自動的に行うので、自分で記述する必要はありません)。
サンプルXMLドキュメントは、コンポーネントまたはサービスで処理されるデータの「視覚的なモデル」で、同じ要素、属性、および構造が含まれます。 たとえば、アプリケーションで企業ABCの請求書が処理される場合、アプリケーションの作成時にサンプル請求書を使うでしょう。 サンプルがサンプルとしてきちんと機能するように作成すれば、実際に処理される請求書とまったく同じXML構造になるはずです。
XML統合アプリケーションの企画・設計で最も配慮が必要なのは、コンポーネントが必要とする、あらゆる種類のサンプルドキュメントを、開発前にもれなく用意する作業なのです。
必要なサンプルドキュメントのタイプは、次のとおりです。
サンプル入力ドキュメント。 処理が必要な種類のデータの要素と構造が含まれている、標準の組織(例: cXML、OAG、およびOFX)によって提供されたXMLドキュメント。
XSD(スキーマ)またはDTDドキュメント (独立したリソースとして別にプロジェクトに保存し、XMLテンプレートからは参照するだけにすることも可能です)。
コンポーネント設計に使うサンプルドキュメントを、そのまま実稼動サーバで使うわけではないことにも注意してください。 XMLテンプレートのサンプルは、設計時のヒントとしてのみ使うものなのです。 インスタンスデータのソースとして使うこともできません (この目的にはXMLリソースドキュメントを使うとよいでしょう。 リソースに関する章のXMLリソースについてを参照してください)。
注記: あるデータ要素に値をハードコードしたい場合は、アクションモデルにプログラムを記述する形で行います。具体的には、EXMAScriptの文字列または番号を、XPathで示される場所にマップします。 また、XMLリソースをロードし、これをもとに、ドラッグ&ドロップ操作でたとえば入力ドキュメントに対応づけるマップを作成しても構いません。
サンプルドキュメントは、設計時の補助として、ランタイム時に発生しうるデータ操作を視覚的に見やすくするために使うものです。 アニメーション実行(テスト・デバッグ)の際は、XMLマップアクションやECMAScript処理によって、サンプル中の要素データとして表される場所や値が変化する様子やそれが出力に反映される状況を、リアルタイムに表示できます。 ステップ実行、ステップオーバーなどの機能を使ったデバッグに際しては、データが変化する様子をリアルタイムで表示できますが、デバッグ後は、設計時に使った仮のデータ値はいつでも捨ててしまって構いません。 実稼動環境でComposerが実行するのは、開発時に指定したマップアクションやXPath/EcmaScript操作だけです。
DTD (ドキュメントタイプ定義)ファイルおよびXSD (XMLスキーマ定義)ファイルは、XMLドキュメントを定義したり検証したりするために使用できます。スキーマおよびDTDでは、必要な要素や要素間の構造関係など、ドキュメントの文法ルールが定義されます。
スキーマは、次を含む多くの点でDTDとは異なります。
XSDファイルは、W3Cによって定義されたスキーマにそれ自体が準拠する真のXMLファイルです。逆に、DTDは、真のXMLファイルではありません。
スキーマでは「データ入力」を強制できるため、たとえば、CCYY-DD-MM形式の日付データが要素で必要な場合、この要件を指定(および厳密に強制)することができます。
スキーマではネームスペース宣言を使用できるため、特定のドキュメントボキャブラリに属するものとして要素を一意に識別できます。
スキーマは、作成者が同じドキュメント内である文法ルールは厳密に実行し、他の文法ルールは緩慢に実行するよう指定できる点において、柔軟であるといえます。
このような理由(ただし、これらだけに限定されません)により、スキーマ(XSDファイル)は、XMLドキュメントの定義および検証において、DTDファイルに代わって次第に使用されるようになってきています。
ComposerがスキーマやDTDにもとづいて強制的に検証処理を行うのは設計時に限ります。 ランタイム時には、整形式であることの検証を除き、入出力データの検証処理は行われません。 ただしECMAScriptを使えば、ランタイム時に強制的に検証処理を行うことができます。関数アクション内など、ComposerでECMAScriptの実行が許可されている箇所ならばどこでも検証処理を起動できます。 たとえばあるサービスで、入力ドキュメントInputの検証処理を行いたいとします。 この場合、次のように記述します。
result = Input.validate(); if (result == true) // do something else // throw fault
XMLテンプレート内の入力ドキュメントInputに、あるスキーマが関連付けられていれば、上記のコードの実行にあたって、このスキーマが検証に使われます。 逆にスキーマが関連付けられていなければ、validate()
関数は単に整形式であることの検証のみを行い、その結果をブール値で返します。
注記: validate()関数がDTDを参照することはありません。
コンポーネントで使用するファイルセットの一部として、XSLスタイルシートを含めることができます。 XSLスタイルシートはXMLドキュメントの表示形式を定義します。 スタイルシートは、Composerの外部で作成または取得します。 スタイルシートは、Webブラウザに表示するページを作成しているアプリケーションのコンポーネントに対して役立つことがあります。
XMLテンプレートは、Composerで作成され、 前に説明したように、コンポーネントで使用できるファイルのセットを構成するサンプルドキュメント、ドキュメント定義、およびXMLスタイルシートが含まれます。 XMLテンプレートは、コンポーネントの設計段階の早い時点で作成し、作成するコンポーネントの入力および出力を指定するために使用します。
XMLテンプレートは、多くのタイプのサンプルデータを使用およびテストできるよう、主に存在しています。エラーを発生させることなく、同じコンポーネントによって処理しなければならない、構造の異なったXMLドキュメントを2つ存在させることは可能です。 たとえば、業界標準の注文書ドキュメントを入力として使用しているが、顧客のビジネスでは若干異なるバージョンのドキュメント(例: オプションの要素の一部が欠けている)が使用される場合、この顧客のドキュメントをテストを目的としてコンポーネントにロードすることができます。コンポーネントでは、異なるドキュメントのバージョンを処理できなければならず、コンポーネントの入力として機能するテンプレートにすべてのサンプルを収集することで、複数の状況をテストできます。
XMLテンプレートのインスタンスは、テンプレートカテゴリに収集されます。 テンプレートカテゴリにはユーザ割り当ての名前があり、このカテゴリは、ComposerのナビゲーションフレームのXMLテンプレートカテゴリペインに、フォルダとして表示されます。 指定のカテゴリを構成するメンバは、カテゴリペイン下のインスタンスペインに表示されます。次の図を参照してください。
アプリケーションには多数の入力ドキュメントや出力ドキュメントを含めることができるため、XMLテンプレートカテゴリ内で整理が必要な場合があります。XMLテンプレートカテゴリ内では、アプリケーションに最も適した方法でテンプレートを整理できます。たとえば、次に対してフォルダを作成することができます。
整理されたスキーマの例は、次のとおりです。
フォルダの目的は、サンプルXMLドキュメント、スキーマ、およびXSLスタイルシートを含む可能性のあるXMLテンプレートを保存することです。
XMLテンプレートは、XMLテンプレートカテゴリ内に存在します。XMLテンプレートは単に関連ファイルをグループ化したもので、グループ化は再利用されるよう設計されています(1つのテンプレートは、複数のコンポーネントで使用できます)。たとえば、テンプレートは、あるコンポーネントの入力、および別のコンポーネントの出力として使用できます。 テンプレートにはいくつものXMLを関連付け、さまざまな目的で使うことができます。
注記: 1つのコンポーネントからのXML出力は、サービス内の次のコンポーネントの入力として使用されることがあります。
テンプレートにはたとえば、入力、一時、出力、障害の4つのXMLファイルを含めることができます。一時ドキュメントはコンポーネントの処理に必要な値を一時的に保持するために使い、障害ドキュメントはエラーが生じた際の値保持用に使います。 一時ドキュメント、障害ドキュメントについて詳しくは、131コンポーネントで一時メッセージ、障害メッセージを使う方法を参照してください。
[カテゴリ]下部のプルダウンメニューで、すでに作成した既存のXMLテンプレートカテゴリから1つを選択します(XMLテンプレートカテゴリを作成するを参照)。
青色の[+]アイコンをクリックします。すると、ファイルのナビゲーションダイアログボックスが表示されます。このダイアログボックスを使用して、このテンプレートに追加するXMLファイルをディスク上で指定します。この手順を繰り返して、XMLファイルを必要な数だけ追加します この時点で、入力用および出力用に加え、一時ドキュメントや障害ドキュメントとして使うファイルを追加できます。([-]アイコンをクリックすると、特定のファイルがリストから削除されます)。
注記: XMLサンプルとして使う既存のファイルを指定しなかった場合、空のファイルが作成されます。 ウィザードの最後の段階で、このファイルの名前を指定できます。
[デフォルトのサンプル]の下にある[入力]プルダウンメニューを使用して、このテンプレートを使用するコンポーネントのデフォルトの入力メッセージとして表示するファイルを選択します(プルダウンメニューには、前の手順で作成したリストに表示されているファイルの名前が表示されます)。
[出力]プルダウンメニューを使用して、このテンプレートを使用するコンポーネントのデフォルトの出力メッセージとして表示するファイルを選択します(プルダウンメニューには、左側のリストに表示されているファイルの名前が表示されます)。
テンプレートドキュメントで実行するドキュメント検証のタイプを示すには、[なし]、[DTDの使用]、または[スキーマの使用]という3つのラジオボタンのいずれかをオンにします。ダイアログボックスの外観は、アクティブにしたボタンに基づいて変わります。Composerでは、前のダイアログボックスで指定したXMLテンプレートドキュメント(複数可)の検査に基づいて、正しいラジオボタンを設定しようとします。 Composerにより選択された内容は、いつでも上書きできます。ラジオボタンをオンにすると得られる結果は、次のとおりです。
[なし] - XMLドキュメントの検証がアプリケーションで必要ない場合や、テンプレートドキュメントで指定したDTD情報またはXSD情報を上書きする場合は、このオプションを選択します。
[DTDの使用] - テキストフィールドで名前またはURI、あるいはその両方が指定されたDTDに対してドキュメントが検証されます。
注記: ランタイム時にDTDがダイナミックに決定される場合、ECMAScript式としてURIを指定できます。プロジェクトを展開した後でPUBLIC DTD/スキーマを使用する予定の場合は、[DTDのPUBLIC名]フィールドに入力する必要があります。
[スキーマの使用] - 指定されたXSDファイルまたはWSDLファイルに対して、ドキュメントが検証されます(次の図を参照)。
注記: Composerでは、サンプルドキュメントを自動的に検索して、サンプルドキュメント内で宣言されたネームスペース(該当する場合)と、参照する.xsdファイルをすべて見つけます。ネームスペースとそれらに関連するスキーマは、上のダイアログボックスに自動的に表示されます。ほとんどの場合、自分でダイアログボックスに入力する必要はありません。正しいスキーマリソースの隣にネームスペースが表示されない場合は、右側のプルダウンメニューから適切なスキーマリソースを選択します(つまり、プルダウンメニューを使用して、正しいスキーマと正しいネームスペースを関連付けます)。
使用しているドキュメントにネームスペース情報が含まれている場合は、ネームスペースとそれに対応する プリフィックスがこのダイアログボックスで要約されます。ネームスペース宣言をさらに追加する必要がある場合は(たとえば、スキーマを参照しないドキュメントに対して)、プラス記号(+)のアイコンを使用してこれを行います。
(必要な場合)このXMLテンプレートで定義されたサービス出力と関連付けるXMLスタイルシートを指定します。 このスタイルシートを参照するXSL 処理指示が、サービス出力に追加されます。 XSLリソース(322XSLリソースについてを参照)が作成済みであれば、このオプションを選択し、次にドロップダウンリストからスタイルシートを選択します。 XSLファイルがプロジェクトの外部にある場合は、そのURLを[その他の関連スタイルシート]に指定します (ファイル名は、ECMAScript文字列として処理されるため、引用符で囲む必要があります)。
注記: 新たに空のXMLテンプレートを作成した場合、すなわち、「+」マークをクリックして既存のファイルをテンプレートに追加する、という操作をしていない場合、デフォルトで使うサンプル名を入力するための、次のようなダイアログが現れます。
exteNd Composerに外部WSDLがダウンロードされたら、作業コンポーネントを作成するために、WSDLのメッセージパートに対応するXMLテンプレートが通常は必要となります。また、WSDLに対して検証できるXMLサンプルを作成する必要があります(このようなテンプレートは、その後、WS交換で使用されるアクションを作成するためにコンポーネントで使用できます)。この操作は、Composerを使用することにより実行できます。 サービス用のWSDLリソースがあれば、これをそのまま開いてください。 Composerのツールバーやメニューが下の図のように変わり、ボタンをクリックするだけでXMLスタブドキュメント(テンプレートドキュメント)を作成できるようになります。
開いているWSDLリソースからXMLテンプレートドキュメントを生成するには、次の2つの方法があります。
注記: 作成したサンプルには、要素データは含まれていません。このため、テストを目的として、さまざまな要素にサンプルデータを入力することが必要になる場合があります。##anyネームスペースまたは##otherネームスペースを要素が参照する場合、サンプルは不完全となるため、手動でサンプルを完了する必要があることにも注意してください。
テンプレートドキュメントは、RPCバインドだけでなく、ドキュメントスタイルに対してもこのように作成できます。
メインメニューから[リソース]>[XMLテンプレートの作成]の順にクリックするか、またはツールバーのボタンをクリックします。すると、ダイアログボックスが表示されます。
XMLテンプレートを作成するためのソースとして、ドロップダウンリストから[サービスポートまたはバインディング]を選択します。
別のプロジェクトに対してXMLテンプレートがすでに作成してある場合は、このXMLテンプレートを現在のプロジェクトにインポートすることができます。
マウスを右クリックして、コンテキストメニューから[インポート]を選択します。ダイアログボックスが表示されます。
注記: [インポート]コマンドが選択されていない場合、これは、サブプロジェクトに属するテンプレートカテゴリをすでに選択していることに起因しています。そのため、この操作を実行することはできません。テンプレートドキュメントをサブプロジェクトにインポートする必要がある場合は、現在のプロジェクトを閉じてください。そして、サブプロジェクトを開き、そのサブプロジェクトにテンプレートを追加して保存した後、閉じます。その後、作業していた元のプロジェクトに戻ります。
[参照]を使用して、「ファイル名」の場所を選択します。 URLを指定してファイルを読み込むこともできます。「http://」、「https://」、あるいは「ftp」という文字列を、ファイル名の前に置いて明示してください。
Composerのメインウィンドウで作業する際には、XMLドキュメントの表示レベルを切り替えると便利です。
[表示/非表示]ダイアログボックスには、開いているテンプレートまたはコンポーネントに関連づけられたXMLドキュメントの名前が表示されます。
注記: コンポーネント中、「入力」XMLドキュメントおよび「出力」XMLドキュメントは、デフォルトで[表示]カラムに表示されます。 Componentアクションの結果として作成されたメッセージパートは、デフォルトで非表示になります。
[非表示]カラムで、「表示する」XMLドキュメントを選択し、「左矢印」ボタンをクリックします。反対に、[Show]カラムで、「非表示にする」XMLドキュメントを選択し、「右矢印」ボタンをクリックします。
「トップドキュメント」として表示するXMLドキュメントを選択し、[表示]カラムの最上層ドキュメントとしてドキュメントが表示されるまで上向き矢印をクリックします。 逆に下向き矢印をクリックすれば、ドキュメントを下層に移動できます。
引き続き[表示]カラムでXMLドキュメントを選択し、上向き三角形と下向き三角形のボタンを使用して、XMLドキュメントを希望の順序に移動します。
[OK]をクリックします。 すると、ダイアログボックスが閉じ、コンポーネントエディタのデータペインが順に並べ替えられます。
XMLテンプレートエディタを使用すると、外部エディタを使用するのではなく、Composerでテンプレートを編集できます。
メインメニューバーの[表示]オプションを使用すると、コンポーネントエディタでXML情報を表示する方法を選択できます。表示方法は、ツリー、テキスト、または様式化された形式の中から選択できます。各ビューには、マウスを右クリックするとアクセスできる独自のコンテキストメニューがあります。
デフォルトのビューでは、メッセージパートがツリーとして表示されます(次を参照)。
このビューでは、要素と属性の「値」(つまり、ドキュメントデータ)を編集できますが、XML構造は編集できません。
マウスを右クリックしてアクセスできるコンテキストメニューコマンドは、次の図のとおりです。
テキストビューでは、構造要素を含む完全なXMLファイルを表示したり編集したりできます。
テキストビューでは、comment、processing instruction、DOCTYPE declarationなどの、入力パート、一時パート、または出力パートの非コンテンツモデル部分を簡単に検査できます。
マウスの右ボタンを使用してアクセスできるコンテキストメニューオプションは、次の図のとおりです。
様式化されたビューが選択されたペインである場合、次のようなメッセージパートコンテンツが表示されます。
このビューでは、XMLコンテンツの「レポート」スタイルの概要が表示されるため、すべての属性や要素のコンテンツを一目で確認できます。このビューでは、次のアルゴリズムを使用してXMLを表示します。
このドキュメントコンポーネントに関連付けられたスタイルシートが存在する場合は、式を評価してその式を使用します。
これに失敗した場合は、デフォルトのスタイルシートであるcom/sssw/b2b/dt/default.xsl
を使用します。
様式化されたビューに切り替えるには、右ボタンをクリックして、次のコンテキストメニューから選んでください。
作成したXMLテンプレートは、それぞれXMLテンプレートカテゴリ内に存在します。XMLテンプレートの名前と作成日を表示するには、XMLテンプレートカテゴリを選択します。カテゴリのXMLテンプレートは、すべてComposerの詳細ペインにリストされます。各テンプレートには、テンプレートを操作できるようにするコンテキストメニューがあります。
各XMLテンプレートには、1つまたは複数のサンプルドキュメントが含まれています。サンプルドキュメントは、XMLエディタ(Composerの外部の別のアプリケーション)で開くことができます。
XMLテンプレートは、サンプルドキュメント、スキーマ、およびXSLスタイルシートを追加したり削除したりすることによって変更できます。
編集したいXMLテンプレートをダブルクリックすると、コンテンツエディタが開きます。 ファイルが開いた後、右クリックするとコンテキストメニュー(以下のXML テンプレートエディタのコンテキストメニューを参照)が現れます。その中に[データの編集]というコマンドがあります。
XMLテンプレートのインスタンスペイン内をシングルクリックしてマウスを右クリックし、コンテキストメニューから[プロパティ]を選択します。
注記: [プロパティ]ページでテンプレートの名前を変更すると、[名前を付けて保存]操作が行われるため、元のテンプレートはそのまま維持され、新しい名前を持つコピーが作成されます。XMLテンプレートの名前のみを変更するには、コンテキストメニューの[名前変更]オプションを使用します。
以上のようにして変更したXMLは、当然保存しておく必要があります。 Composerには、サンプルXMLドキュメントの保存方法が4とおりあります。
メインメニューバーから[ファイル]>[名前を付けて保存]の順に選択します。 [プロパティ]ダイアログに似た、タブ付きダイアログが現れます。ここでドキュメント名を変更して保存します。
[ファイル]>[すべて保存]の順に選択すると、コンテンツエディタで現在開いているXMLドキュメントをまとめて保存できます。
コンテンツエディタで、ドキュメント上を右クリックすると現れるコンテキストメニュー(XML テンプレートエディタのコンテキストメニューを参照)から[XMLに名前を付けて保存]を選択します。 すると次のような[XMLに名前を付けて保存]ウィンドウが現れます。
XMLドキュメントを印刷するには、メインメニューバーから[ファイル]>[印刷]の順に選択します。すると、ドキュメントコンポーネントがテンプレートに基づいてフォーマットされます。
XMLサンプルファイルをコンテンツエディタで開き、そこで右クリックすると、次のようなコンテキストメニューが現れます。
次の表は、これらのコマンドの一覧です。
データの編集 |
要素や属性の「値」、すなわちドキュメントデータを編集します。 |
スキーマの作成 |
新規スキーマリソースを作成するためのダイアログが開きます。 |
サンプルファイルの追加 |
ファイル選択ダイアログが開きます。ここでテンプレートに追加するXMLファイルを選択してください。 |
サンプルファイルの作成 |
新しいサンプルXMLファイル名を入力するダイアログが現れます。 |
追加して表示 |
現在開いているテンプレートの一部であっても、エディタペインには開いていないXMLファイルがある場合に、それを追加表示します。 |
表示 |
ドキュメントの表示方法を切り替えます(XMLドキュメントの表示を参照)。 |
エディタの起動 |
インストール時に指定した、デフォルトのXMLエディタを起動します。 |
XMLに名前を付けて保存 |
[名前を付けて保存]ダイアログが開きます。ここでパート名を指定し、サンプルまたはファイルとして保存します。 |
検証 |
XMLとして正しいかどうか検証します。 |
検索 |
XMLデータやXML構造中の文字列を検索するための[検索]ダイアログが開きます。 |
次の検索 |
同じ条件で続けて検索します。 |
XMLテンプレートを作成すると、Composerでは、元のXML、ドキュメント定義、およびXSLファイルのコピーが作成され、適切なXMLカテゴリの[インポート]ディレクトリに配置されます。XMLテンプレートを削除すると、元のファイルではなく、コピーが削除されます。 XMLテンプレートを削除するには、ナビゲータの詳細ペイン上でこれを右クリックし、コンテキストメニューから[削除]を実行します。 ただしあらかじめ閉じておく必要があります。
注記: 前の手順に従ってテンプレートの名前を変更するようにしてください。[プロパティ]ページでテンプレートの名前を変更すると、[名前を付けて保存]操作が行われるため、元のテンプレートはそのまま維持され、新しい名前を持つコピーが作成されます。
XMLテンプレートは、プロジェクトの一部として保存されます。プロジェクトファイルの保存場所の詳細については、プロジェクトファイルの保存場所についてを参照してください。
注記: テンプレートで使用されるサンプル、定義、およびXMLスタイルシートのコピーが、フォルダ内に保存されます。このため、元のドキュメントは変更されません。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...