Condividi tramite


Supporto dell'associazione all'elemento AttributeGroup

In .NET Framework è incluso un supporto parziale per l'associazione all'elemento <attributeGroup> .

Durante la generazione di codice sorgente da un documento dello schema XML, 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 dello schema XML, 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 dello schema XML 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.

Esempio

Documento dello schema XLM 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 dello schema XML:

[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 dello schema XML 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 dello schema XML, 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>

Vedere anche

Riferimenti

XmlSchemaAttributeGroup
XmlSchemaAttributeGroupRef

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.