Supporto dell'associazione all'elemento AnyAttribute
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 <anyAttribute>.
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe traduce l'elemento <anyAttribute> in un campo di tipo XmlAttribute, con un attributo XmlAnyAttributeAttribute.
Descrizione
Il carattere jolly <anyAttribute> consente la visualizzazione di qualsiasi attributo, ovvero un attributo con qualsiasi nome o tipo semplice, in un elemento specificato in un documento di istanza XML, con alcune limitazioni.
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe traduce l'elemento <anyAttribute> in un campo di tipo XmlAttribute, con un attributo XmlAnyAttributeAttribute. Tale attributo consente la rappresentazione degli attributi XML arbitrari in una classe senza associarli ai tipi non XML identificati da altri possibili campi o proprietà della classe.
Durante la generazione di un documento XML Schema da un set di classi di un assembly, Xsd.exe esegue la conversione inversa, ovvero la conversione di un campo o una proprietà del tipo System.Xml.XmlAttribute con un attributo XmlAnyAttributeAttribute in un elemento <anyAttribute>.
Attributi namespace e processContents
Durante la generazione delle classi o delle definizioni XML Schema, gli attributi namespace e processContents vengono ignorati. In altri termini, qualunque sia il valore degli attributi in questione in una definizione XML Schema originale, quando Xsd.exe genera classi da tale definizione e quindi genera un altro schema XML da tali classi, l'elemento <anyAttribute> dello schema XML generato non dispone più di tali attributi. Pertanto l'ultimo schema ripristina i valori predefiniti seguenti:
namespace="##any"
: l'attributo namespace specifica gli spazi dei nomi in cui è necessario definire l'attributo. Il valore##any
consente qualsiasi spazio dei nomi.processContents="strict"
: quando si convalida un documento di istanza XML per conformità al relativo schema XML specificato, verificare che tutti i tipi di elementi siano convalidati in base agli spazi dei nomi specificati. Se non viene riconosciuto un tipo di elemento, la convalida non riesce.
Analogamente, gli attributi namespace e processContents vengono ignorati anche durante la deserializzazione dai documenti XML agli oggetti. La classe XmlSerializer, invece, si comporta come se i due attributi fossero fissati ai valori seguenti:
namespace="##any"
: è il valore predefinito.processContents="lax"
: quando si convalida un documento di istanza XML per conformità al rispettivo schema XML specificato, convalidare l'attributo solo se è possibile ottenere il relativo spazio dei nomi; in caso contrario assicurarsi che il formato XML di un attributo non riconosciuto sia corretto.
![]() |
---|
Anche se in fase di esecuzione si presuppone il valore processContents="lax" , in fase di distribuzione .NET Framework genera definizioni XML Schema in cui viene specificato implicitamente il valore processContents="strict" predefinito.
|
Xsd.exe e la classe XmlSerializer forniscono le stesse associazioni per gli attributi namespace e processContents quando vengono visualizzati nell'elemento <any>.
Attributi possibili | Supporto per l'associazione |
---|---|
id |
L'utilità Xsd.exe ignora l'attributo id che fornisce un identificatore univoco. |
namespace |
Vedere la sezione Attributi namespace e processContents in questo argomento. |
processContents |
Vedere la sezione Attributi namespace e processContents in questo argomento. |
Elementi padre possibili: <attributeGroup>, <complexType>, <extension>, <restriction>
Elementi figlio possibili: <annotation>