Freigeben über


Bindungsunterstützung für das group-Element

.NET Framework bietet partielle Bindungsunterstützung für das <group>-Element.

Beim Generieren von Quellcode aus einem XML-Schemadokument erweitert Xsd.exe jeden <group>-Verweis direkt in die Klasse, die der <complexType>-Definition entspricht, die den Verweis enthält.

Erklärung

Das <group>-Element ermöglicht es Schemadesignern, eine Gruppe von Elementen global zu definieren und diese Gruppe dann über Verweise in beliebig vielen komplexen Typen erneut zu verwenden.

In .NET Framework können Elementgruppen nicht direkt in Code ausgedrückt werden. Beim Generieren von Quellcode aus einem XML-Schemadokument erweitert Xsd.exe stattdessen jeden <group>-Verweis über das ref-Attribut direkt in die Klasse, die der <complexType>-Definition entspricht, die den Verweis enthält. Für jedes Element wird ein öffentliches Feld erzeugt.

Wenn Entwickler nicht die gleiche Gruppe von Elementbindungsfeldern oder -eigenschaften in mehreren Klassen direkt definieren möchten, können sie manuell eine Basisklasse erstellen und die Klassen, die komplexe XML-Schematypen darstellen, aus dieser Basisklasse ableiten.

In der XML-Schemadefinitionssprache wird ein <group>-Verweis durch ein maxOccurs-Attribut angezeigt, das einen Wert größer 1 hat. Zum ordnungsgemäßen Import von Schemas mit mehrfach vorhandenen Gruppen verwenden Sie die /order-Befehlszeilenoption für Xsd.exe. (Beim Generieren von Quellcode aus einem solchen XML-Schema generiert Xsd.exe fälschlicherweise für jedes Element der Gruppe ein Array. Wenn die /order-Option aktiviert ist, wird für alle Member der Gruppe ein einziges Array mit mehreren XmlElementAttribute-Attributen, und zwar ein Attribut pro Gruppenmember, generiert.)

Beispiel

XML-Schema-Eingabedokument:

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

Aus dem vorherigen XML-Schemadokument generierte C#-Klasse:

[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;
        
    public int changeNumber;
        
    public string instanceId;
}

Aus einer Assembly, die aus der vorherigen C#-Quelle kompiliert wurde, generierter komplexer XML-Schematyp:

<xs:complexType name="keyInfo">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    <xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
    <xs:element minOccurs="0" maxOccurs="1" name="instanceId" type="xs:string" />
  </xs:sequence>
</xs:complexType>
Mögliche Attribute Bindungsunterstützung

id

Das Dienstprogramm Xsd.exe ignoriert das id-Attribut, mit dem ein eindeutiger Bezeichner bereitgestellt werden soll.

maxOccurs

Verwenden Sie beim Generieren von Quellcode aus einem XML-Schemadokument für Gruppen mit vielen maxOccurs größer als 1 den /order-Befehlszeilenschalter.

Weitere Informationen finden Sie unter dem Bindungsunterstützung für das maxOccurs-Attribut-Attribut.

minOccurs

Beim Generieren von Quellcode aus einem XML-Schemadokument ignoriert Xsd.exe das minOccurs-Attribut, wenn dieses auf das <group>-Element angewendet wird.

Weitere Informationen finden Sie in den Ausführungen zum Bindungsunterstützung für das minOccurs-Attribut-Attribut.

name

Da das Dienstprogramm Xsd.exe den Inhalt des <attributeGroup>-Elements anonym erweitert, wird der Gruppenname des Attributs ignoriert.

Weitere Informationen finden Sie in den Ausführungen zum Bindungsunterstützung für das name-Attribut-Attribut.

ref

In .NET Framework können Gruppen nicht direkt in Code ausgedrückt werden. Beim Generieren von Quellcode aus einem XML-Schemadokument erweitert Xsd.exe stattdessen für jedes ref-Attribut den <group>-Verweis auf eine global deklarierte Gruppe in die Klasse, die der <complexType>-Definition entspricht, die den Verweis enthält. Für jedes Element aus einer <group> wird ein öffentliches Feld erzeugt.

Mögliche übergeordnete Elemente: <choice>, <complexType>, <extension>, <redefine>, <restriction>, <schema>, <sequence>

Mögliche untergeordnete Elemente:<all>, <annotation>, <choice>, <sequence>

Siehe auch

Referenz

XmlSchemaGroup
XmlSchemaGroupRef

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.