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


どのようにしてモデル・グループ配列を処理するか

モデル・グループ配列は、モデル・グループが maxOccurs > 1 の値を持っているときに作成されます。

モデル・グループはフラット化され、DataObject の中で表現されないため、モデル・グループの内部のプロパティーは複数カーディナリティー・プロパティーになり、これにより isMany() メソッドは、まだ true でなくても true を返します。 それらの minOccurs および maxOccurs ファセットは、収容しているモデル・グループのファセットによって乗算されます。Choice は、他のモデル・グループと同じように maxOccurs ファセットを乗算しますが、minOccurs の乗算値として常に 0 を使用します。なぜなら、choice 内のいずれかのデータは選択されない場合があるからです。

例えば、以下の XSD にはモデル・グループ配列があります。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
		targetNamespace="http://ModelGroupArray">
  <xsd:complexType name="ModelGroupArray">
    <xsd:sequence minOccurs="2" maxOccurs="5">
      <xsd:element name="element1" type="xsd:string"/>
      <xsd:element name="element2" type="xsd:string" 
			minOccurs="0" maxOccurs="3"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

前に述べたように、element1element2 は get(...) アクセサーが List を返すよう、この時点で複数カーディナリティーになります。Element1 の minOccurs はデフォルトの 1 で、maxOccurs もデフォルトの 1 です。Element2 の minOccurs は 0 で、 maxOccurs は 3 です。次の例では、それらの新しい minOccurs と maxOccurs は、以下のようになります。

DataObject - ModelGroupArray
	Property[0] - element1 - minOccurs=(2*1)=2 - maxOccurs=(5*1)=5
	Property[1] - element2 - minOccurs=(2*0)=0 - maxOccurs=(5*3)=15

タイプが Choice だとすると:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
		targetNamespace="http://ModelGroupArray">
  <xsd:complexType name="ModelGroupArray">
    <xsd:choice minOccurs="2" maxOccurs="5">
      <xsd:element name="element1" type="xsd:string"/>
      <xsd:element name="element2" type="xsd:string" 
			minOccurs="0" maxOccurs="3"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

は、以下の minOccurs を生成します。これは、element1 だけが毎回選択されるか element2 だけが毎回選択される choice の除外によるもので、したがって、妥当性検査をパスするためには、どちらも 0 個のオカレンスを持つことができなければなりません。

DataObject - ModelGroupArray
	Property[0] - element1 - minOccurs=(0*1)=0 - maxOccurs=(5*1)=5
	Property[1] - element2 - minOccurs=(0*0)=0 - maxOccurs=(5*3)=15

concept 概念トピック

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


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


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