共用方式為


List 項目繫結支援

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

.NET Framework 會提供正確的繫結給具有清單型別的 XML 屬性 (Attribute) 宣告,但是不會提供給項目宣告。

說明

<list> 建構是用來定義簡單型別,而這個簡單型別的可能值為一系列來自其他簡單型別且以空白分隔的值。當做建置組塊 (Building Block) 使用的型別稱為原子型別,因為它們已經無法再區分為有意義的更小單位。除了清單或等位型別以外,任何簡單型別都是原子型別。

下列範例顯示建立清單型別,此型別的值可以是以空白分隔的十進位:

<xsd:simpleType name="numbersList">
  <xsd:list itemType="xsd:Decimal"/>
</xsd:simpleType>

<list> 項目定義屬性型別,但不定義項目型別時,.NET Framework 會提供繫結給這個項目。

從 XML 結構描述文件產生原始程式碼時,如果 Xsd.exe 遇到具有清單型別的項目,就會產生 .NET Framework 型別的欄位,而該型別是對應到 itemTypeXmlAttributeAttribute 屬性值的清單構成型別。對字串架構的型別而言,這項轉譯在技術上是正確的,因為由字串組成的字串仍是字串。但是對於以其他簡單型別為基礎的清單型別 (例如,前面範例中的十進位型別) 而言,這項轉譯則為錯誤。

如果 Xsd.exe 遇到具有清單型別的屬性,則會產生欄位,而這個欄位是一個型別對應到 itemType 屬性值之 .NET Framework 型別的陣列。此欄位顯示具有此屬性。下列程式碼為所產生欄位的範例:

[System.Xml.Serialization.XmlAttributeAttribute()]
public System.Decimal[] numbers;

同樣地,從一組類別產生 XML 結構描述文件時,Xsd.exe 會在欄位或屬性中尋找下列條件,以產生清單型別:

  • 欄位或屬性的型別是可對應到簡單型別的型別陣列。

  • 此欄位或屬性顯示具有 XmlAttribute 屬性。

這個組合只能以 <list> 型別表示,因為 XML 屬性必須具備簡單型別,否則就會將陣列繫結至複雜型別 (maxOccurs 屬性設定為 unbounded)。

範例

輸入 XML 結構描述文件:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
    <xsd:element name="alphabet" type="AlphabetType"/>

    <xsd:complexType name="AlphabetType">
        <xsd:sequence>
            <xsd:element name="language" type="xsd:string"/>
            <xsd:element name="count" type="xsd:decimal"/>
        </xsd:sequence>
        <xsd:attribute name="letters">
            <xsd:simpleType>
                <xsd:list itemType="Character"/>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:complexType>

    <xsd:simpleType name="Character">
        <xsd:restriction base="xsd:string">
            <xsd:length value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

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

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("alphabet", Namespace="http://example.org/", IsNullable=false)]
public class AlphabetType {
        
    public string language;
        
    public System.Decimal count;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string[] letters;
}

從前面 C# 原始程式所編譯的組件產生的 XML 結構描述複雜型別:

<xs:complexType name="AlphabetType">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" name="language" type="xs:string" />
    <xs:element minOccurs="1" maxOccurs="1" name="count" type="xs:decimal" />
  </xs:sequence>
  <xs:attribute name="letters">
    <xs:simpleType>
      <xs:list itemType="xs:string" />
    </xs:simpleType>
  </xs:attribute>
</xs:complexType>
可能的屬性 繫結支援

id

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

itemType

將清單型別當做 XML 屬性 (而非項目) 使用時,Xsd.exe 工具會產生一個欄位,而該欄位是對應到 itemType 屬性值之 .NET Framework 型別的陣列。

可能的父項目:<simpleType>

可能的子項目:<annotation><simpleType>

請參閱

參考

XmlSchemaSimpleTypeList

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.