Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As expressões incorporadas permitem criar literais XML que contêm expressões que são avaliadas em tempo de execução. A sintaxe de uma expressão incorporada é <%=expression%>, que é a mesma que a sintaxe usada em ASP.NET.
Por exemplo, você pode criar um elemento XML literal, combinando expressões incorporadas com conteúdo de texto literal.
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 contém o inteiro 12345 e modifiedDate contém a data de 3/5/2006, quando este código é executado, o valor de book é:
<book category="fiction" isbn="12345">
<modifiedDate>3/5/2006</modifiedDate>
</book>
Localização e validação da expressão incorporada
As expressões incorporadas podem aparecer apenas em determinados locais dentro de expressões literais XML. O local da expressão controla quais tipos a expressão pode retornar e como Nothing é tratada. A tabela a seguir descreve os locais permitidos e os tipos de expressões incorporadas.
| Localização em literalidade | Tipo de expressão | Manuseio de Nothing |
|---|---|---|
| Nome do elemento XML | XName | Erro |
| Conteúdo do elemento XML |
Object ou matriz de Object |
Ignorada |
| Nome do atributo do elemento XML | XName | Erro, a menos que o valor do atributo também seja Nothing |
| Valor do atributo do elemento XML | Object |
Declaração de atributo ignorada |
| Atributo do elemento XML | XAttribute ou uma coleção de XAttribute | Ignorada |
| Elemento raiz do documento XML | XElement ou uma coleção de um XElement objeto e um número arbitrário de XProcessingInstruction e XComment objetos | Ignorada |
Exemplo de uma expressão incorporada em um nome de elemento XML:
Dim elementName As String = "contact" Dim contact1 As XElement = <<%= elementName %>/>Exemplo de uma expressão incorporada no conteúdo de um elemento XML:
Dim contactName As String = "Patrick Hines" Dim contact2 As XElement = <contact><%= contactName %></contact>Exemplo de uma expressão incorporada em um nome de atributo de elemento XML:
Dim phoneType As String = "home" Dim contact3 As XElement = <contact <%= phoneType %>="206-555-0144"/>Exemplo de uma expressão incorporada em um valor de atributo de elemento XML:
Dim phoneNumber As String = "206-555-0144" Dim contact4 As XElement = <contact home=<%= phoneNumber %>/>Exemplo de uma expressão incorporada em um atributo de elemento XML:
Dim phoneAttribute As XAttribute = New XAttribute(XName.Get(phoneType), phoneNumber) Dim contact5 As XElement = <contact <%= phoneAttribute %>/>Exemplo de uma expressão incorporada em um elemento raiz do documento XML:
Dim document As XDocument = <?xml version="1.0"?><%= contact1 %>
Se ativar Option Strict, o compilador verifica se o tipo de cada expressão incorporada é ampliado para o tipo necessário. A única exceção é para o elemento raiz de um documento XML, que é verificado quando o código é executado. Se você compilar sem Option Strict, poderá incorporar expressões do tipo Object e seu tipo será verificado em tempo de execução.
Em locais onde o conteúdo é opcional, as expressões incorporadas que contêm Nothing são ignoradas. Isso significa que você não precisa verificar se o conteúdo do elemento, os valores de atributo e os elementos da matriz são diferentes de Nothing antes de usar um literal XML. Os valores necessários, como nomes de elementos e atributos, não podem ser Nothing.
Para obter mais informações sobre como usar uma expressão incorporada em um tipo específico de literal, consulte XML Document Literal, XML Element Literal.
Regras de escopo
O compilador converte cada literal XML numa chamada de construtor para o tipo literal apropriado. O conteúdo literal e expressões incorporadas em um literal XML são passados como argumentos para o construtor. Isso significa que todos os elementos de programação do Visual Basic disponíveis para um literal XML também estão disponíveis para suas expressões incorporadas.
Dentro de um literal XML, pode-se acessar os prefixos de namespace XML declarados com a instrução Imports,. Você pode declarar um novo prefixo de namespace XML ou sombrear um prefixo de namespace XML existente em um elemento usando o xmlns atributo. O novo namespace está disponível para os nós filhos desse elemento, mas não para literais XML em expressões incorporadas.
Nota
Quando você declara um prefixo de namespace XML usando o xmlns atributo namespace, o valor do atributo deve ser uma cadeia de caracteres constante. Nesse sentido, usar o xmlns atributo é como usar a Imports instrução para declarar um namespace XML. Não é possível usar uma expressão incorporada para especificar o valor do namespace XML.