Partager via


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

XName

Erreur

Contenu d'élément XML

Object ou table d' Object

Ignoré

Nom d'attribut d'élément XML

XName

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

Littéral de document XML

Littéral d'élément XML

Option Strict, instruction

Imports, instruction (espace de noms et type .NET)

Autres ressources

Création de code XML dans Visual Basic