Expressions incorporées en XML (Visual Basic)

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 d’une expression incorporée est <%=expression%>, qui est identique à la syntaxe utilisée dans ASP.NET.

Par exemple, vous pouvez créer un littéral d’élément XML, en combinant des expressions incorporées avec du contenu 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 modifiedDate contient la date 3/5/2006, lorsque ce code s’exécute, la valeur de book est :

<book category="fiction" isbn="12345">  
  <modifiedDate>3/5/2006</modifiedDate>  
</book>  

Emplacement et validation de l’expression incorporée

Les expressions incorporées ne peuvent apparaître qu’à certains emplacements dans les expressions littérales XML. L’emplacement de l’expression contrôle les types que l’expression peut retourner et la façon 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 de l’élément XML Object ou tableau de Object Ignoré
Nom de l’attribut de l’élément XML XName Erreur, sauf si la valeur de l’attribut est également Nothing
Valeur d’attribut d’élément XML Object Déclaration d’attribut ignorée
Attribut d’élément XML XAttribute ou une collection de XAttribute Ignoré
Élément racine du document XML XElement ou une collection d’un objet XElement et d’un 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 concerne l’élément racine d’un document XML, qui est vérifié lorsque 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 besoin de vérifier le contenu de cet élément, les valeurs d’attribut et les éléments de tableau ne sont pas Nothing avant votre utilisation d’un littéral XML. Les valeurs requises, comme les noms d’éléments et d’attributs, 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, Littéral d’élément XML.

Règles de portée

Le compilateur convertit chaque littéral XML en appel de constructeur pour le type littéral approprié. Le contenu littéral et les expressions incorporées dans un littéral XML sont passés en tant qu’arguments au constructeur. 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 à l’aide de 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 dans les expressions incorporées.

Notes

Lorsque vous déclarez un préfixe d’espace de noms XML à l’aide de l’attribut d’espace de noms xmlns, la valeur de l’attribut doit être une chaîne constante. À cet égard, l’utilisation de l’attribut xmlns équivaut à utiliser l’instruction Imports pour déclarer un espace de noms XML. Vous ne pouvez pas utiliser une expression incorporée pour spécifier la valeur de l’espace de noms XML.

Voir aussi