Fixed 属性のバインディング サポート

.NET Framework では、fixed 属性のバインディングをサポートしています。

説明

fixed 属性は、<element> 宣言や <attribute> 宣言で使用し、XML ドキュメントに準拠するために、その要素または属性に必要な定数値を設定できます。この属性は、<enumeration> 要素や <pattern> 要素以外の任意の制限ファセット要素でも使用できます。この場合に true に設定すると、制限ファセット要素に付随するファセット値を派生先で変更できません。

.NET Framework では、文字列ベースの列挙型の場合を除き、データ型のバインディングまたはシリアル化のための制限ファセットを使用できません。したがって fixed 属性は、その属性が使用されているファセットと共に無視されます。スキーマ オブジェクト モデルには、IsFixed プロパティを持つ XmlSchemaFacet クラスがあります。

fixed 属性が <element> 要素または <attribute> 要素で使用されている場合、Xsd.exe は、静的にフィールドを既定値に初期化します。次に例を示します。

public int age = -1;

XML スキーマによれば、fixed 属性の値は、XML スキーマの単純型である必要があります。単純型に対する固定値や既定値の Xsd.exe による変換方法の詳細については、default を参照してください。

スキーマ オブジェクト モデルでは、要素および属性の fixed 属性は、XmlSchemaAttribute クラスおよび XmlSchemaElement クラスの FixedValue プロパティで表されます。

入力 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>、各種制限ファセット

関連項目

参照

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.