TDS 分離タイプ・プロパティーと論理モデル・プロパティーには、 グループ構成やグループ内容の妥当性検査などの幾つかの制約事項があります。
これらのオプションを制御する規則については、 メッセージ・セット: 複合タイプをネスティングする際の制限で説明されています。
これらの規則は、メッセージの整合性を保つために存在します。 分離タイプとグループ構成またはグループ内容の妥当性検査の組み合わせの結果が、 TDS パーサーにとって不明確なメッセージになってはなりません。
TDS では、デフォルト値は固定長エレメントによってのみ監視されます。
分離タイプ | デフォルト値の使用 |
---|---|
タグ付き区切り |
Default 値は監視されません。 |
固定長 |
Default 値はすべてのエレメントにより出力で監視されます。 Default 値が定義されていない不在エレメントには、書き込みでエラーが発生します。 |
可変長エレメントを区切る | Default 値は固定長エレメントによってのみ監視されます。 不在の固定長値では、Default 値が使用可能でなければなりません。 Default 値が定義されていない不在エレメントには、書き込みでエラーが発生します。 |
リストとユニオンは XML 特有の概念です。 メッセージ・セットに TDS 物理形式がある場合は、単純タイプがリストまたはユニオンであるエレメントまたは属性が原因で、タスク・リストの警告が出されます。 ユーザーは、妥当性検査のプリファレンスを編集して、これをエラー、警告、または通知のどれにするかを選択できます。 ディクショナリーがメッセージ・セットから生成される場合、およびそのようなエレメントまたは属性を含むように定義された TDS メッセージを構文解析しようとする場合は、ランタイム・エラーが発生します。
論理プロパティー「最小オカレンス」と「最大オカレンス」は、メッセージ内のエレメントまたはグループの許可された出現回数を指定します。 これらは、メッセージの構文解析と書き込み、およびメッセージの内容の妥当性検査を行うときに使用されます。
構文解析および書き込み時に、これらのプロパティーの正確な解釈は、以下の表に示されている親複合タイプまたはグループの「データとエレメントの分離」プロパティーに従って行われます。
ただし、TDS「反復参照」プロパティーが設定されている場合、この動作は無効にされます。このプロパティーは、メッセージ内で先に出現する整数エレメントによって、代わりに出現回数が指定されることを示します。 詳しくは、「反復参照」を参照してください。
妥当性検査時に、「最初オカレンス」と「最大オカレンス」の両方を使用して、メッセージ・ツリーの内容がモデルと一致することを確認します。
分離タイプ | 最小オカレンスと最大オカレンスの解釈 |
---|---|
タグ付き区切り |
構文解析および書き込み時に、「最小オカレンス」と「最大オカレンス」は事実上、無視されます。 構文解析時に、出現回数はメッセージ内のタグによって識別されます。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力します。
|
すべてのエレメントを区切る | 「最大オカレンス」は、構文解析および書き込み時にのみ使用されます。これは、エレメントの「反復エレメント区切り文字」プロパティー、および親タイプの「不在エレメント区切り文字の抑制」プロパティーに使用されます。 「不在エレメント区切り文字の抑制」が 「タイプの終了」に設定されている場合、 変化する出現回数 (「最小オカレンス」 <> 「最大オカレンス」) は許可されます。
「不在エレメント区切り文字の抑制」が「しない」の場合、構文解析時にすべてのオカレンスが予期され、書き込み時に生成されますが、構文解析では不在のエレメントが受け入れられます。 オプションのオカレンス (「最大オカレンス」 = 0) は無視されます。区切り文字は、構文解析時に予期され、書き込み時に生成されます。 常時不在 (「最大オカレンス」 = 0) は許可されます。 区切り文字は構文解析時に予期されず、書き込み時に出力されません。 「反復エレメント区切り文字」が「区切り文字」と異なる場合のみ、無制限の出現回数 (「最大オカレンス」 = -1) が許可されます。 反復は、区切り文字、または収容グループの「グループ・ターミネーター」か「区切り文字」によって終了するか、あるいはメッセージ・ビット・ストリームの末尾によって終了する必要があります。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力します。 |
固定長 |
「最大オカレンス」は、構文解析および書き込みにのみ使用されます。 一般に、構文解析時に「最大オカレンス」の出現が予期され、
書き込みを行うときに「最大オカレンス」の出現が生成されます。
欠落エレメントにはデフォルト値が使用され、余分なエレメントは破棄されます。 変化する出現回数 (「最小オカレンス」 <> 「最大オカレンス」) は無視され、「最大オカレンス」が想定されます。 オプションのオカレンス (「最小オカレンス」 = 0) は無視され、「最大オカレンス」が想定されます。 常時不在 (「最大オカレンス」 = 0) は許可されます。 固定長のみ。 エレメントまたはグループが親グループ内の最後の子であり、そのグループが「グループ・ターミネーター」または収容グループの「グループ・ターミネーター」か「区切り文字」で終了するか、あるいはメッセージ・ビット・ストリームの末尾で終了する場合は、無制限の出現回数 (「最大オカレンス」 = -1) が許可されます。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力し、 この数が「最小オカレンス」より小さい場合は、追加のデフォルト値が書き込まれます。 |
可変長エレメントを区切る | 固定長単純エレメントの場合、上記の「固定長」の分離の規則に従います。ただし、2 つの違いがあります。
可変長単純エレメント、すべての複合エレメントおよびグループの場合、上記の「全エレメントを区切る」の規則に従います。 |
データ・パターン | 構文解析および書き込み時に、「最小オカレンス」と「最大オカレンス」は事実上、無視されます。 構文解析時に、パターンの突き合わせが可能な限り何度も行われます。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力します。 構文解析時に、データ・パターンがゼロ長の一致を許可しており、ゼロ長の一致が発生する場合、エレメントがメッセージ・ツリーに追加され、無限ループが起こらないようにするために突き合わせは終了します。 不定の出現回数 (「最小オカレンス」 <> 「最大オカレンス」) は許可されます。 オプションのオカレンス (「最小オカレンス」 = 0) は許可されます。 常時不在 (「最大オカレンス」 = 0) は許可されます。 無制限の出現回数 (「最大オカレンス」 = -1) は許可されます。 |
TDS プロパティーの「反復参照」は、メッセージ内のオブジェクト (エレメントまたはグループ) の反復回数を保持するフィールドを指定します。 メッセージ内の参照先オブジェクトの前に、反復の回数を保持するフィールドが存在しなければなりません。
構文解析パースペクティブからは、「反復参照」プロパティーは、 「最小オカレンス」および「最大オカレンス」プロパティーの役割を置換します。
オブジェクトの「反復参照」プロパティーの値を指定した場合、 「最小オカレンス」および「最大オカレンス」に指定した値は、構文解析時および書き込み時に無視されます。 しかし、「最小オカレンス」および「最大オカレンス」に指定した値は、論理妥当性検査によって使用されます。
構文解析および書き込み時に、「反復参照」プロパティーの正確な解釈は、以下の表に示されている親複合タイプまたはグループの「データとエレメントの分離」プロパティーに従って行われます。
分離タイプ | 「反復参照」の解釈 |
---|---|
タグ付き区切り |
「反復参照」は、構文解析および書き込み時に事実上、無視されます。 構文解析時に、出現回数はメッセージ内のタグによって識別されます。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力します。 |
全エレメントを区切る | 「反復参照」は、構文解析および書き込み時に使用されます。これは、エレメントの「反復エレメント区切り文字」プロパティー、および親タイプの「不在エレメント区切り文字の抑制」プロパティーに使用されます。 「反復参照」は、親複合タイプまたはグループの「不在エレメント区切り文字の抑制」が 「しない」に設定されている場合のみ許可されます。 構文解析時に「反復参照」のすべての出現が予期され、書き込みを行うときに生成されます。 ただし、構文解析は、不在であるエレメントを受け入れます。 「反復参照」 = 0 は許可されます。 区切り文字は構文解析時に予期されず、書き込み時に生成されません。 |
固定長 |
「反復参照」は、構文解析時および書き込み時に使用されます。 構文解析時に「反復参照」の出現が予期され、
欠落エレメントに使用されるデフォルト値で書き込みを行うときに生成されます。
「反復参照」 = 0 は許可されます。 |
可変長エレメントを区切る | 固定長単純エレメントの場合、上記の「固定長」の分離の規則に従います。 可変長単純エレメント、すべての複合エレメントおよびグループの場合、上記の「全エレメントを区切る」の規則に従います。 |
データ・パターン | 「反復参照」は、構文解析および書き込み時に事実上、無視されます。 構文解析時に、パターンの突き合わせが可能な限り何度も行われます。 書き込み時に、書き込みプログラムはメッセージ・ツリー内のすべてのオカレンスを出力します。 構文解析時に、データ・パターンがゼロ長の一致を許可しており、ゼロ長の一致が発生する場合、エレメントがメッセージ・ツリーに追加され、無限ループが起こらないようにするために突き合わせは終了します。 |