Value 屬性繫結支援
.NET Framework 會提供 value 屬性的部分繫結支援。
如果列舉型別限制已套用至字串型別,Xsd.exe 工具會將 <enumeration> Facet 的 value 屬性轉譯為 .NET Framework enum 成員。否則,.NET Framework 中的 XML 結構描述 Facet 和類別定義之間就會缺少繫結。
說明
XML 結構描述定義語言會透過約束基底簡單型別值的方式,提供各種衍生新簡單型別的機制。這些條件約束稱為 Facet,而且是指定為 <simpleType> (或 <simpleContent>) 定義中 <restriction> 項目的子系,可透過 XPath simpleType/restriction/facetName
路徑找出,其中 facetName
即為這裡所指的 Facet。Facet 項目的 value 屬性會指定適用於 Facet 的值。
字串型列舉中的 value 屬性
如果列舉型別限制已套用至字串資料型別,Xsd.exe 工具會將 <enumeration> Facet 的 value 屬性轉譯為 .NET Framework enum 成員。資料型別是透過 <restriction> 項目的 base 屬性指定。如需 Xsd.exe 工具解譯為字串的內建 XML 結構描述資料型別清單,請參閱 <enumeration> 項目。
列舉值必須限定為有效常數名稱或是由 Xsd.exe 轉換為常數名稱。下列為列舉值的範例:
<xsd:enumeration value="IRISH CREAM" />
此值會轉換為下列 enum 成員:
[System.Xml.Serialization.XmlEnumAttribute("IRISH CREAM")]
IRISHCREAM,
移除一個空格可以產生有效常數名稱,並且將 XmlEnumAttribute 屬性套用至 enum 成員。屬性參數會變更針對該 enum 值而使用的 XML 結構描述列舉值。預設值即為 enum 值本身,在此例中為 IRISHCREAM
。對於已經限定為有效常數名稱的 XML 結構描述列舉值而言,則會省略 XmlEnum 屬性。
.NET Framework 不會將數值 XSD 列舉型別轉譯為 enum 定義時,但是會轉譯值碰巧為數字的字串 XSD 列舉型別。下列簡單型別定義指定 base="xsd:string"
,因此會繫結至 enum 型別:
<xsd:simpleType name="Primes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="2" />
<xsd:enumeration value="3" />
<xsd:enumeration value="5" />
<xsd:enumeration value="7" />
<xsd:enumeration value="11" />
<xsd:enumeration value="13" />
<xsd:enumeration value="17" />
</xsd:restriction>
</xsd:simpleType>
然後產生下列 enum 型別:
public enum Primes {
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
[System.Xml.Serialization.XmlEnumAttribute("3")]
Item3,
[System.Xml.Serialization.XmlEnumAttribute("5")]
Item5,
[System.Xml.Serialization.XmlEnumAttribute("7")]
Item7,
[System.Xml.Serialization.XmlEnumAttribute("11")]
Item11,
[System.Xml.Serialization.XmlEnumAttribute("13")]
Item13,
[System.Xml.Serialization.XmlEnumAttribute("17")]
Item17,
}
XmlEnum 屬性會再次用來覆寫 xsd:enumeration 值至 XML 結構描述列舉值的預設繫結。
value 屬性的其他用法
除了字串繫結資料型別的列舉型別之外,使用 XML 結構描述 Facet 的簡單型別限制和 .NET Framework 中的類別定義之間沒有任何繫結。這表示下列事項 (字串列舉型別除外):
從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會忽略對簡單型別的限制;它只會產生對應至基底簡單型別的 .NET Framework 型別。
將物件序列化為 XML 以及從 XML 還原序列化時,XmlSerializer 類別會忽略這些限制。
至於結構描述物件模型 (SOM),System.Xml.Schema 命名空間具有包含 Value 屬性的抽象 XmlSchemaFacet 類別。針對每個可能的限制 Facet 而從 XmlSchemaFacet 衍生的型別,可以用來以程式設計的方式建立透過 Facet 限制的結構描述物件模型。
可能的包含項目:所有限制 Facet
請參閱
參考
Copyright © 2007 by Microsoft Corporation. All rights reserved.