Group 要素のバインディング サポート

このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.

.NET Framework では、<group> 要素のバインディングを一部サポートしています。

XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、各 <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。

説明

<group> 要素を使用すると、スキーマの設計で、要素のグループをグローバルに定義でき、任意の数の複合型で参照経由でそのグループを再利用できます。

.NET Framework には、コードで要素のグループを表現する形式がありません。XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、代わりに、ref 属性によって、各 <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。各要素に対して、パブリック フィールドが 1 つ作成されます。

要素バインディングのフィールドまたはプロパティの同じグループを複数のクラスで直接定義しないようにするには、手動で基本クラスを作成し、その基本クラスから継承された XML スキーマ複合型を表すクラスを用意する方法があります。

XML スキーマ定義言語では、1 より大きい maxOccurs 属性と一緒に <group> 参照を使用できます。複数のグループが含まれるスキーマを正常にインポートするには、Xsd.exe で /order コマンド ライン オプションを使用します。このような XML スキーマからソース コードを生成する場合、既定では、Xsd.exe は、グループ内の各要素に対して正しく配列を生成できません。/order オプションを指定した場合は、グループのすべてのメンバーを格納する 1 つの配列が生成され、そのそれぞれのグループ メンバーに XmlElementAttribute 属性が適用されます。

Example

入力 XML スキーマ ドキュメント:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
    <xsd:group name="version">
      <xsd:sequence>
        <xsd:element name="changeNumber" type="xsd:int"/>
        <xsd:element name="instanceId" type="xsd:string"/>
      </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="keyInfo">
      <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
        <xsd:group ref="version" />
      </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="key" type="keyInfo"/>
</xsd:schema>

上記の XML スキーマ ドキュメントから生成される C# クラス :

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
        
    public string key;
        
    public int changeNumber;
        
    public string instanceId;
}

上記の C# ソースからコンパイルされたアセンブリから生成される XML スキーマ複合型:

<xs:complexType name="keyInfo">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    <xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
    <xs:element minOccurs="0" maxOccurs="1" name="instanceId" type="xs:string" />
  </xs:sequence>
</xs:complexType>

使用可能な属性 バインディング サポート

id

Xsd.exe ユーティリティは、一意な識別子を提供するための id 属性を無視します。

maxOccurs

XML スキーマ ドキュメントからソース コードを生成するときに 1 を超える値の maxOccurs を持つグループが多数ある場合は、/order コマンド ライン スイッチを使用します。

MaxOccurs 属性のバインディング サポート 属性を参照してください。

minOccurs

XML スキーマ ドキュメントからソース コードを生成する場合、<group> 要素に適用されているときは、Xsd.exe では、minOccurs 属性が無視されます。

MinOccurs 属性のバインディング サポート 属性を参照してください。

name

Xsd.exe ユーティリティでは、<attributeGroup> 要素のコンテンツが匿名で展開されるため、属性のグループ名は無視されます。

Name 属性のバインディング サポート 属性を参照してください。

ref

.NET Framework には、コードでグループを表現する形式がありません。XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は代わりに、各 ref 属性の、グローバル宣言されたグループへの <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。<group> の各要素に対して、パブリック フィールドが 1 つ作成されます。

使用可能な親要素 : <choice><complexType><extension><redefine><restriction><schema><sequence>

使用可能な子要素 : <all><annotation><choice><sequence>

参照

リファレンス

XmlSchemaGroup
XmlSchemaGroupRef