このトピックでは、XML スキーマの生成の動作について説明します。 例えば、WebSphere Message Broker が作成する XML インスタンス文書を続けて妥当性検査できるように、 メッセージ定義ファイルから生成されたスキーマを使用できます。
緩い生成は、「内容の妥当性検査」を 「オープン」または「オープン定義」に設定する複合タイプ、 または「構成」を「UnorderedSet」 に設定する複合タイプが、どのように生成されるスキーマで表現されるかに影響を与えます。 そうした妥当性検査スキーマは、 MRM パーサーの妥当性検査より広範囲のメッセージを許可する点に注意してください。
<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>
<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 パーサーの妥当性検査より狭い範囲のメッセージを許可する点に注意してください。
厳密はデフォルトの生成オプションであり、モデルの拡張をせずに、 メッセージ定義ファイルに保持されているスキーマと一致するスキーマを生成します。
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: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"/>