WebSphere Enterprise Service Bus バージョン 6.2.0 オペレーティング・システム: AIX、HP-UX、i5/OS、Linux、Solaris、Windows


xsi:type での共用体のシリアライズとデシリアライズ

XSD では、共用体とは、メンバーと呼ばれるいくつかの単純データ型の字句スペースをマージする方法のことです。

以下の XSD の例は、整数と日付をメンバーとする共用体を示しています。

<xsd:simpleType name="integerOrDate">
	<xsd:union memberTypes="xsd:integer xsd:date"/>
</xsd:simpleType>

この複数のタイプ指定により、デシリアライゼーション時およびデータの操作時に混乱が起きる可能性があります。

ビジネス・オブジェクトは SDO でシリアライゼーションに xsi:type を使用することをサポートしており、デシリアライゼーションで XML データ内に xsi:type が存在しない場合は、同じアルゴリズムに従ってタイプを決定します。

したがって、データ (この例では数値の「42」) が整数としてデシリアライズされることを保証するために、入力 XML で指定された xsi:type を使用できます。また、整数がストリングの前に来るよう、XSD 内で共用体のメンバー・リストを順序付けることもできます。以下の例では、両方の方式の実装方法を示します。

<integerOrString xsi:type="xsd:integer">42</integerOrString>

<xsd:simpleType name="integerOrString">
	<xsd:union memberTypes="xsd:integer xsd:string"/>
</xsd:simpleType>

同様に、ユーザーがデータをストリングとしてデシリアライズさせる場合は、以下のいずれかの変更によって、そのような動作を起こさせることができます。

<integerOrString xsi:type="xsd:string">42</integerOrString>

<xsd:simpleType name="integerOrString">
	<xsd:union memberTypes="xsd:string xsd:integer"/>
</xsd:simpleType>

string タイプがこの共用体の最初のメンバーである場合は、決して情報が損失しないことに注意してください。また、この共用体は、xsi:type 以外のアルゴリズムで常に選択されるすべてのデータも保持できます。string 以外のタイプを使用する場合は、XML の中で xsi:type を使用するか、XSD でメンバー・タイプの順序を変更して、他のメンバーがデータを受け入れられるようにする必要があります。


concept 概念トピック

ご利用条件 | フィードバック


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cbo_union.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。