Schema 要素のバインディング サポート
このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.
.NET Framework では、<schema> 要素のバインディングをサポートしています。
<schema> 要素は XML スキーマ ドキュメントのルート要素です。
説明
<schema> 要素は XML スキーマ ドキュメントのルート要素です。
<schema> 要素の属性のうち、blockDefault、finalDefault、id、および 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 スキーマ ドキュメントを作成します。このプロパティは、次のように現れます。
System.Xml.Serialization.XmlRootAttribute.Namespace
System.Xml.Serialization.XmlTypeAttribute.Namespace
AttributeFormDefault 属性
Xsd.exe ユーティリティで生成される XML スキーマでは、グローバル attributeFormDefault 属性は指定されないままです。既存のスキーマの属性が検出されると、オーバーライドされていない各フィールドの XmlAttributeAttribute の Form プロパティが適切に設定されます。
説明 : AttributeFormDefault 属性
XML スキーマでは、(<schema> 要素の子として) グローバルに宣言されたすべての要素と属性がインスタンス ドキュメントに限定された名前空間を指定するように要求されます。ローカルで (<complexType> の定義内で) 宣言された要素および属性の場合、名前空間の限定は省略できます。
XML スキーマ ドキュメントで宣言されたすべてのローカル要素と属性に対して名前空間の限定を制御するには、ルート <schema> 要素の elementFormDefault 属性および attributeFormDefault 属性をそれぞれ使用します。いずれの場合も、使用可能な値は qualified
および unqualified
であり、既定は unqualified
です。
さらに、form 属性をローカルの <element> または <attribute> 宣言で使用して、特定の要素または属性のスキーマの既定をオーバーライドできます。
次の表は、attributeFormDefault に対して使用できる qualified
、unqualified
、および指定なしという 3 つの選択を Xsd.exe で処理する方法を示しています。Xsd.exe は、ソース コードを XML スキーマ ドキュメントから生成するとき、それぞれの XML 属性のパブリック フィールドを作成し、そのフィールドに .NET Framework 属性 XmlAttributeAttribute を割り当てます。
使用可能な attributeFormDefault 値 |
Xsd.exe によって XSD から生成されるソース |
同じソースをコンパイルしたアセンブリから Xsd.exe によって生成される XSD |
|
属性に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。 |
指定されていません。既定の |
|
属性に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。 |
指定されていません。既定の |
|
ローカルで宣言された属性と、グローバルで宣言され、参照されている属性の両方に対応するフィールドは、 |
指定されていません。既定の さらに、それぞれの属性宣言は |
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"
に設定されたままです。既存のスキーマの属性が検出されると、オーバーライドされていない各フィールドの XmlElementAttribute の Form プロパティが適切に設定されます。
説明 : ElementFormDefault 属性
XML スキーマでは、(<schema> 要素の子として) グローバルに宣言されたすべての要素と属性がインスタンス ドキュメントに限定された名前空間を指定するように要求されます。ローカルで (<complexType> の定義内で) 宣言された要素および属性の場合、名前空間の限定は省略できます。
XML スキーマ ドキュメントで宣言されたすべてのローカル要素と属性に対して名前空間の限定を制御するには、ルート <schema> 要素の elementFormDefault 属性と attributeFormDefault 属性をそれぞれ使用します。いずれの場合も、使用可能な値は qualified
および unqualified
であり、既定は unqualified
です。
さらに、form 属性をローカルの <element> または <attribute> 宣言で使用して、特定の要素または属性のスキーマの既定をオーバーライドできます。
elementFormDefault の既定値は unqualified
ですが、.NET Framework では qualified
が実質的な既定値として処理されます。ただし、unqualified
も引き続き使用できます。次の表は、elementFormDefault に対して使用できる qualified
、unqualified
、および指定なしという 3 つの選択を Xsd.exe で処理する方法を示しています。ソース コードを XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は XML 要素ごとにパブリック フィールドを作成します。
使用可能な elementFormDefault 値 |
Xsd.exe によって XSD から生成されるソース |
同じソースをコンパイルしたアセンブリから Xsd.exe によって生成される XSD |
|
要素に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。 |
|
|
要素に対応するクラスおよびフィールドは、フォームの指定なしで表示されます。 |
|
|
ローカルで宣言された要素に対応するフィールドは、 |
さらに、もともとローカルで宣言されたそれぞれの要素は |
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 は既定値 前の「AttributeFormDefault 属性」セクションを参照してください。 |
blockDefault |
<schema> 要素の blockDefault 属性により、<complexType> 要素および <element> 要素の block 属性の既定値が決まります。 Xsd.exe ツールでは、<schema> 要素の blockDefault 属性および各要素の block 属性は無視されます。 |
elementFormDefault |
.NET Framework は、実質的に別の既定値 前の「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>