Prise en charge de la liaison de l'élément AnyAttribute
Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.
Le .NET Framework prend en charge la liaison partielle pour l'élément <anyAttribute>.
Lors de la génération de code source à partir d'un document de schéma XML, Xsd.exe traduit l'élément <anyAttribute> en champ de type XmlAttribute, avec un attribut XmlAnyAttributeAttribute.
Explication
Le caractère générique <anyAttribute> permet à tout attribut (un attribut avec n'importe quel nom ou de type simple) d'apparaître dans un élément donné dans une instance de document XML, avec certaines contraintes.
Lors de la génération de code source à partir d'un document de schéma XML, Xsd.exe traduit l'élément <anyAttribute> en champ de type XmlAttribute, avec un attribut XmlAnyAttributeAttribute. Cet attribut permet à une classe de représenter des attributs XML arbitraires sans les lier aux types non-XML identifiés par d'autres champs ou propriétés possibles de la classe.
Lors de la génération d'un document de schéma XML à partir d'un ensemble de classes dans un assembly, Xsd.exe exécute la traduction inverse : un champ ou une propriété de type System.Xml.XmlAttribute, avec un attribut XmlAnyAttributeAttribute, est traduit vers un élément <anyAttribute>.
Attributs namespace et processContents
Lors de la génération de définitions ou de classes de schéma XML, les attributs namespace et processContents sont ignorés. Cela signifie que, quelles que soient les valeurs des attributs dans une définition de schéma XML d'origine, lorsque Xsd.exe génère des classes à partir de cette définition puis génère un autre schéma XML à partir de ces classes, l'élément <anyAttribute> du schéma XML généré ne dispose plus de ces attributs. Par conséquent, les valeurs par défaut suivantes sont rétablies dans ce dernier schéma :
namespace="##any"
: l'attribut namespace spécifie les espaces de noms dans lesquels l'attribut doit être défini. Une valeur##any
autorise tout espace de noms.processContents="strict"
: lors de la validation d'un document XML d'instance en vue de sa conformité au schéma XML spécifié, vérifiez que tous les types d'éléments sont validés d'après le ou les espaces de noms spécifiés. Si un type d'élément n'est pas reconnu, la validation échoue.
De même, lors de la désérialisation de documents XML en objets, les attributs namespace et processContents sont ignorés. La classe XmlSerializer se comporte plutôt comme si les valeurs suivantes avaient été affectées aux deux attributs :
namespace="##any"
: il s'agit de la valeur par défaut.processContents="lax"
: lors de la validation d'un document XML d'instance en vue de sa conformité au schéma XML spécifié, validez l'attribut uniquement si son espace de noms peut être obtenu ; sinon, vérifiez qu'un attribut non reconnu se compose d'un contenu XML correctement construit.
Remarque : |
---|
Même si au moment de l'exécution le .NET Framework suppose processContents="lax" , lors du déploiement, le .NET Framework génère des définitions de schéma XML dans lesquelles processContents="strict" par défaut est spécifié implicitement.
|
Xsd.exe et la classe XmlSerializer fournissent les mêmes liaisons pour les attributs namespace et processContents lorsqu'ils apparaissent dans l'élément <any>.
Attributs possibles | Prise en charge de la liaison |
---|---|
id |
L'utilitaire Xsd.exe ignore l'attribut id qui a pour but de fournir un identificateur unique. |
namespace |
Consultez la section Attributs namespace et processContents dans cette rubrique. |
processContents |
Consultez la section Attributs namespace et processContents dans cette rubrique. |
Éléments parents possibles : <attributeGroup>, <complexType>, <extension>, <restriction>
Éléments enfants possibles : <annotation>