2.4.1 XMLスキーマの組込み単純なデータ型のマッピング

次の表に、サポートされているXMLスキーマの組込み単純なデータ型と、対応するOracle Tuxedo FML32のフィールド・データ型を示します。

表2-3 サポートされているXMLスキーマの組込み単純なデータ型

XMLスキーマの組込み単純な型 Oracle Tuxedo FML32のフィールド・データ型 Oracle TuxedoプログラムのC/C++プリミティブ型 ノート
xsd:byte FLD_CHAR char -
xsd:unsignedByte FLD_UCHAR unsigned char -
xsd:boolean FLD_BOOL char/bool

値のパターン

[ ‘T’ | ‘F’ ]

xsd:short FLD_SHORT short -
xsd:unsignedShort FLD_USHORT unsigned short -
xsd:int FLD_LONG long -
xsd:unsignedInt FLD_UINT unsigned int -
xsd:long FLD_LONG long 32ビットのOracle Tuxedoプログラムでは、Cプリミティブ型であるlongxsd:longのすべての有効な値を表現できません
xsd:long FLD_LLONG long long 32ビットのOracle Tuxedoプログラムでは、Cプリミティブ型であるlong longは、xsd:longのすべての有効な値を表現できます
xsd:unsignedLong FLD_LONG unsigned long 32ビットのOracle Tuxedoプログラムでは、Cプリミティブ型であるunsigned longxsd:longのすべての有効な値を表現できません
xsd:unsignedLong FLD_ULONG unsigned long long 32ビットのOracle Tuxedoプログラムでは、Cプリミティブ型であるunsigned longは、xsd:unsignedLongのすべての有効な値を表現できます
xsd:float FLD_FLOAT float -
xsd:double FLD_DOUBLE double -
xsd:string

(およびxsd:stringから派生されたすべての組込み型(xsd:tokenxsd:Nameなど))

FLD_STRING

FLD_MBSTRING

char [ ]

wchar_t []

(NULLで終わる文字列)

xsd:stringは、オプションで次としてのマッピングが可能です

FLD_STRING

または

FLD_MBSTRING

wsdlcvtを使用します
xsd:base64Binary FLD_CARRAY char[ ] -
xsd:hexBinary FLD_CARRAY char [ ] -
その他のすべての組込みデータ型(Data/Time関連、decimal/Integer関連、あらゆるURL、QName、NOTATION) FLD_STRING char [ ] 対応するXML組込みデータ型の値パターンに準拠する必要があります。そうしないと、サーバー側のWebサービスはリクエストを受け付けません。

次のサンプルでは、XMLスキーマの組込み単純な型のデータを、Oracle Tuxedoプログラムで作成する方法を示します。

  • XMLスキーマの組込み型のサンプル - xsd:string
  • XMLスキーマの組込み型のサンプル - xsd:hexBinary
  • XMLスキーマの組込み型のサンプル - xsd:date

表2-4 XMLスキーマの組込み型のサンプル - xsd:string

XMLスキーマ定義
- <xsd:element name=”message” type=”xsd:string” />
対応するFML32フィールド定義(FLD_MBSTRING)
- # Field_name Field_type Field_flag Field_comments message mbstring -
C疑似コード
-
FBFR32 * request;
FLDLEN32 len, mbsize = 1024;
char * msg, * mbmsg;
msg = calloc( ... ); mbmsg = malloc(mbsize);
...
strncpy(msg, “...”, len); /* The string is UTF-8 encoding */
Fmbpack32(“utf-8”, msg, len, mbmsg, &mbsize, 0); /* prepare mbstring*/
Fadd32( request, message, mbmsg, mbsize);

表2-5 XMLスキーマの組込み型のサンプル - xsd:hexBinary

XMLスキーマ定義
-
<xsd:element name=”mem_snapshot” type=”xsd:hexBinary” />
対応するFML32フィールド定義(FLD_MBSTRING)
-
# Field_name Field_type Field_flag Field_comments
mem_snapshot carray - 
C疑似コード
-
FBFR32 * request;
FLDLEN32 len;
char * buf;
buf = calloc( ... );
...
memcpy(buf, “...”, len); /* copy the original memory */
Fadd32( request, mem_snapshot, buf, len);

表2-6 XMLスキーマの組込み型のサンプル - xsd:date

XMLスキーマ定義
-
<xsd:element name=”IssueDate” type=”xsd:date” />
対応するFML32フィールド定義(FLD_STRING)
- # Field_name Field_type Field_flag Field_comments IssueDate string -
C疑似コード
-
FBFR32 * request;
char date[32];
...
strcpy(date, “2007-06-04+8:00”); /* Set the date value correctly */
Fadd32( request, IssueDate, date, 0);