Bindungsunterstützung für das group-Element
Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.
.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 generiert, und zwar ein Attribut pro Gruppenmember.)
Example
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;
}
Komplexer XML-Schematyp, der aus einer Assembly generiert wurde, deren Kompilierung von der vorhergehenden C#-Quelle ausgeführt wurde
<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 Hilfsprogramm 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 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 Hilfsprogramm 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>