Supporto dell'associazione all'elemento AttributeGroup
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 <attributeGroup> .
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento all'elemento <attributeGroup> direttamente nella classe corrispondente alla definizione <complexType> che contiene il riferimento.
Descrizione
L'elemento <attributeGroup> consente di definire globalmente un gruppo di attributi 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 attributi nel codice. Piuttosto, durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento all'elemento <attributeGroup> mediante l'attributo ref direttamente nella classe corrispondente alla definizione <complexType> contenente il riferimento. Per ogni attributo viene prodotto un campo pubblico. Ogni campo pubblico viene visualizzato con l'attributo XmlAttributeAttribute, che può essere espresso anche con l'abbreviazione XmlAttribute.
Se uno sviluppatore desidera evitare di definire lo stesso gruppo di proprietà o di campi di associazione degli attributi direttamente in più classi, può creare manualmente una classe base e fare in modo che le classi che rappresentano i tipi complessi di XML Schema ereditino da tale classe. Ogni proprietà o campo pubblico deve essere visualizzato con l'attributo XmlAttribute. In caso contrario, viene interpretato come elemento in un tipo complesso, non come attributo.
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: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>
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;
[System.Xml.Serialization.XmlAttributeAttribute()]
public int changeNumber;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string instanceId;
}
Tipo complesso di XML Schema generato da un assembly compilato dal codice sorgente C# precedente:
<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>
Attributi possibili | Supporto per l'associazione |
---|---|
id |
L'utilità Xsd.exe ignora l'attributo id che fornisce un identificatore univoco. |
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 di attributi nel codice. Piuttosto, durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe espande ogni riferimento ref dell'attributo <attributeGroup> a un gruppo di attributi dichiarato globalmente nella classe corrispondente alla definizione <complexType> che contiene il riferimento. Per ogni attributo da <attributeGroup>, viene prodotto un campo pubblico con l'attributo System.Xml.Serialization.XmlAttributeAttribute, che può essere espresso anche con l'abbreviazione XmlAttribute. |
Elementi padre possibili: <attributeGroup>, <complexType>, <extension>, <redefine>, <restriction>, <schema>
Elementi figlio possibili: <annotation>, <anyAttribute>, <attribute>, <attributeGroup>