ステッチ・エディタのユースケース
次のステッチ・エディタのユースケースを確認します。
統合での3つのスティッチ操作(割当て、削除および追加)の使用
次のユースケースは、2つのステッチ・アクションを含む統合を示しています。 この統合では、3つのステッチ操作(assign、remove、append)がすべて使用されます。 このユースケースでは、グローバル変数を作成してステッチ・アクションに追加する方法についても説明します。
- 統合キャンバスで、
をクリックします。 この例では、使用するステッチ・アクションに2つのグローバル変数が定義されています:
- 「件数」スカラー変数は、統合のfor-eachループでカウントを保持します。
- GV_bookstore複合変数には、ブック情報が格納されます。
- 追加のグローバル変数を作成する場合は、plus記号をクリックします。
- 「タイプ」リストから「オブジェクト」を選択し、複合型変数を定義します。 他のすべての選択項目(「文字列」、「ブール」など)は、スカラー型変数の作成に使用されます。

統合で使用されるすべてのデータ構造を示す「ソース」スキーマ・ツリーが表示されます。
- 変数に名前を付け(この例では、gv_sampleを使用)、スキーマ・ツリーを開いて使用する要素を選択します(この例では、bookが選択されています)。 bookをgv_sampleの「タイプ」フィールドにドラッグすることもできます。
ステッチ・エディタで複雑な割り当てを定義する準備ができました。
- 統合に戻り、最初のステッチ・アクションを開きます。
この例では、2つの割当てが異なる操作を実行するように定義されていることに注意してください。
- 最初の割当ては割当て操作を実行します。 for-eachループで使用する「件数」変数は、ゼロに初期化されます。
- 2番目の割り当てでは、既存のブック・リストに新しいブック情報を追加する操作が実行されます。
- 最初の割当ては割当て操作を実行します。 for-eachループで使用する「件数」変数は、ゼロに初期化されます。
をクリックして、book変数の完全なXPath式を表示します。 ブック情報がブック・リストに追加されます。
- 右上隅のXをクリックして、最初のステッチ・アクションを閉じます。
- for-eachループ内で実行される2番目のステッチ・アクションをクリックします。 このステッチ処理は、ループ反復中に各台帳から価格情報を削除します。 countインデックスは、ブック・リスト全体が読み取られるまでfor-eachループで実行されます。
- 統合をアクティブ化して起動します。 この例では、ペイロードによって価格詳細が削除され、作成者の詳細が追加されます(この例では、
JoeSmith)。<?xml version="1.0" encoding="utf-8"?> <bookstore xsl:noNamespaceSchemaLocation="schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <book> <title lang="en">Java</title> <price>100USD</price> <author> <firstName>Joe</firstName> <lastName>Smith</lastName> </author> </book> </bookstore> - アクティビティ・ストリームで統合実行の結果を表示します。
TO要素が変数DOMに存在しません
次のTO要素のユースケースおよび予想される結果について説明します。
TO DOMに存在しないバインドされていない要素へのASSIGN
- 予想結果:
TO要素が作成され、FROM要素が割り当てられます。 - 割当て :
($OutputVarNameOnEB/ns0:root/ns0:b[1]/ns0:bch1).ASSIGN($V1/ns0:root/ns0:b[1]/ns0:bch1)
| $OutputVarNameOnEB(割当て前) | $V1Content | $OutputVarNameOnEBの結果 |
|---|---|---|
|
|
|
TO DOMに存在しないバインドされていない要素へのリストの追加
- 予想結果:
FROMリストは、スキーマに準拠して、TODOMの適切なロケーションに挿入されます。 - 割当て :
($OutputVarNameOnEB/ns0:root/ns0:b[1]/bch3).APPEND($V1/ns0:root/ns0:b[1]/ns0:bch3)
| $OutputVarNameOnEB(割当て前) | $V1Content | $OutputVarNameOnEBの結果 |
|---|---|---|
|
|
|
述語の使用方法
次の述語のユースケースおよび予想される結果について説明します。
割当または追加 - FROM述語がゼロ・ノードを選択する(範囲外)
- 予想結果: 実行時に例外がスローされます。 設計時に、述語がデータを選択できるかどうかを検出できません。
- ランタイム・エラー割当ての例:
($t1).ASSIGN($v1/globalElement/element2[count(.)+1])ノート:
[count(.)+1]述語は常に範囲外です。この割当ては実行時に失敗し、例外がスローされます。
索引付きTOへの追加 - TO要素にAPPEND操作の述語がある - サポートされていません
- 予想結果: 設計時のシステムでは、
APPENDが発生する繰返し要素(TOの最後のステップ)を述語化できません。APPENDは、常にリストの最後に追加されます。 - 例:
($OutputVarNameOnEB/client:processResponse/client:c[2]).APPEND($InputVarNameOnEB/client:process/client:c)- サポートされていません:
"Predicated TO".APPEND()(代入の例1)($<OutputVarNameOnEB>/client:processResponse/client:c[@attr1='some existing value']).APPEND($InputVarNameOnEB/client:process/client:c[1])ノート:
[@attr1='some existing value']述語は、ノードのサブセットをフィルタ/選択します。 ノードのサブセットに追加しても、直感的な意味はありません。 - サポートされていません:
"APPEND After"(代入の例2)($OutputVarNameOnEB/client:processResponse/client:c[2]).APPEND($<InputVarNameOnEB>/client:process/client:c)ノート:
[2]述語は直感的ではありません。 単一インスタンス2、インスタンス2の後のAPPENDまたはインスタンス2の前のAPPENDに対してAPPENDを実行しますか。設計時エラー: どちらの例でも、設計時にエラーがスローされます。
- サポートされていません:
述語TOへの割当て - 述語が既存のノードを参照しています
- 予想結果: 述語によって参照される
TO要素への割当てが行われます。
索引付きTOへの割当て - TO索引付き述語が存在しないノードを参照しています
- 予想結果: 欠落しているノードは作成されますが、欠落しているノードは空で作成されます。
- 例:
($v1/ns0:po/ns0:header/ns0:customer/ns0:email[2]).ASSIGN("jim@yahoo.com")ノート:
索引付き述語は、実行が正の数に解決される述語を参照します。 - 欠落した
TOノードの割当ての例:($OutputVarNameOnEB/client:processResponse/client:c[count(.)+4]).assign($InputVarNameOnEB/client:process/client:c[1])ノート:
[count(.)+4]述語は常に範囲外です。
| $OutputVarNameOnEB(割当て前) | $InputVarNameOnEBコンテンツ | $OutputVarNameOnEBの結果 |
|---|---|---|
|
|
|
索引付き祖先TOに割当 - TO索引付き述語が存在しないノードを参照しています
- 予想結果: 祖先インスタンスが存在しない場合は、索引まで作成され、割当てが実行されます。
- 例:
($v1/ns0:po/ns0:details/ns0:item[$i]/itemName).ASSIGN("iPhone X") ...whereas $i is a number having value 4
| $v1(割当て前) | 割当て後の$v1。 |
|---|---|
|
|
割り当て - TO論理述語が存在しないノードを参照しています
- 予想結果: 実行時に例外がスローされます。
- 定義: 論理述語は、実行がブール結果に解決される述語です: trueまたはfalse。 このケースは、結果がfalseになったときを指します。 したがって、
TO要素が選択されていません。 - ランタイム・エラー割当ての例:
($OutputVarNameOnEB/client:processResponse/client:c[@attr1='eng']).assign($InputVarNameOnEB/client:process/client:c[1])ノート:
DOMの下には、engを値として持つattr1を持つcノードはありません。
| $OutputVarNameOnEB(割当て前) | 結果 |
|---|---|
|
この割当ては実行時に例外で失敗します。 |
- ランタイム・エラー割当ての例:
($OutputVarNameOnEB/client:processResponse/client:c[ns05:aCustomFunction(.)]).assign($InputVarNameOnEB/client:process/client:c[1]) - 詳細 : 実行時に、
ns05:aCustomFunction(.)はfalseまたは数値を返す場合があります。 次のDOMを使用します:ns05:aCustomFunction(.)が1を返す場合、割当てが発生します。ns05:aCustomFunction(.)が2を返す場合、これはユースケース「索引付きTOへの追加 - TO要素にAPPEND操作の述語がある - サポートされていません」と同じです。ns05:aCustomFunction(.)がfalseを返すと、実行時エラーが発生します。
| $OutputVarNameOnEB(割当て前) | 結果 |
|---|---|
|
この割当ては実行時に例外で失敗します。 |
拡張データ型
次の拡張データ型のユースケースおよび予想される結果について説明します。
<xsd:any>またはxsd:anyTypeがロケーション・パスにある場合のスキーマ検証 - ユース・ケース - ASSIGN - FROMまたはTO(あるいはその両方)
- 予想結果 :
xsd:anyType(または<xsd:any>の親)の後にロケーション・パス・ステップを入力することはできません。 構文が有効であるかぎり、ロケーションのパスが受け入れられます。 - 詳細の例: 複雑なコンテンツを
AnyType要素に移入します。($v1/globalElement/element3AnyType).ASSIGN($list/ns1:items/ns1:item_Undoulded)$v1(割当て前) $list content outputVariableで予期される結果 <globalElement xmlns="http://jorge.com/AssignAnyType2"> <element1 lang="esperanto"/> <element4>2017-09-27T14:31:00</element4> </globalElement>example<items xmlns="http://xmlns.XYZ.com"> <item_Unboulded> <name>Music</name> <price>98.99</price> </item_Unboulded> <item_Unboulded> <name>Fighter</name> <price>300.99</price> </item_Unboulded> <item_Unboulded> <name>Lover</name> <price>20.99</price> </item_Unboulded> </items>example<globalElement xmlns="http://jorge.com/AssignAnyType2"> <element1 lang="esperanto"/> <element3AnyType> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Music</name> <price>98.99</price> </item_Unboulded> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Fighter</name> <price>300.99</price> </item_Unboulded> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Lover</name> <price>20.99</price> </item_Unboulded> </element3AnyType> <element4>2017-09-27T14:31:00</element4> </globalElement> - 詳細の例:
anyタイプ内のデータの参照。item_Unboulded2の価格を参照する場合は、次のようにします:($vFigtherPrice).ASSIGN($v1/ns0:globalElement/ns0:element3AnyType/ns1:item_Unboulded[2]/ns1:price)$vFighterPeice resultExample:300.99
エレメント2の名前を割り当てる場合は、次の手順に従います:($v1/ns0:globalElement/ns0:element3AnyType/ns1:item_Unboulded[2]/ns1:name).ASSIGN("Me Ma Mu")outputVariableで予想される結果:<!-- note the instance 2 name is changed from fighter to Me Ma Mu <globalElement xmlns="http://jorge.com/AssignAnyType2"> <element1 lang="esperanto"/> <element3AnyType> <price xmlns="http://jorge.com/price">300</price> </element3AnyType> <element3AnyType> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Music</name> <price>98.99</price> </item_Unboulded> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Me Ma Mu</name> <price>300.99</price> </item_Unboulded> <item_Unboulded xmlns="http://xmlns.XYZ.com"> <name>Lover</name> <price>20.99</price> </item_Unboulded> </element3AnyType> <element4>2017-09-27T14:31:00</element4> </globalElement>
スキーマで定義された<xsd:anyType>、<xsd:any>およびxsd:Anyのユースケース
次のXSDユースケースおよび予想される結果について説明します。
<xsd:anyType>および<xsd:any>の場合 :Error rendering macro 'excerpt-include' No link could be created for 'Expected Result - xsd:anyType and xsd:any'.- スキーマで定義されている
xsd:Anyの場合:Error rendering macro 'excerpt-include' No link could be created for 'Expected Result - 2 XSD:ANY'.






