7.4.10 マッピングの注意事項
マッピングしたあとに,データ変換定義の内容が妥当かどうか検証をします。検証でエラーが発生しないように,次の点を考慮してマッピングしてください。
-
「7.11 マッピングの条件」に従ってマッピングしてください。
-
マッピング元の変換元ノードとマッピング先の変換先ノードの出現回数は一致させてください。変換元ノードが存在しない場合,変換先ノードが必須ノードであっても,ノードは生成されません。
-
最小出現回数が2回以上に設定されている複合内容の要素は,必ずマッピングしてください。ただし,祖先に最小出現回数が0回のノードが出現する場合は除きます。
-
最小出現回数が1回以上に設定されている単純内容の要素(any要素を含む)は,必ずマッピングしてください。
-
複合内容要素の子要素にany要素が複数存在しないようにしてください。
-
choice要素の子ノードまたは子孫ノードに対してマッピングする場合,複数の子要素が同時に出現するか,またはどの子要素も出現しないようなマッピングを定義しないでください。
-
choice要素の複数の子要素または子孫ノードに対してマッピングする場合は,複数の子要素が同時に出現しないようにしてください。
-
choice要素のすべての子要素の最小出現回数が1回以上に設定されていて,1つの子要素の子孫要素がマッピングされている場合,その子要素に対して選択ファンクションを使用するときは,複数の子要素が同時に出現しないようにしてください。
-
マッピング先の変換先ノードには,targetNamespaceにxslとxsiのURIが指定されている名前空間を定義しないでください。
-
インスタンス属性(xsi:type,xsi:schemaLocation,xsi:noNamespaceSchemaLocation)は,マッピング元の変換元ノードで定義されていても,マッピング先の変換先ノードには出現しません。
-
インスタンス属性xsi:nilが定義された変換元ノードをnillable属性がtrueと定義された変換先ノードにマッピングした場合,変換先ノードには,変換元ノードのxsi:nilで定義された内容が反映されます。同様に,インスタンス属性xsi:nilが定義された変換元ノードを選択ファンクション(choose)を経由するようにマッピングした場合も,変換先ノードには,変換元ノードのxsi:nilで定義された内容が反映されます。
-
nillable属性が定義されている変換元ノードから,nillable属性が定義されていない変換先ノードへマッピングしないでください。
-
マッピング定義編集中に次のような電文フォーマットの変更をした場合,表示される電文フォーマットは変更前のものとなります。変更後の電文フォーマットを反映させるには,対象のサービスを閉じてから再度マッピング定義を起動してください。
-
グローバル要素の追加または削除
-
ルート要素以外のグローバル要素への変更
-
-
import先,またはinclude先のスキーマ間で1つの名前空間URIに対して複数の名前空間接頭辞が定義されている場合,マッピング定義の検証(パッケージングを含む)でエラーとなります。1つの名前空間URIに対して使用する名前空間接頭辞は1種類にしてください。
-
電文フォーマットのスキーマファイルで,異なる名前空間接頭辞で同じ名前空間を指定している場合,マッピング定義起動時に毎回,ルート要素選択ダイアログが表示されることがあります。1つの名前空間に対して,2つ以上の名前空間接頭辞は定義しないでください。
-
データ変換定義で,次のような#any要素はマッピングしないでください。
-
兄弟要素に#anonymous,#(sequence),または#(choice)がある#any要素
-
#(sequence)または#(choice)下に存在し,#(sequence)または#(choice)の兄弟要素にほかの#(sequence)または#(choice)が存在する#any要素
-
-
ノード一覧型カスタムファンクションの出力先を複合内容要素に指定した場合,同じ依存関係の子孫ノードにマッピングできません。
-
選択ファンクションの出力値にノード一覧型カスタムファンクションが指定されている場合の注意事項を次に示します。
-
選択ファンクションのマッピング先が複合内容要素で,選択ファンクションの別の出力値が「値を出力する」の場合,ノード一覧型カスタムファンクション以外のものを設定できません。
-
選択ファンクションのマッピング先が属性の場合,選択ファンクションの出力値にノード一覧型カスタムファンクションを設定できません。
-
-
データ変換上で扱う数値はdouble型であり,double型では2進数表現で数値を扱っているため,計算で2のべき乗では表せない数値を扱った場合に丸め誤差が発生します。また,double型の有効桁数は約16桁となるので,約16桁以上の数値を扱う場合も丸め誤差が発生します。そのため,数値演算ファンクションまたは総和ファンクションの演算結果に誤差が生じる可能性があります。必要に応じて,数値フォーマット変換ファンクションまたは端数処理ファンクションで調整してください。正確な演算が必要な場合はカスタムファンクションを利用して演算処理を実装してください。
-
マッピング先の変換先ノードに出現回数が設定されていて,かつノード条件やくり返しファンクションを使用しない場合は,必ず先頭(position()='1')のデータがマッピングされます。