共用方式為


AnyAttribute 項目繫結支援

.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 結構描述定義或類別期間,namespaceprocessContents 屬性會被忽略。也就是說,在原本的 XML 結構描述定義中,無論那些屬性值為何,當 Xsd.exe 從該定義產生類別,然後從那些類別產生其他 XML 結構描述時,所產生 XML 結構描述的 <anyAttribute> 項目都不再具有那些屬性。因此,後面的結構描述會還原至下列預設值:

  • namespace="##any"namespace 屬性會指定必須定義屬性的命名空間。##any 的值允許任何命名空間。

  • processContents="strict":驗證執行個體 XML 文件是否符合文件指定的 XML 結構描述時,請務必根據指定的命名空間驗證所有項目型別。如果項目型別無法辨識,驗證就會失敗。

同樣地,從 XML 文件還原序列化 (Deserialization) 至物件期間,namespaceprocessContents 屬性也會被忽略。反而是 XmlSerializer 類別的行為表現得就像這兩個屬性已固定為下列值一樣:

  • namespace="##any":這是預設值。

  • processContents="lax":驗證執行個體 XML 文件是否符合文件指定的 XML 結構描述時,只有在可以取得屬性的命名空間時,才驗證屬性,否則,請確定無法辨識的屬性是由語式正確 (Well-Formed) 的 XML 所組成。

Note注意:

雖然在執行階段 .NET Framework 假設 processContents="lax",但是在部署階段,.NET Framework 還是會產生 XML 結構描述定義,而且其中隱含地指定預設的 processContents="strict"

namespaceprocessContents 屬性出現在 <any> 項目中時,Xsd.exe 和 XmlSerializer 類別會為這兩個屬性提供相同繫結。

可能的屬性 繫結支援

id

Xsd.exe 公用程式忽略試圖提供唯一識別項的 id 屬性。

namespace

請參閱本主題的「namespace 和 processContents 屬性」一節。

processContents

請參閱本主題的「namespace 和 processContents 屬性」一節。

可能的父項目:<attributeGroup><complexType><extension><restriction>

可能的子項目:<annotation>

請參閱

參考

XmlAnyAttributeAttribute

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.