tokenize-by-length

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  関数 > 関数ライブラリレファレンス > core | string functions >

tokenize-by-length

input パラメーターから得られた文字列を length パラメーターにより定義されたセグメントのシーケンスに分割します。関数の結果は更なる処理にて使用されます。

 

fn-tokenizebyLeng

 

例: input の文字列が "ABCDEF" で、length の値が 2 となっている場合、AB CD EF が出力されます。

 

サンプル

..\MapForceExamples フォルダーに収められている TokenizeString2.mfd にて、tokenize-by-length 関数の使用方法を確認することができます。

 

tok-len01

 

tokenize 関数の例で使用したものと同じ XML ソースファイルを以下に示します。MissionKit 要素にも EditionToolCodes という 2 つの属性が与えられていますが、要素のコンテンツは無い点に注目してください。

 

tok-len1

 

このマッピングの目的:

どの Altova 製品が、MissionKit の各エディションに含まれているかを表すリストを生成します。

 

マッピングの動作:

SelectMissionKit 入力コンポーネントには定数コンポーネントからデフォルト値(この場合は "Enterprise XML Developers")が与えられます。
equal 関数により、入力値と Edition コンポーネントの値が比較され、その結果が ToolCodes フィルターの bool パラメーターへ渡されます。
ToolCodes フィルターの node/row 入力がソースコンポーネントの ToolCodes アイテムから接続されています。例えば Enterprise XML Developers エディションの値は XSMFSVDDSASW となります。
XSMFSVDDSASW という値が on-true パラメーターから、tokenize-by-length 関数の input パラメーターへ渡されます。

 

tokenize-by-length 関数の動作:

ToolCodes から得られた XSMFSVDDSASW という入力値が、(length パラメーターに接続されている 2 という値から) 2 文字ごとに複数の要素へ分割されます。従って合計 6 個の要素が生成されます。
各要素は equal 関数の b パラメーターへ渡され、ソースファイルの Code に記述されている 2 文字の Code 値と比較されます(Code には合計9個のエントリー/アイテムが与えられています)。
比較の結果がフィルター (filter) の bool パラメーターへ渡されます。
tokenize-by-length 関数から得られた全ての要素がフィルター (filter) の node/row パラメーターへ渡されている点に注意してください。

 

exists  関数により、フィルターコンポーネントの on-true パラメーターから得られた値が存在する/存在しないかがチェックされます。

 

存在するノードとは、Code の値と ToolCodes から得られた要素間でマッチするノードのことです。

 

存在しないノードとは Code の値にマッチする ToolCodes の要素間でマッチしなかったノードのことです。

 

exists 関数の結果は if-else 関数へ渡され、ノードが存在する場合には Y が、存在しない場合には N がターゲットへ渡されます。

 

マッピング結果を以下に示します:

 

tok-len2


(C) 2019 Altova GmbH