XML スキーマの生成

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

緩い生成

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

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

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

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

厳密な生成

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

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

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

xsd:element のレンダリング

XML 物理形式がスキーマ生成時に指定された場合、 ワイヤー形式カスタマイズが論理モデルに適用されます。 これらのプロパティーは、モデル内のエレメントが XML ワイヤー形式に対するメッセージ内に表示される時に実際にどのようにレンダーされるかを制御します。 使用可能な別のレンダー・オプションについては、『XML のレンダリング・オプション』を参照してください。生成されるスキーマの例が以下にあり、 ローカル・エレメント用に使用可能な様々なレンダー・オプションに対して何が生成されるかが示されています。 これらの例では、ID 属性名または値属性名プロパティーのネーム・スペースを変更しない点に注意してください。また、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 のレンダリングはサポートされていません。 ユーザーは属性の名前のみを変更できます。

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

これらは、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"/>
関連概念
メッセージのモデル化
メッセージ・モデル
XML ワイヤー形式: 論理モデルとの関係
関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理
関連資料
メッセージ・モデルの参照情報
メッセージ・モデル・オブジェクトのプロパティー
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ad15780_