仮想プロパティ・パスの基本設定
概要
ほとんどの EDI 形式 (XML 仮想ドキュメントではなく) において、仮想プロパティ・パスは次のような構文になります。
segmentorsubsegmentID:fieldorsubfieldID
説明 :
-
segmentorsubsegmentID は、セグメントまたはサブセグメントを参照します。この識別子は、"セグメント識別子とサブセグメント識別子" に記載された規則に従います。
-
fieldorsubfieldID は、親セグメントまたはサブセグメント内のフィールドまたはサブフィールドを参照します。この識別子は、"フィールド識別子とサブフィールド識別子" に記載された規則に従います。
仮想プロパティ・パスは、特定のメッセージ構造に対して相対的で、その他のメッセージ構造では無効となります。管理ポータルには、パスを特定するのに役立つページが用意されています"ポータル・ツール" を参照してください。
セグメント識別子とサブセグメント識別子
セグメントを参照するには、以下のどちらかを使用します。
-
セグメントのシンボリック名。
メッセージに同じ名前の複数のセグメントが含まれている場合は、識別子の最後に (n) を付加します。ここで、n は必要なセグメントの 1–ベースの位置です。
-
メッセージに含まれているセグメントの数。この数は不明なことが多いため、この構文はあまり役に立ちません。
セグメントにはサブセグメントを追加できます。サブセグメントにはさらにサブセグメントを追加できます。サブセグメントを特定するには、以下の構文を使用します。
segmentID.subsegmentID
ここで、segmentID と subsegmentID はともに、セグメントを特定するための前述の規則に従います。シンボリック名と数値識別子を混在させることはできないことに注意してください。つまり、この構文の一部でシンボリック名を使用している場合は、構文全体でシンボリック名を使用する必要があります。同様に、この構文の一部で数値識別子を使用している場合は、構文全体で数値識別子を使用する必要があります。
フィールド識別子とサブフィールド識別子
フィールドを参照するには、以下のどちらかを使用します。
-
フィールドのシンボリック名。
親セグメントまたはサブセグメントに同じ名前の複数のフィールドが含まれている場合は、識別子の最後に (n) を付加します。ここで、n は必要なフィールドの 1–ベースの位置です。
-
親セグメントまたはサブセグメント内のフィールドの数
フィールドにはサブフィールドを追加できます。サブフィールドにはさらにサブフィールドを追加できます。サブフィールドを特定するには、以下の構文を使用します。
fieldID.subfieldID
ここで、fieldID と subfieldID はともに、フィールドを特定するための前述の規則に従います。シンボリック名と数値識別子を混在させることはできないことに注意してください。つまり、この構文の一部でシンボリック名を使用している場合は、構文全体でシンボリック名を使用する必要があります。同様に、この構文の一部で数値識別子を使用している場合は、構文全体で数値識別子を使用する必要があります。
例
下の仮想プロパティ・パスは、2 つ目の NK1 セグメントの Address フィールドの streetaddress サブフィールドにアクセスします。
NK1(2):Address.streetaddress
下の仮想プロパティ・パスは、1 つ目の PR1grp セグメントの AUTgrp.CTD サブセグメントの ContactAddress フィールドの streetaddress サブフィールドにアクセスします。
PR1grp(1).AUTgrp.CTD:ContactAddress.streetaddress
繰り返しフィールドの特殊なバリエーション
この節では、繰り返しフィールドを参照するときに適用される仮想プロパティ・パスのバリエーションについて説明します。
繰り返しフィールドを通した繰り返し
BPL または DTL 内で中かっこ {} 表記が使用されている場合は、ショートカット () が繰り返しフィールドのすべてのインスタンスを通して繰り返されます。例えば、DTL の次の 1 行を見てください。
<assign property='target.{PID:3().4}' value='"001"'/>
この行は、同じく有効な DTL の次の 3 行と等価です。
<foreach key='i' property='target.{PID:3()}'>
<assign property='target.{PID:3(i).4}' value='"001"'/>
</foreach>
同じ () 規則は、BPL でも利用できます。
フィールドのカウント
パスが繰り返しフィールドを参照している場合は、(*) を使用してフィールド数を返すことができます。
DTL 内のフィールド数をカウントするには、(*) の代わりに ("*") を使用します。
この構文は、標準メッセージ内のコレクション・プロパティにも使用できます。
一連の繰り返しフィールド内の最後のフィールドへのアクセス
XML 仮想ドキュメントの場合のみ、パスが繰り返しフィールドを参照している際に、.(-) を使用して最後のフィールドを返すことができます。詳細は、"XML 要素の内容の取得または設定" を参照してください。
この構文は、標準メッセージ内のコレクション・プロパティにも使用できます。
一連の繰り返しフィールドへの追加
パスが繰り返しフィールドを参照している場合は、.() を使用して別のフィールドを追加できます。
この構文は、標準メッセージ内のコレクション・プロパティにも使用できます。