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