Condividi tramite


Espressioni incorporate in XML

Aggiornamento: novembre 2007

Le espressioni incorporate consentono di creare valori letterali XML che contengono espressioni calcolate in fase di esecuzione. La sintassi per un'espressione incorporata è <%= expression %>, che è la stessa sintassi utilizzata in ASP.NET.

Ad esempio, è possibile creare un valore letterale di un elemento XML combinando espressioni incorporate con contenuto di testo letterale.

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>

Se isbnNumber contiene il valore integer 12345 e content contiene la stringa "Libro della settimana", quando questo codice viene eseguito, il valore di book è:

<book category="fiction" isbn="12345">Book of the week</book>

Posizione e convalida delle espressioni incorporate

Le espressioni incorporate possono essere incluse solo in particolari posizioni all'interno di espressioni letterali XML. La posizione nell'espressione controlla quali tipi possono venire restituiti dall'espressione e come viene gestito Nothing. Nella tabella seguente vengono descritti le posizioni e i tipi di espressioni incorporate consentiti.

Posizione in un valore letterale

Tipo di espressione

Gestione di Nothing

Nome dell'elemento XML

XName

Errore

Contenuto dell'elemento XML

Object o matrice di Object

Ignorato

Nome di attributo dell'elemento XML

XName

Errore, a meno che anche il valore dell'attributo sia Nothing

Valore dell'attributo dell'elemento XML

Object

Dichiarazione di un attributo ignorata.

Attributo dell'elemento XML.

XAttribute o un insieme di XAttribute

Ignorato

Elemento radice del documento XML

Oggetto XElement o un insieme di un oggetto XElement e un numero arbitrario di oggetti XProcessingInstruction e oggetti XComment

Ignorato

  • Esempio di espressione incorporata in un nome dell'elemento XML:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Esempio di espressione incorporata nel contenuto dell'elemento XML:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = _
      <contact><%= contactName %></contact>
    
  • Esempio di espressione incorporata nel nome di attributo dell'elemento XML:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = _
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Esempio di espressione incorporata nel valore dell'attributo dell'elemento XML:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = _
      <contact home=<%= phoneNumber %>/>
    
  • Esempio di espressione incorporata in un attributo dell'elemento XML:

    Dim phoneAttribute As XAttribute = _
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = _
      <contact <%= phoneAttribute %>/>
    
  • Esempio di espressione incorporata nell'elemento radice del documento XML:

    Dim document As XDocument = _
      <?xml version="1.0"?><%= contact1 %>
    

Se si abilita Option Strict, il compilatore controlla che il tipo di ogni espressione incorporata venga convertito al tipo più ampio richiesto. L'unica eccezione è per l'elemento radice di un documento XML, che viene verificato quando il codice è in esecuzione. Se si compila senza Option Strict, è possibile incorporare espressioni di tipo Object e il tipo viene verificato in fase di esecuzione.

Nelle posizioni dove il contenuto èi facoltativo, le espressioni incorporate che contengono Nothing vengono ignorate. Questo significa che non è necessario controllare che contenuto dell'elemento, i valori dell'attributo e gli elementi di una matrice non siano Nothing prima di utilizzare un valore letterale XML. I valori richiesti, ad esempio nomi dell'elemento e dell'attributo, non possono essere Nothing.

Per ulteriori informazioni sull'utilizzo di un'espressione incorporata in un particolare tipo di valore letterale, vedere Valore letterale di documento XML, Valore letterale Element XML.

Regole di ambito

Il compilatore converte ogni valore letterale XML in una chiamata del costruttore per il tipo di valore letterale adatto. Il contenuto del valore letterale e le espressioni incorporate in un valore letterale XML vengono passati come argomenti al costruttore. Questi significa che tutti gli elementi di programmazione di Visual Basic disponibili per un valore letterale XML sono anche disponibili per le espressioni incorporate.

All'interno di un valore letterale XML, è possibile accedere ai prefissi dello spazio dei nomi XML dichiarati con l'istruzione Imports. È possibile dichiarare un nuovo prefisso dello spazio dei nomi XML, o nascondere un prefisso dello spazio dei nomi XML esistente, in un elemento utilizzando l'attributo xmlns. Il nuovo spazio dei nomi è disponibile per i nodi figlio di tale elemento, ma non per i valori letterali XML nelle espressioni incorporate.

Nota:

Quando si dichiara un prefisso dello spazio dei nomi XML utilizzando l'attributo dello spazio dei nomi xmlns, il valore dell'attributo deve essere una stringa costante. In questo caso, l'utilizzo dell'attributo xmlns è simile all'utilizzo dell'istruzione Imports per dichiarare un spazio dei nomi XML. Non è possibile utilizzare un'espressione incorporata per specificare il valore dello spazio dei nomi XML.

Vedere anche

Concetti

Cenni preliminari sui valori letterali di XML

Riferimenti

Valore letterale di documento XML

Valore letterale Element XML

Istruzione Option Strict

Istruzione Imports (tipo e spazio dei nomi .NET)

Altre risorse

Creazione di XML in Visual Basic