Expressões incorporadas em XML (Visual Basic)
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 literal | Tipo de expressão | Manuseamento 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 você habilitar Option Strict
o , o compilador verificará se o tipo de cada expressão incorporada se amplia 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 não Nothing
estão 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 em uma 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, você pode acessar os prefixos de namespace XML declarados com a Imports
instrução. 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.