AnyAttribute 項目繫結支援
本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.
.NET Framework 會提供 <anyAttribute> 項目的部分繫結支援。
從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會將 <anyAttribute> 項目轉譯成 XmlAttribute 型別欄位並具有屬性 XmlAnyAttributeAttribute。
說明
<anyAttribute> 萬用字元允許任何屬性 (任何名稱或簡單型別的屬性) 出現在 XML 執行個體文件 (具有某些條件約束) 的指定項目中。
從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會將 <anyAttribute> 項目轉譯成 XmlAttribute 型別欄位並具有屬性 XmlAnyAttributeAttribute。此屬性 (Attribute) 允許類別呈現任意的 XML 屬性 (Attribute),而不會將這些屬性 (Attribute) 繫結至其他可能欄位或類別屬性 (Property) 所識別的非 XML 型別。
從組件的一組類別產生 XML 結構描述文件時,Xsd.exe 會執行下列反向轉譯:將具有屬性 (Attribute) XmlAnyAttributeAttribute 且型別為 System.Xml.XmlAttribute 的欄位或屬性 (Property) 轉譯成 <anyAttribute> 項目。
namespace 和 processContents 屬性
在產生 XML 結構描述定義或類別期間,namespace 和 processContents 屬性會被忽略。也就是說,在原本的 XML 結構描述定義中,無論那些屬性值為何,當 Xsd.exe 從該定義產生類別,然後從那些類別產生其他 XML 結構描述時,所產生 XML 結構描述的 <anyAttribute> 項目都不再具有那些屬性。因此,後面的結構描述會還原至下列預設值:
namespace="##any"
:namespace 屬性會指定必須定義屬性的命名空間。##any
的值允許任何命名空間。processContents="strict"
:驗證執行個體 XML 文件是否符合文件指定的 XML 結構描述時,請務必根據指定的命名空間驗證所有項目型別。如果項目型別無法辨識,驗證就會失敗。
同樣地,從 XML 文件還原序列化 (Deserialization) 至物件期間,namespace 和 processContents 屬性也會被忽略。反而是 XmlSerializer 類別的行為表現得就像這兩個屬性已固定為下列值一樣:
namespace="##any"
:這是預設值。processContents="lax"
:驗證執行個體 XML 文件是否符合文件指定的 XML 結構描述時,只有在可以取得屬性的命名空間時,才驗證屬性,否則,請確定無法辨識的屬性是由語式正確 (Well-Formed) 的 XML 所組成。
注意: |
---|
雖然在執行階段 .NET Framework 假設 processContents="lax" ,但是在部署階段,.NET Framework 還是會產生 XML 結構描述定義,而且其中隱含地指定預設的 processContents="strict" 。
|
當 namespace 和 processContents 屬性出現在 <any> 項目中時,Xsd.exe 和 XmlSerializer 類別會為這兩個屬性提供相同繫結。
可能的屬性 | 繫結支援 |
---|---|
id |
Xsd.exe 公用程式忽略試圖提供唯一識別項的 id 屬性。 |
namespace |
請參閱本主題的「namespace 和 processContents 屬性」一節。 |
processContents |
請參閱本主題的「namespace 和 processContents 屬性」一節。 |
可能的父項目:<attributeGroup>、<complexType>、<extension>、<restriction>
可能的子項目:<annotation>