2.5.2.3 XMLデータ・マッピング

XMLデータ・マッピングは、SOAPモードで使用されるマッピングと類似のルールを使用して実行されます。

ノート:

  • 小数の値がない浮動小数点数は、整数として表現されます。たとえば、10.0は10と出力されます。これは現時点での制約です。
  • HTTPモードにはインタフェースがないため、ネームスペースは生成または処理されません。
  • シンプル・バッファ(STRINGCARRAYMBSTRING、XML)は、XML処理なしにそのまま送受信されます。動作はJSON処理と同じです(つまり、マッピングは必要ありません)。
  • FMLおよびFML32のリクエストは、ルート要素でラップする必要があります(ルート要素の名前は、XMLが適切な形式であれば無視されます)。また、応答は、SALTDEPLOY構成ファイルのHTTP/Service/@outputbuffer属性に指定されているサブタイプと同じ名前の要素か、サブタイプが構成されていない場合は<root>要素でラップします。VIEW、VIEW32、X_COMMONおよびX_C_TYPEバッファはサブタイプ名をルート要素名として使用します。

Oracle Tuxedoの様々なバッファ・タイプとXMLとの変換は、次の表に示すように行われます:

表2-17 XMLデータ・マッピング

Oracle Tuxedoバッファ・タイプ 説明 HTTP XMLマッピングの例
STRING Oracle Tuxedo STRING型付きバッファは、NULL文字で終わる文字列の格納に使用します。Oracle Tuxedo STRING型付きバッファは自己記述型バッファです。 HELLO WORLD!
CARRAY Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置にNULLを含んでよい)。CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。 バイナリ・コンテンツ
MBSTRING Oracle Tuxedo MBSTRING型付きバッファは、マルチバイト文字配列に使用します。Oracle Tuxedo MBSTRINGバッファは次の3つの要素により構成されます。

- コードセット文字エンコーディング

- データ長

- エンコーディングの文字配列。

UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成のenableMultiEncodingプロパティをtrueに設定する必要があります。

Content-Type設定に基づいてエンコードされたマルチバイト文字列。
XML Oracle Tuxedo XML型付きバッファにはXMLドキュメントが格納されます。

GWWSサーバーでは、実際のXMLデータが整形式であることが検証されます。それ以外の事項(スキーマ検証など)の適用については確認されない。

ペイロードには、単一ルートのXMLバッファのみを格納できます。この点はGWWSサーバーによりチェックされます。

元のXMLドキュメントに含まれるプロローグ情報は、ペイロードに含めて伝送することはできません。

UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成のenableMultiEncodingプロパティをtrueに設定する必要があります。

XMLフラグメントはそのままです
X_C_TYPE VIEW/VIEW32と同じ -
X_COMMON VIEW/VIEW32と同じ -
X_OCTET CARRAYと同じ -
VIEW/VIEW32 Oracle Tuxedo VIEWおよびVIEW32型付きバッファには、Oracle Tuxedoアプリケーションで定義されたC構造が格納されます。

VIEW構造は、VIEW定義ファイルを使用して定義されます。VIEWバッファ・タイプは複数のフィールドを定義できます。

VIEWでは次のフィールド型がサポートされています:

  • short
  • int
  • long
  • float
  • double
  • char
  • string
  • carray (base64でエンコードされたコンテンツとして表現)
  • bool
  • unsigned char
  • signed char
  • wchar_t* wchar_t
  • unsigned int
  • unsigned long
  • long long
  • unsigned long long
  • long double
<VIEW>
<viewfieldname>
fieldcontent
</viewfieldname>
</VIEW>
- VIEW32では、すべてのVIEWフィールド型、mbstringおよび埋込みVIEW32型がサポートされています。

サブ要素の名前はVIEWフィールド名と同じです。サブ要素の出現回数は、VIEWフィールド定義のcount属性によって異なります。サブ要素の値は、XMLスキーマの型に対応するVIEWフィールド・データ型である必要があります。

-
FML/FML32 Oracle Tuxedo FMLおよびFML32型バッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。各データ・フィールドは独自の識別子、オカレンス番号、および可能であれば長さインジケータを保持します。

FMLでは次のフィールド型がサポートされています:

  • FLD_CHAR
  • FLD_SHORT
  • FLD_LONG
  • FLD_FLOAT
  • FLD_DOUBLE
  • FLD_STRING
  • FLD_CARRAY (base64エンコードされたコンテンツとして)

FML32では、すべてのFMLフィールド型とFLD_PTRFLD_MBSTRINGFLD_FML32FLD_VIEW32がサポートされています。

ネストFLD_VIEW32: ビュー・サブタイプの名前は組込みVIEW32の名前である必要があります。例:
VIEW32 example.v definition file:
VIEW v32example
char flag1 - 1 ---
string str - 1 - 100
XML content (EVIEW32 is a FLD_VIEW32 fml32 type):
<EVIEW32>
<v32example>
<flag1>x</flag1>
<str>somestring</str>
</v32example>
</EVIEW32>
RECORD RECORDバッファ・タイプは、コピーブック・レコードを表します。RECORD型には、個々のレコード構造体を示すサブタイプが必要です。

生成されるCOBOL型:

  • RECORD
  • COMP-1
  • COMP-2
  • S9(18)
  • 9(18)
  • S9(9)
  • 9(9)
  • S9(4)
  • S9(10)V9(10)
  • X(1024)
  • @binary=true
<myRecord>
  <name>aaa</name>
  <num>1000</num>
  <subgroup>
    <long1> 3000 </long1>
    <string1> www </string1>
  </subgroup>
</myRecord>

ノート:

非構造化バッファ・タイプ(STRINGCARRAY X_OCTET MBSTRING)はデータをXMLオブジェクトとしてラップしません。データはそのまま転送されます。