Fixed 屬性繫結支援
.NET Framework 會提供 fixed 屬性的繫結支援。
說明
fixed 屬性可以出現在 <element> 或 <attribute> 宣告中,以建立項目或屬性在合格 XML 文件中必須具備的常數值。這個屬性也可以和任何限制 Facet 項目 (<enumeration> 和 <pattern> 除外) 一起出現,如果此時的值為 true
,則可以避免衍生項目變更伴隨的 Facet 值。
除了字串列舉型別之外,.NET Framework 不會為資料型別繫結或序列化加入限制 Facet,因此會略過 fixed 屬性 (Attribute) 及其出現所在的 Facet。結構描述物件模型 (SOM) 會提供含有 IsFixed 屬性 (Property) 的基底 XmlSchemaFacet 類別。
如果 fixed 屬性出現在 <element> 或 <attribute> 項目中,Xsd.exe 就會將欄位靜態初始化為預設值,如下列範例所示:
public int age = -1;
根據 XML 結構描述,fixed 屬性的值必須是 XML 結構描述的簡單型別。如需 Xsd.exe 如何針對簡單型別轉譯 fixed/default 值的詳細資訊,請參閱 default 屬性。
對於項目和屬性 (Attribute),結構描述物件模型會以 XmlSchemaAttribute 和 XmlSchemaElement 類別的 FixedValue 屬性 (Property) 來表示 fixed 屬性 (Attribute)。
範例
輸入 XML 結構描述文件:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
<xsd:element name="FamilyDog" type="FamilyDogType"/>
<xsd:complexType name="FamilyDogType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" fixed="Spot"/>
<xsd:element name="birthdate" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="gender" type="GenderType" fixed="UNKNOWN"/>
<xsd:attribute name="fixed" type="xsd:boolean" fixed="false"/>
<xsd:attribute name="breed" type="xsd:string" fixed="Swedish Vallhund"/>
</xsd:complexType>
<xsd:simpleType name="GenderType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="FEMALE" />
<xsd:enumeration value="MALE" />
<xsd:enumeration value="UNKNOWN" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
由前面的 XML 結構描述文件所產生的 C# 類別:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("FamilyDog", Namespace="http://example.org/", IsNullable=false)]
public class FamilyDogType {
public string name = "Spot";
[System.Xml.Serialization.XmlElementAttribute(DataType="date")]
public System.DateTime birthdate;
[System.Xml.Serialization.XmlAttributeAttribute()]
public GenderType gender = GenderType.UNKNOWN;
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool genderSpecified;
[System.Xml.Serialization.XmlAttributeAttribute()]
public bool @fixed = false;
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool fixedSpecified;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string breed = "Swedish Vallhund";
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
public enum GenderType {
FEMALE,
MALE,
UNKNOWN,
}
從前面 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="FamilyDog" type="tns:FamilyDogType" />
<xs:complexType name="FamilyDogType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" fixed="Spot"/>
<xs:element minOccurs="1" maxOccurs="1" name="birthdate" type="xs:date" />
</xs:sequence>
<xs:attribute name="gender" type="tns:GenderType" />
<xs:attribute name="fixed" type="xs:boolean" />
<xs:attribute name="breed" type="xs:string" />
</xs:complexType>
<xs:simpleType name="GenderType">
<xs:restriction base="xs:string">
<xs:enumeration value="FEMALE" />
<xs:enumeration value="MALE" />
<xs:enumeration value="UNKNOWN" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
可能的包含項目:<attribute>、<element>、各種限制 Facet
請參閱
參考
System.Xml.Schema.XmlSchemaAttribute.FixedValue
System.Xml.Schema.XmlSchemaElement.FixedValue
System.Xml.Schema.XmlSchemaFacet.IsFixed
Copyright © 2007 by Microsoft Corporation. All rights reserved.