共用方式為


AttributeGroup 項目繫結支援

.NET Framework 會提供 <attributeGroup> 項目的部分繫結支援。

從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。

說明

<attributeGroup> 項目允許結構描述設計工具全域定義一組屬性,然後透過參考在任何複雜型別數量中重複使用該屬性群組。

.NET Framework 在程式碼中沒有用來表示屬性群組的慣用語。反而是從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會透過 ref 屬性,直接將每個 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。對於每個屬性則會產生公用欄位。每個公用欄位會顯示具有屬性 XmlAttributeAttribute,該屬性也可以用縮寫名稱 XmlAttribute 表示。

如果開發人員想要避免直接在多重類別中定義同一組屬性 (Attribute) 繫結欄位或屬性 (Property),則可以手動建立基底類別,然後讓代表 XML 結構描述複雜型別的類別繼承該基底類別。每個公用欄位或屬性 (Property) 應該會顯示具有 XmlAttribute 屬性 (Attribute),否則就會解譯成複雜型別中的項目,而非屬性 (Attribute)。

範例

輸入 XML 結構描述文件:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
    <xsd:attributeGroup name="version">
      <xsd:attribute name="changeNumber" type="xsd:int" use="required"/>
      <xsd:attribute name="instanceId" type="xsd:string" use="required"/>
    </xsd:attributeGroup>
    <xsd:complexType name="keyInfo">
      <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="version" />
    </xsd:complexType>
    <xsd:element name="key" type="keyInfo"/>
</xsd:schema>

由前面的 XML 結構描述文件所產生的 C# 類別:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
        
    public string key;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int changeNumber;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string instanceId;
}

從前面 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="key" type="tns:keyInfo" />
  <xs:complexType name="keyInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="changeNumber" type="xs:int" />
    <xs:attribute name="instanceId" type="xs:string" />
  </xs:complexType>
</xs:schema>
可能的屬性 繫結支援

id

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

name

由於 Xsd.exe 公用程式匿名展開 <attributeGroup> 項目的內容,所以會忽略屬性群組名稱。

請參閱 Name 屬性繫結支援 屬性。

ref

.NET Framework 在程式碼中沒有用來表示屬性群組的慣用語。反而是從 XML 結構描述文件產生原始程式碼時,Xsd.exe 會直接將每個 ref 屬性的全域宣告屬性群組 <attributeGroup> 參考展開到對應於 <complexType> 定義的類別,而該定義含有參考。對於 <attributeGroup> 中的每個屬性而言,都會產生具有屬性 System.Xml.Serialization.XmlAttributeAttribute 的公用欄位,而該屬性也可以用縮寫名稱 XmlAttribute

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

可能的子項目:<annotation><anyAttribute><attribute>、<attributeGroup>

請參閱

參考

XmlSchemaAttributeGroup
XmlSchemaAttributeGroupRef

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.