AnyAttribute 要素のバインディング サポート
このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.
.NET Framework では、<anyAttribute> 要素のバインディングを一部サポートしています。
XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、<anyAttribute> 要素を、XmlAnyAttributeAttribute 属性を持つ XmlAttribute 型のフィールドに変換します。
説明
<anyAttribute> ワイルドカードを使用すると、一部制約がありますが、任意の属性 (任意の名前または単純型の属性) を XML インスタンス ドキュメント内の指定した要素で使用できます。
XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、<anyAttribute> 要素を、XmlAnyAttributeAttribute 属性を持つ XmlAttribute 型のフィールドに変換します。この属性を使用すると、クラスの他の使用可能なフィールドまたはプロパティで識別される非 XML 型に任意の XML 属性をバインドしなくても、クラスでその XML 属性を表すことができます。
アセンブリ内の一連のクラスから XML スキーマ ドキュメントを生成するとき、Xsd.exe は、逆変換を実行します。つまり、XmlAnyAttributeAttribute 属性を持つ System.Xml.XmlAttribute 型のフィールドまたはプロパティは、<anyAttribute> 要素に変換されます。
namespace 属性と processContents 属性
XML スキーマ定義またはクラスを生成しているとき、namespace 属性および processContents 属性は無視されます。つまり、これらの属性値が元の XML スキーマ定義内にある場合、Xsd.exe がその定義からクラスを生成し、次にそのクラスから別の XML スキーマを生成すると、生成された XML スキーマの <anyAttribute> 要素には、これらの属性がなくなります。そのため、後者のスキーマでは、次の既定値に逆変換されます。
namespace="##any"
: namespace 属性は、属性が定義されている必要のある名前空間を指定します。##any
の値は、任意の名前空間です。processContents="strict"
: インスタンスの XML ドキュメントがその指定された XML スキーマに適合するかどうかが検証されるときは、指定された名前空間に応じて、すべての要素型が検証されることを確認してください。認識されない要素型がある場合、検証は失敗します。
同様に、XML ドキュメントからオブジェクトに逆シリアル化しているとき、namespace 属性および processContents 属性は無視されます。それに代わって、XmlSerializer クラスは、これら 2 つの属性が次の値に固定されているかのように動作します。
namespace="##any"
: この値は既定値です。processContents="lax"
: インスタンスの XML ドキュメントがその指定された XML スキーマに適合するかどうかが検証されるときは、その名前空間を取得できる場合だけ属性が検証されます。それ以外の場合、認識できない属性は、整形式 XML で構成されていることを確認してください。
![]() |
---|
実行時は .NET Framework では processContents="lax" が想定されていますが、配置時は既定の processContents="strict" が暗黙的に指定されているとして、XML スキーマ定義が生成されます。
|
Xsd.exe および XmlSerializer クラスには、namespace 属性および processContents 属性が <any> 要素に現れるときは同じバインディングがこれらの属性用に用意されています。
使用可能な属性 | バインディング サポート |
---|---|
id |
Xsd.exe ユーティリティでは、一意な識別子を提供するための id 属性は無視されます。 |
namespace |
このトピックの「namespace 属性と processContents 属性」セクションを参照してください。 |
processContents |
このトピックの「namespace 属性と processContents 属性」セクションを参照してください。 |
使用可能な親要素 : <attributeGroup>、<complexType>、<extension>、<restriction>
使用可能な子要素 : <annotation>