Supporto dell'associazione all'elemento Group
Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.
In .NET Framework è incluso un supporto parziale per l'associazione all'elemento <group> .
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento all'elemento <group> direttamente nella classe corrispondente alla definizione <complexType> che contiene il riferimento.
Descrizione
L'elemento <group> consente di definire globalmente un gruppo di elementi in Progettazione schema e quindi riutilizzarlo in un numero qualsiasi di tipi complessi, mediante i riferimenti.
.NET Framework non dispone di un linguaggio per esprimere i gruppi di elementi in codice. Piuttosto, durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento all'elemento <group> mediante l'attributo ref direttamente nella classe corrispondente alla definizione <complexType> che contiene il riferimento. Per ogni elemento, viene prodotto un campo pubblico.
Se uno sviluppatore desidera evitare di definire lo stesso gruppo di proprietà o di campi di associazione degli elementi direttamente in più classi, può creare manualmente una classe base e fare in modo che le classi che rappresentano tipi complessi di XML Schema ereditino da tale classe.
Il linguaggio di definizione XML Schema consente la visualizzazione di un riferimento <group> con un attributo maxOccurs impostato su un valore maggiore di 1
. Per importare correttamente schemi che contengono gruppi con ricorrenze multiple si consiglia di utilizzare l'opzione della riga di comando /order con Xsd.exe. (In caso di generazione di codice sorgente da uno schema XML di questo tipo, Xsd.exe genera erroneamente, per impostazione predefinita, una matrice per ogni elemento del gruppo. Se si abilita l'opzione /order, viene generata una matrice per tutti i membri del gruppo con più attributi XmlElementAttribute, uno per ciascun membro.
Example
Documento XLM Schema di input:
<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>
Classe C# generata dal precedente documento XML Schema:
[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;
}
Tipo complesso di XML Schema generato da un assembly compilato dal codice sorgente C# precedente:
<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>
Attributi possibili | Supporto per l'associazione |
---|---|
id |
L'utilità Xsd.exe ignora l'attributo id che fornisce un identificatore univoco. |
maxOccurs |
Durante la generazione di codice sorgente da un documento XML Schema con gruppi contenenti più valori maxOccurs maggiori di Vedere l'attributo Supporto dell'associazione all'attributo MaxOccurs. |
minOccurs |
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe ignora l'attributo minOccurs se è applicato all'elemento <group>. Vedere l'attributo Supporto dell'associazione all'attributo MinOccurs. |
name |
Poiché l'utilità Xsd.exe espande il contenuto dell'elemento <attributeGroup> in modo anonimo, il nome del gruppo di attributi viene ignorato. Vedere l'attributo Supporto dell'associazione all'attributo name. |
ref |
.NET Framework non dispone di un linguaggio per esprimere i gruppi in codice. Piuttosto, durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento all'elemento <group> dell'attributo ref a un gruppo dichiarato globalmente nella classe corrispondente alla definizione <complexType> che contiene il riferimento. Per ogni elemento di un <group>, viene prodotto un campo pubblico. |
Elementi padre possibili: <choice>, <complexType>, <extension>, <redefine>, <restriction>, <schema>, <sequence>
Elementi figlio possibili: <all>, <annotation>, <choice>, <sequence>