XML スキーマの生成

このトピックでは、XML スキーマの生成の動作について説明します。 たとえば、WebSphere Business Integration Message Broker が作成する XML インスタンス文書を続けて妥当性検査できるように、 メッセージ定義ファイルから生成されたスキーマを使用できます。

緩い生成

緩い生成は、「内容の妥当性検査 (Content Validation)」「オープン (Open)」または「オープン定義 (Opendefined)」に設定する複合タイプ、 または「構成 (Composition)」「UnorderedSet」 に設定する複合タイプが、どのように生成されるスキーマで表現されるかに影響を与えます。 そうした妥当性検査スキーマは、 MRM パーサーの妥当性検査より広範囲のメッセージを許可する点に注意してください。

「内容の妥当性検査 (Content Validation)」が 「オープン (Open)」または「オープン定義 (OpenDefined)」に設定されている
ここでは、複合タイプ (グローバルまたは無名) の内容が、anyType の単一エレメントで置き換えられます。 以下の生成パターンは、 「内容の妥当性検査 (Content Validation)」「オープン (Open)」 に設定した複合タイプに対して使用されます。
<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax"
			minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</element>

「内容の妥当性検査 (Content Validation)」「オープン定義 (Opendefined)」に設定されている場合、以下のパターンが使用されます (ここでリストされるネームスペースはすべて、それらを含むメッセージ・セットで定義されているものです)。

<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax"
    			minOccurs="0" maxOccurs="unbounded"
  				namespace="http://www.ns1 http://www.ns2" />
		</sequence>
	</complexType>
</element>
「構成 (Composition)」が「UnorderedSet」に設定されている
「構成 (Composition)」「UnorderedSet」に設定されており、 非順序の性質を模倣したい場合は、適切な基数を持つ選択項目が挿入されます。 これは以下に示されています。
<element name="xmlNameOfMessage">
	<complexType>
		<sequence maxOccurs="unbounded" 
		 minOccurs= "(minOccurs of original sequence) * 
          (items in original sequence)">
			<choice>
			      .. sequence contents ..
			</choice>
		</sequence>
	</complexType>
</element>

厳密な生成

厳密な生成は、「内容の妥当性検査 (Content Validation)」「オープン (Open)」または「オープン定義 (Opendefined)」に設定する複合タイプ、 または「構成 (Composition)」「UnorderedSet」 に設定する複合タイプが、どのように生成されるスキーマで表現されるかに影響を与えます。 そうした妥当性検査スキーマは、 MRM パーサーの妥当性検査より狭い範囲のメッセージを許可する点に注意してください。

厳密はデフォルトの生成オプションであり、モデルの拡張をせずに、 メッセージ定義ファイルに保持されているスキーマと一致するスキーマを生成します。

「内容の妥当性検査 (Content Validation)」が 「オープン (Open)」または「オープン定義 (OpenDefined)」に設定されている
複合タイプ (グローバルまたは無名) は、自己定義エレメントを含む機能を失い、クローズします。
「構成 (Composition)」が「UnorderedSet」に設定されている
複合タイプ (グローバルまたは無名) は、非順序になる機能を失い、シーケンスになります。

xsd:element のレンダリング

XML 物理形式がスキーマ生成時に指定された場合、 ワイヤー形式カスタマイズが論理モデルに適用されます。 これらのプロパティーは、モデル内のエレメントが XML ワイヤー形式に対するメッセージ内に表示される時に実際にどのようにレンダーされるかを制御します。 使用可能な様々なレンダー・オプションについては、XML メッセージのレンダリング・オプションを参照してください。 生成されるスキーマの例が以下にあり、 ローカル・エレメント用に使用可能な様々なレンダー・オプションに対して何が生成されるかが示されています。 これらの例では、ID 属性名 (ID Attribute Name) または値属性名 (Value Attribute Name) プロパティーの ネームスペースを変更しない点に注意してください。また、complexType1 で指定されるすべての エレメントが、スキーマ組み込みのタイプ・ストリングであると想定します。

    <xsd:complexType name="complexType1">
                <xsd:sequence>
                	<!-- Local element Render = 'XMLElement' -->
                        <xsd:element name="localElement1" type="xsd:string"/>
                	<!-- Local element Render = 'XMLElementAttrID' ID Attribute Name = 'id' -->
            <xsd:element name="localElement2">
                                <xsd:complexType>
                                        <xsd:simpleContent>
                                                <xsd:extension base="xsd:string">
                                                        <xsd:attribute name="id" type="xsd:string"/>
                                                </xsd:extension>
                                        </xsd:simpleContent>
                    </xsd:complexType>
                        </xsd:element>
                	<!-- Local element Render = 'XMLElementAttrVal' Val Attribute Name = 'val' -->
            <xsd:element name="localElement3">
                                <xsd:complexType>
                                        <xsd:simpleContent>
                                                <xsd:extension base="xsd:string">
                                                        <xsd:attribute name="val" type="xsd:string"/>
                                                </xsd:extension>
                                        </xsd:simpleContent>
                    </xsd:complexType>
                        </xsd:element>
                	<!-- Local element Render = 'XMLElementAttrIDVal' ID Attribute Name = 'id' Val Attribute Name = 'val' -->
            <xsd:element name="localElement4">
                                <xsd:complexType>
                                        <xsd:simpleContent>
                                                <xsd:extension base="xsd:string">
                                                        <xsd:attribute name="val" type="xsd:string"/>
                                                        <xsd:attribute name="id" type="xsd:string"/>
                                                </xsd:extension>
                                        </xsd:simpleContent>
                    </xsd:complexType>
                        </xsd:element>
                </xsd:sequence>
                	<!-- Local element Render = 'XMLAttribute' -->
                <xsd:attribute name="localElement5" type="xsd:string"/>
    </xsd:complexType>

xsd:attribute のレンダリング

xsd:Attributes のレンダリングはサポートされていません。 ユーザーは属性の名前のみを変更できます。

組み込み単純タイプおよび複合エレメント (Compound Element)

これらは、minOccurs および maxOccurs の両方が 0 に設定され、 かつ事前定義された ComIbmMrm_xxx タイプの 1 つを持つエレメントとして、 メッセージ定義ファイル内にモデル化されます。 スキーマの生成時に、そうしたエレメントのタイプは、 それぞれの ComIbmMrm_xxx タイプの基本タイプに変更されます。

それらの ComIbmMrm_xxx タイプの 1 つから継承するグローバル単純タイプがある場合、 それらのグローバル単純タイプは、 対応する ComIbmMrm_xxx タイプの基本タイプから継承するように変更されます。

生成されるスキーマ・ファイルには、それらの ComIbmMrm_xxx タイプは出現しません。

例えば、以下のようにタイプが定義されたグローバル・エレメントがあるとします。

<element name="globalElement1" type="ns1:ComIbmMrm_BaseValueBinary"/>

この結果として、スキーマ・ファイルおよび以下のように定義された対応する xsd 基本タイプを持つ グローバル・エレメントが生成されます。

<element name="globalElement1" type="hexBinary"/>

関連概念
メッセージのモデル化
メッセージ・モデル

関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理

関連資料
メッセージ・モデル参照情報
メッセージ・モデル・オブジェクトのプロパティー