共用方式為


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),結構描述物件模型會以 XmlSchemaAttributeXmlSchemaElement 類別的 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

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.