Supporto dell'associazione all'attributo value
In .NET Framework è incluso un supporto parziale per l'associazione all'attributo value.
Lo strumento Xsd.exe consente di convertire l'attributo value di un facet <enumeration> in un membro enum di .NET Framework se la restrizione di enumerazione viene applicata a un tipo basato su stringa. In caso contrario, non esistono associazioni tra i facet dello schema XML e le definizioni di classe in .NET Framework.
Descrizione
Il linguaggio XSD (XML Schema Definition) fornisce vari meccanismi per la derivazione dei nuovi tipi semplici mediante vincoli sui valori dei tipi semplici di base. Tali vincoli sono detti facet e vengono specificati come figli dell'elemento <restriction> in una definizione <simpleType> (o <simpleContent>), individuata tramite simpleType/restriction/facetName
XPath, dove facetName
corrisponde al facet specifico. L'attributo value dell'elemento facet specifica un valore appropriato al facet.
Attributo value nelle enumerazioni basate su stringa
Lo strumento Xsd.exe consente di convertire l'attributo value di un facet <enumeration> in un membro enum di .NET Framework se la restrizione di enumerazione viene applicata a un tipo di dati basato su stringa. Il tipo di dati viene specificato mediante l'attributo base dell'elemento <restriction>. Per un elenco di tipi di dati incorporati nello schema XML che lo strumento Xsd.exe interpreta come stringhe, vedere l'elemento <enumeration>.
Un valore di enumerazione deve essere qualificato come nome di costante valido o convertito mediante Xsd.exe in un nome di costante. Un esempio è rappresentato dal valore di enumerazione seguente:
<xsd:enumeration value="IRISH CREAM" />
Questo valore viene convertito nel membro enum seguente:
[System.Xml.Serialization.XmlEnumAttribute("IRISH CREAM")]
IRISHCREAM,
Lo spazio singolo viene rimosso per produrre un nome di costante valido e l'attributo XmlEnumAttribute viene applicato al membro enum. Il parametro di attributo modifica il valore di enumerazione dello schema XML utilizzato per tale valore enum. Il valore predefinito è enum stesso, in questo caso IRISHCREAM
. Per un valore di enumerazione dello schema XML già qualificato come nome di costante valido, l'attributo XmlEnum viene omesso.
Sebbene in .NET Framework un'enumerazione XSD numerica non venga convertita in una definizione enum, la conversione viene applicata a un'enumerazione XSD di stringa i cui valori sono costituiti da numeri. La definizione di tipo semplice seguente viene associata a un tipo enum in quanto specifica base="xsd:string"
:
<xsd:simpleType name="Primes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="2" />
<xsd:enumeration value="3" />
<xsd:enumeration value="5" />
<xsd:enumeration value="7" />
<xsd:enumeration value="11" />
<xsd:enumeration value="13" />
<xsd:enumeration value="17" />
</xsd:restriction>
</xsd:simpleType>
Viene prodotto il tipo enum seguente:
public enum Primes {
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
[System.Xml.Serialization.XmlEnumAttribute("3")]
Item3,
[System.Xml.Serialization.XmlEnumAttribute("5")]
Item5,
[System.Xml.Serialization.XmlEnumAttribute("7")]
Item7,
[System.Xml.Serialization.XmlEnumAttribute("11")]
Item11,
[System.Xml.Serialization.XmlEnumAttribute("13")]
Item13,
[System.Xml.Serialization.XmlEnumAttribute("17")]
Item17,
}
Anche in questo caso, l'attributo XmlEnum viene utilizzato per eseguire l'override dell'associazione predefinita del valore xsd:enumeration a un valore di enumerazione dello schema XML.
Altri utilizzi dell'attributo value
Ad eccezione delle enumerazioni basate sui tipi di dati con associazione di stringa, non sono disponibili associazioni tra restrizioni di tipi semplici se si utilizzano i facet dello schema XML e le definizioni di classe di .NET Framework. Ad eccezione delle enumerazioni basate su stringa, ciò significa che:
Durante la generazione di codice sorgente da un documento dello schema XML, Xsd.exe ignora le restrizioni sui tipi semplici e produce il tipo .NET Framework corrispondente al tipo semplice di base.
Con la classe XmlSerializer queste restrizioni non vengono osservate in caso di serializzazione di oggetti in XML e deserializzazione da XML.
Relativamente al modello SOM (Schema Object Model), lo spazio dei nomi System.Xml.Schema include una classe XmlSchemaFacet astratta con una proprietà Value. I tipi derivati da XmlSchemaFacet per ognuno dei facet di restrizione possibili possono essere utilizzati per creare a livello di codice un modello di oggetto dello schema che imponga restrizioni mediante i facet.
Elementi contenitori possibili: tutti i facet di restrizione
Vedere anche
Riferimenti
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.