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

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

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

<schema> 要素は XML スキーマ ドキュメントのルート要素です。

説明

<schema> 要素は XML スキーマ ドキュメントのルート要素です。

<schema> 要素の属性のうち、blockDefaultfinalDefaultid、および version の各属性では、.NET Framework コード エンティティへのバインディングはありません。targetNamespace 属性は認識され、attributeFormDefault および elementFormDefault 属性は部分的に認識されます。次の表を参照してください。詳細については、個々の属性のトピックを参照してください。

TargetNamespace 属性

ルート <schema> 要素の targetNamespace 属性は、URI (Uniform Resource Identifier) としてスキーマの名前空間を指定します。Xsd.exe ツールは、<schema> 要素の targetNamespace 属性と、さまざまな XML 関連属性の Namespace プロパティを関連付けます。

XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は次のように targetNamespace 値を使用します。

  • スキーマのデータ型に対応する生成されたすべての型に対して、Xsd.exe は System.Xml.Serialization.XmlTypeAttribute.Namespace プロパティを targetNamespace 値に設定します。

  • 生成され、スキーマ準拠 XML ドキュメントのルートとして扱われるデータ型に対応するすべての型に対して、Xsd.exe は System.Xml.Serialization.XmlRootAttribute.Namespace プロパティに targetNamespace 値を設定します。データ型がドキュメント ルートとして扱われることがあるのは、グローバルに (ルート <schema> 要素の子として) 宣言されている <element> 要素で使用される場合です。

アセンブリの一連のクラスから XML スキーマ ドキュメントを生成しているとき、Xsd.exe は特定の XML 関連属性クラスの Namespace プロパティ内の一意な値ごとに、固有の targetNamespace 属性を持つ XML スキーマ ドキュメントを作成します。このプロパティは、次のように現れます。

AttributeFormDefault 属性

Xsd.exe ユーティリティで生成される XML スキーマでは、グローバル attributeFormDefault 属性は指定されないままです。既存のスキーマの属性が検出されると、オーバーライドされていない各フィールドの XmlAttributeAttributeForm プロパティが適切に設定されます。

説明 : AttributeFormDefault 属性

XML スキーマでは、(<schema> 要素の子として) グローバルに宣言されたすべての要素と属性がインスタンス ドキュメントに限定された名前空間を指定するように要求されます。ローカルで (<complexType> の定義内で) 宣言された要素および属性の場合、名前空間の限定は省略できます。

XML スキーマ ドキュメントで宣言されたすべてのローカル要素と属性に対して名前空間の限定を制御するには、ルート <schema> 要素の elementFormDefault 属性および attributeFormDefault 属性をそれぞれ使用します。いずれの場合も、使用可能な値は qualified および unqualified であり、既定は unqualified です。

さらに、form 属性をローカルの <element> または <attribute> 宣言で使用して、特定の要素または属性のスキーマの既定をオーバーライドできます。

次の表は、attributeFormDefault に対して使用できる qualifiedunqualified、および指定なしという 3 つの選択を Xsd.exe で処理する方法を示しています。Xsd.exe は、ソース コードを XML スキーマ ドキュメントから生成するとき、それぞれの XML 属性のパブリック フィールドを作成し、そのフィールドに .NET Framework 属性 XmlAttributeAttribute を割り当てます。

使用可能な attributeFormDefault 値

Xsd.exe によって XSD から生成されるソース

同じソースをコンパイルしたアセンブリから Xsd.exe によって生成される XSD

attributeFormDefault="unqualified"

属性に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。

指定されていません。既定の attributeFormDefault="unqualified" に戻ります。

Unspecified

属性に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。

指定されていません。既定の attributeFormDefault="unqualified" に戻ります。

attributeFormDefault="qualified"

ローカルで宣言された属性と、グローバルで宣言され、参照されている属性の両方に対応するフィールドは、Form=XmlSchemaForm.Qualified を渡された XmlAttribute 属性を使って表示されます。

指定されていません。既定の attributeFormDefault="unqualified" に戻ります。

さらに、それぞれの属性宣言は form="qualified" を指定します。この宣言には、グローバルで宣言され、参照されている属性が含まれます。

XmlAttribute 宣言に渡されるパラメーターにより、Form プロパティが設定されます。このプロパティに使用できる値は、XmlSchemaForm 列挙に基づきます。

  • XmlSchemaForm.Qualified

  • XmlSchemaForm.Unqualified

  • XmlSchemaForm.None: 既定

XmlAttribute パラメーターを使用することにより、元の XSD ドキュメントではグローバルに設定されていた内容が、ソース コードおよび生成された XSD では XML 属性ごとに指定されます。グローバルの attributeFormDefault 属性は常に指定されていないものと見なされ、既定値である unqualified に戻ります。

例 : AttributeFormDefault 属性

入力 XML スキーマ ドキュメント attributeFormDefault="qualified"

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified"
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
  <xsd:attribute name="version" type="xsd:string"/>
  <xsd:complexType name="keyInfo">
    <xsd:attribute ref="version" />
    <xsd:attribute name="public" type="xsd:boolean" use="required"/>
  </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 {
    [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
    public string version;
        
    System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
    public bool @public;
}

上記の C# ソースからコンパイルされたアセンブリから生成される XML スキーマ ルートの <schema> 要素 (属性宣言も form 属性なしで表示されます)

<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   ...
</xs:schema>

ElementFormDefault 属性

Xsd.exe ユーティリティで生成される XML スキーマでは、グローバル elementFormDefault 属性は "qualified" に設定されたままです。既存のスキーマの属性が検出されると、オーバーライドされていない各フィールドの XmlElementAttributeForm プロパティが適切に設定されます。

説明 : ElementFormDefault 属性

XML スキーマでは、(<schema> 要素の子として) グローバルに宣言されたすべての要素と属性がインスタンス ドキュメントに限定された名前空間を指定するように要求されます。ローカルで (<complexType> の定義内で) 宣言された要素および属性の場合、名前空間の限定は省略できます。

XML スキーマ ドキュメントで宣言されたすべてのローカル要素と属性に対して名前空間の限定を制御するには、ルート <schema> 要素の elementFormDefault 属性と attributeFormDefault 属性をそれぞれ使用します。いずれの場合も、使用可能な値は qualified および unqualified であり、既定は unqualified です。

さらに、form 属性をローカルの <element> または <attribute> 宣言で使用して、特定の要素または属性のスキーマの既定をオーバーライドできます。

elementFormDefault の既定値は unqualified ですが、.NET Framework では qualified が実質的な既定値として処理されます。ただし、unqualified も引き続き使用できます。次の表は、elementFormDefault に対して使用できる qualifiedunqualified、および指定なしという 3 つの選択を Xsd.exe で処理する方法を示しています。ソース コードを XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は XML 要素ごとにパブリック フィールドを作成します。

使用可能な elementFormDefault 値

Xsd.exe によって XSD から生成されるソース

同じソースをコンパイルしたアセンブリから Xsd.exe によって生成される XSD

elementFormDefault="qualified"

要素に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。

elementFormDefault="qualified"

Unspecified

要素に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。

elementFormDefault="qualified"

elementFormDefault="unqualified"

ローカルで宣言された要素に対応するフィールドは、Form=XmlSchemaForm.Unqualified を渡された XmlElement 属性を使って表示されます。参照されているグローバルで宣言された要素に対応するフィールドは、フォームの指定なしで表示されます。

elementFormDefault="qualified"

さらに、もともとローカルで宣言されたそれぞれの要素は form="unqualified" を使用します。もともとグローバルで宣言されていた要素は、form 属性なしでローカルで表示されます。

XmlElement 宣言に渡されるパラメーターにより、Form プロパティが設定されます。このプロパティで使用可能な値は、XmlSchemaForm 列挙型から使用できます。

  • XmlSchemaForm.Qualified

  • XmlSchemaForm.Unqualified

  • XmlSchemaForm.None : 既定

XmlElement パラメーターを使用する結果では、元の XSD ドキュメントでグローバル設定であった内容がソース コードおよび生成された XSD の XML 要素ごとに指定されます。グローバル elementFormDefault 属性は、常に値が qualified であると見なされます。

例 : ElementFormDefault 属性

入力 XML スキーマ ドキュメント elementFormDefault="unqualified"

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="unqualified">
  <xsd:element name="version" type="xsd:string"/>
  <xsd:complexType name="keyInfo">
      <xsd:sequence>
      <xsd:element ref="version" />
      <xsd:element name="public" type="xsd:boolean" />
    </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 version;
        
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public bool @public;
}

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

<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="key" type="tns:keyInfo" />
  <xs:complexType name="keyInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="version" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" form="unqualified" name="public" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>

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

attributeFormDefault

.NET Framework は既定値 unqualified を認識します。Xsd.exe ツールは、オーバーライドされていない各フィールドの XmlAttributeAttributeForm プロパティを設定することによって、フィールド単位で qualified 値を変換します。

前の「AttributeFormDefault 属性」セクションを参照してください。

blockDefault

<schema> 要素の blockDefault 属性により、<complexType> 要素および <element> 要素の block 属性の既定値が決まります。

Xsd.exe ツールでは、<schema> 要素の blockDefault 属性および各要素の block 属性は無視されます。

elementFormDefault

.NET Framework は、実質的に別の既定値 qualified を使用します。Xsd.exe ツールによって生成される <schema> 要素の値は、常に elementFormDefault="qualified" です。ツールは、オーバーライドされていない各フィールドの XmlElementAttributeForm プロパティを設定することによって、フィールド単位で unqualified 値を変換します。

前の「ElementFormDefault Attribute 属性」セクションを参照してください。

finalDefault

<schema> 要素の finalDefault 属性により、特定の要素の final 属性の既定値が決まります。

Xsd.exe ツールでは、<schema> 要素の finalDefault 属性および各要素の final 属性が無視されます。

id

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

xml:lang

Xsd.exe では、ルート <schema> 要素で使用される場合、名前空間 http://www.w3.org/XML/1198 からの lang 属性は無視されます。

targetNamespace

Xsd.exe ツールは、<schema> 要素の targetNamespace 属性と、さまざまな XML 関連属性の Namespace プロパティを関連付けます。使用される属性は、変換の方向によって異なります。

前の「TargetNamespace 属性」セクションを参照してください。

version

version 属性をドキュメントに対して使用できます。Xsd.exe ツールでは、この属性は無視されます。

使用可能な親要素 : なし (ルート要素)

使用可能な子要素 : <annotation><attribute><attributeGroup><complexType><element><group><import><include><notation><redefine><simpleType>

参照

リファレンス

XmlSchema