Expressions incorporées en XML
Mise à jour : novembre 2007
Les expressions incorporées vous permettent de créer des littéraux XML qui contiennent des expressions évaluées au moment de l'exécution. La syntaxe pour une expression incorporée est <%=expression%>, ce qui est identique à la syntaxe utilisé dans ASP.NET.
Vous pouvez, par exemple, créer un littéral d'élément XML, en combinant des expressions incorporées au contenu d'un texte littéral.
Dim isbnNumber As String = "12345"
Dim modifiedDate As String = "3/5/2006"
Dim book As XElement = _
<book category="fiction" isbn=<%= isbnNumber %>>
<modifiedDate><%= modifiedDate %></modifiedDate>
</book>
Si isbnNumber contient l'entier 12345 et content contient la chaîne « Book of the week » (Livre de la semaine), lorsque ce code s'exécute, la valeur de book est :
<book category="fiction" isbn="12345">Book of the week</book>
Emplacement d'expression incorporée et validation
Les expressions incorporées ne peuvent apparaître qu'à certains emplacements, dans des expressions littérales XML. L'emplacement de l'expression contrôle les types renvoyés par l'expression et la manière dont Nothing est géré. Le tableau suivant décrit les emplacements autorisés et les types d'expressions incorporées.
Emplacement dans le littéral |
Type d'expression |
Gestion de Nothing |
---|---|---|
Nom d'élément XML |
Erreur |
|
Contenu d'élément XML |
Object ou table d' Object |
Ignoré |
Nom d'attribut d'élément XML |
Erreur, à moins que la valeur d'attribut ne soit également Nothing |
|
Valeur d'attribut d'élément XML |
Object |
Déclaration attribute ignorée |
Attribut d'élément XML |
XAttribute ou collection de XAttribute |
Ignoré |
Élément racine de document XML |
XElement ou collection d'un objet XElement et nombre arbitraire d'objets XProcessingInstruction et XComment |
Ignoré |
Exemple d'expression incorporée dans un nom d'élément XML :
Dim elementName As String = "contact" Dim contact1 As XElement = <<%= elementName %>/>
Exemple d'expression incorporée dans le contenu d'un élément XML :
Dim contactName As String = "Patrick Hines" Dim contact2 As XElement = _ <contact><%= contactName %></contact>
Exemple d'expression incorporée dans un nom d'attribut d'élément XML :
Dim phoneType As String = "home" Dim contact3 As XElement = _ <contact <%= phoneType %>="206-555-0144"/>
Exemple d'expression incorporée dans une valeur d'attribut d'élément XML :
Dim phoneNumber As String = "206-555-0144" Dim contact4 As XElement = _ <contact home=<%= phoneNumber %>/>
Exemple d'expression incorporée dans un attribut d'élément XML :
Dim phoneAttribute As XAttribute = _ New XAttribute(XName.Get(phoneType), phoneNumber) Dim contact5 As XElement = _ <contact <%= phoneAttribute %>/>
Exemple d'expression incorporée dans un élément racine de document XML :
Dim document As XDocument = _ <?xml version="1.0"?><%= contact1 %>
Si vous activez Option Strict, le compilateur vérifie que le type de chaque expression incorporée s'étend au type requis. La seule exception est l'élément racine d'un document XML, vérifié quand le code s'exécute. Si vous compilez sans Option Strict, vous pouvez incorporer des expressions de type Object et leur type est vérifié au moment de l'exécution.
Dans les emplacements où le contenu est facultatif, les expressions incorporées qui contiennent Nothing sont ignorées. Cela signifie que vous n'avez pas à vérifier que le contenu d'élément, les valeurs d'attribut et les éléments de la table diffèrent de Nothing avant d'utiliser un littéral XML. Les valeurs requises, telles que les noms d'élément et d'attribut, ne peuvent pas être Nothing.
Pour plus d'informations sur l'utilisation d'une expression incorporée dans un type particulier de littéral, consultez Littéral de document XML et Littéral d'élément XML.
Règles de portée
Le compilateur convertit chaque littéral XML en un appel de constructeur pour le type de littéral approprié. Le contenu du littéral et les expressions incorporées dans un littéral XML sont communiquées au constructeur en tant qu'arguments. Cela signifie que tous les éléments de programmation Visual Basic disponibles pour un littéral XML sont également disponibles pour ses expressions incorporées.
Dans un littéral XML, vous pouvez accéder aux préfixes d'espace de noms XML déclarés avec l'instruction Imports. Vous pouvez déclarer un nouveau préfixe d'espace de noms XML ou masquer un préfixe d'espace de noms XML existant dans un élément, en utilisant l'attribut xmlns. Le nouvel espace de noms est disponible pour les nœuds enfants de cet élément, mais pas pour les littéraux XML des expressions incorporées.
Remarque : |
---|
Lorsque vous déclarez un préfixe d'espace de noms XML en utilisant l'attribut d'espace de noms xmlns, la valeur d'attribut doit être une chaîne constante. C'est pourquoi l'utilisation de l'attribut xmlns revient à utiliser l'instruction Imports pour déclarer un espace de noms XML. Vous ne pouvez pas utiliser d'expression incorporée pour spécifier une valeur d'espace de noms XML. |
Voir aussi
Concepts
Vue d'ensemble des littéraux XML
Référence
Imports, instruction (espace de noms et type .NET)