2.10.3.3 XMLとFML/FML32フィールド型のマッピング

XML形式とFML/FML32フィールド間の関係では、XML要素名はFML/FML32フィールド名と同じですが、XML値は対応するフィールド型をもとに解釈されます。

開始および終了タグは、フィールドの名前を使用します。属性は、必要に応じてFLD_FML32、FLD_MBSTRINGFLD_VIEW32で提供されます。フィールド名と属性の大文字と小文字は区別されます。

フィールド値は文字列として読み取られ、以下のフィールド型に変換されます。

<FIELDNAME Attribute="Attribute Value"> FIELDVALUE </FIELDNAME>

FML/FML32フィールド型は、次のようにXMLバッファ型にマッピングされます。

フィールド型 変換マッピング
SHORT LONG CHAR FLOAT DOUBLE STRING FLD_SHORT、FLD_LONG、FLD_CHAR、FLD_FLOAT、FLD_DOUBLEおよびFLD_STRINGフィールドとXML文字列値間の変換は単純です。型の値の形式は、Ftypcvt()で使用されているスタイルに従います。
FML:AMOUNT=10.00
XML:<AMOUNT>10.00</AMOUNT>
CARRAY FLD_CARRAYフィールドの変換時に、Tuxedoでは、XMLバイト・ストリーム値はXMLの2文字から1バイト値に変換されます。つまり、文字の各XMLペアは16バイト値を表します。
FML: Oracle=TUXEDO
XML:<ORACLE>54555845444F</ORACLE>
PTR XMLへの変換時に、FLD_PTRフィールド名は、STRING、MBSTRING、CARRAY、FML、FML32およびVIEW32のうち、有効なTuxedoバッファ型を示し、無効なバッファ型を無視します。バッファの内容がXMLに変換された場合、BUFTYPE属性はバッファ型タグに含まれます(例1を参照)。FML32への変換時に、BUFTYPE属性をバッファ型タグに含める必要があります。有効な唯一の値は、STRING、MBSTRING、CARRAY、FML、FML32およびVIEW32のTuxedoバッファ型です。BUFTYPE属性を指定していない場合、または無効な値を使用している場合、要素はFML32で無視されます。 例1 - XML変換:
<stringptr
BUFTYPE=”STRING”>teststringptr
</stringptr>
例2 - FML32変換:
<fml32ptr
BUFTYPE=”FML32”><id>2323</id>
</fml32ptr>
FML32 FLD_FML32フィールド名は、FMLフィールド名に基づいて開始および終了タグでサポートされます。このXMLドキュメントには、バッファに含まれるフィールドごとに<fieldname>value</fieldname>の複数の説明が含まれます。埋込みFML32は許可されるので、XMLの階層記述は受け付けられます。

ノート:

省略可能な属性Tpmbencは、XMLとFML32間の変換時にFML32バッファのMBSTRINGフィールド全体のエンコードを指定するために使用します
下記の最初の例には、エンコード属性が含まれます。2番目の例は、IDという埋め込みFML32フィールドを含むBANKフィールドに対するFML32定義です。
例1:
<ACCT Tpmbenc="EUC"><NM>Smith</NM><TRAN>OPEN</TRAN></ACCT>

例2: <BANK><BID>001</BID><ID><NM>Jones</NM><AC>001</AC></ID></BANK>

VIEW32 FLD_VIEW32フィールド名がサポートされているので、FLD_INTフィールドとFLD_DECIMALフィールドも認識されます。FLD_INTは、FLD_LONGと同様に処理されます。開始および終了タグは、FLD_VIEW32フィールド名に基づいています。使用するVIEW名を指定するためにVname属性が取られます。このXMLドキュメントには、<fbname> value </fbname>の複数の説明が含まれます(fbnameはVIEWメンバー・フィールドのバッファ名です)。
<CURR Vname="Myview">
<FB1>001</FB1><FB1>002</FB1><FB2>7.50</FB2><FB3>Y</FB3> 
</CURR>
MBSTRING FLD_MBSTRINGフィールド変換は、Encoding属性、およびFML32フィールドを記述するためのフィールド・データを使用します。この変換は、Fmbpack32を使用した場合と同じです。次の条件に注意してください。
  1. Encoding属性があり、値が指定されている場合、データ値を基にFLD_MBSTRING値が作成されます。
  2. Encoding属性がなく、Tpmbencが完全なFML32バッファ用に設定されている場合、FLD_MBSTRINGTpmbenc値を適用します。
  3. Encoding属性がなく、Tpmbencも指定されていない場合、プロセス環境TPMBENC (すべて大文字)の取得が試みられ、属性定義のかわりにFLD_MBSTRING値としてそのエンコードが使用されます。
  4. 上記の3つの条件のいずれにも当てはまらない場合、それらの要素は無視され、変換は実行されません。
データは、FLD_CARRAYフィールドと同じ方法で処理されます。
<MBIN Encoding="SJIS">C7E8D9CAB3</MB
IN>