このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

関数 > デフォルトとノード関数

ノード関数とデフォルトを条件付きで適用する

スクロール ホーム トップ その他

ノード関数、またはデフォルトの (いわゆる「ルール」)を作成すると、子孫を持つアイテム上、または「リーフ」 アイテム上で定義することができます。重要な点は、アイテムに子孫が存在すると、ルーツのためにデータ型を指定しなければなりません。これは、このデータ型の子孫のみがルールにより影響を受けることを意味します。この概念を更によく理解するために、次のデモマッピングを開いてください: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\\OrderInUSD.mfd。 ターゲットコンポーネント内の「行」アイテムの横の mf_ic_node_func_defined アイコン をクリックしてください。

mf_nodefunc_07

OrderInUSD.mfd

上のマッピングは、 XML ファイルからデータを読み取り、ターゲット CSV ファイルに書き込みます。 ターゲット CSV コンポーネント内では、Rows アイテムの入力側でルールが定義されています。 Rows アイテムには、型 stringinteger の子が存在します。 ルールのデータ型は string であるため、ルールはこの型のアイテムのみ影響します。すなわち、 mf_ic_node_func_applied アイコンは 型 string のアイテムのためにのみ存在しますが、型 integer のためには存在しません。 mf_ic_node_function_blocked アイコンは、一部のアイテムのためにはルールがブロックされていることを意味し、このファクトは現時点では無効です。デフォルトとノード関数のしくみ に関する詳細は、を参照してください。

 

ヒント:上のマッピング内で各アイテムの横にデータ型を表示するには、「データ型の表示」 ic-show-types ツールバーボタンをオンに切り替え、「注釈の表示」 ic-show-annot ツールバーボタンをオフに切り替えます。「表示」 メニュー内でこれらの切り替えコマンドを使用することができます。

 

ルールのデータ型を変更するには、マッピングの上のグリッド内の 「省略記号」 ボタン mf_ic_ellipsis をクリックします。これにより、必要とする型を選択することのできるダイアログボックスが開かれます。

mf_nodefunc_08

「フィルター ノード関数をデフォルト」 ダイアログボックス

例えば、データ型として integer を選択する場合、(型 integer の唯一のアイテムであるため)ルールはアイテム Amount のみに適用されます。このファクトを示すためにコンポーネントは再度描かれます。 Amount 以外の他のアイテムは、 型 string であるため ルールにより影響を受けていないことに注意してください。

mf_nodefunc_09

 

ツールの データ型をノード関数内で意味が成す場合のみ変更します。デモ OrderInUSD.mfd マッピング内で、 ノード関数は( 2つの文字列を結合する) 数値ではなく、string データを処理するようにデザインされています。 この結果、このマッピングはノード関数のデータ型を integer に変更すると、失敗します。

 

型の継承

MapForce は XML データだけではなく、 データ型および「ノード関数とデフォルトをフィルター」 ダイアログボックス上での選択のために使用できるデータ型とも作業することができ、 XML スキーマ型に正確に対応する必要はありません。一部は型のカテゴリである場合もあり、これは、型の広範囲の選択に一致することを意味します。例えば、 型 string は、 normalizedString、token、NCName、NMTOKEN、IDREF、ENTITY などから派生した string 多種の他のデータ型に一致します。 同様に 型 decimal は、派生した型 integer、long、short などにに一致します。

 

型の階層構造は XML スキーマ W3C 勧告に従います。階層構造を説明するダイアグラムに関しては、 §3 in "XML スキーマパート 2: データ型第2エディション"、 https://www.w3.org/TR/xmlschema-2 を参照してください。

 

高度なフィルタリング

任意で、更に高度な条件をベースにしたルールを適用することもできます:

 

特定の型 AND であり、ノード名がカスタムのテキストの一部に一致する場合、ルールを適用します。

特定の型 AND であり、型名がカスタムのテキストの一部に一致する場合、ルールを適用します。

 

例えば、 下の設定は、ノード型が string AND であり、 ノード名が 「Title」 の場合のみルールが適用されます。右のイメージは、(ノード 「Title」 のみが一致し、このためにmf_ic_node_func_applied アイコンが取得されるなど)このようなルールが役に立つ場合のサンプル構成を示しています :

 

mf_nodefunc_11

mf_nodefunc_12

 

または、適するする複数のノード名または型名に一致する正規表現を使用することができます。例えば、 下の設定は、名前が "total" で終わるすべての型 string アイテムに適用されます。正規表現が使用されていることに注意してください。正規表現 .+total 文字通り、以下を意味します:  テキスト "total" に続く1回または複数回の文字の発生を一致させる。また、検索で大文字と小文字を区別することができ、 "SOMETOTAL" と "SomeTotal" の双方が一致することを意味します。 右のイメージは、(具体的には、3つの "Total" アイテムが同様にルールに適し mf_ic_node_func_applied アイコンを取得するなど)このようなルールが役に立つかもしれないサンプルの構成を示しています :

 

mf_nodefunc_10

mf_nodefunc_13

 

正規表現 大アレクトは、 XML スキーマのものと同じです。 正規表現 を参照してください。 以下の点に注意してください:

 

アンカー ^ と $ は暗黙であり、 「検索対象」ボックス内に入力する必要はありません。

「大文字と小文字を区別」 チェックボックスにより大文字と小文字は区別されます。ですから i フラグはサポートされません。

ノードフィルタリングのために複数の行を一致させることは意味をなしません。ですから m フラグはサポートされません。

(C) 2019 Altova GmbH