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, 2005 Last updated: 11/07/2005
ad15780_