Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Внедренные выражения позволяют создавать XML-литералы, содержащие выражения, вычисляемые во время выполнения. Синтаксис внедренного выражения <%=expression%>совпадает с синтаксисом, используемым в ASP.NET.
Например, можно создать литерал XML-элемента, сочетая внедренные выражения с текстовым содержимым литерала.
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>
Если isbnNumber содержит целое число 12345 и modifiedDate содержит дату 3/5/2006, когда этот код выполняется, значение book равно:
<book category="fiction" isbn="12345">
<modifiedDate>3/5/2006</modifiedDate>
</book>
Расположение и проверка внедренных выражений
Внедренные выражения могут отображаться только в определенных расположениях в xml-литеральных выражениях. Расположение выражения определяет, какие типы выражения могут возвращать и как Nothing обрабатывается. В следующей таблице описываются допустимые расположения и типы внедренных выражений.
| Расположение в литерале | Тип выражения | Обработка Nothing |
|---|---|---|
| Имя XML-элемента | XName | Ошибка |
| Содержимое XML-элемента |
Object или массив Object |
Пропущено |
| Имя атрибута XML-элемента | XName | Ошибка, если значение атрибута также не является Nothing |
| Значение атрибута XML-элемента | Object |
Объявление атрибута игнорируется |
| Атрибут XML-элемента | XAttribute или коллекция XAttribute | Пропущено |
| Корневой элемент XML-документа | XElement или коллекция одного XElement объекта и произвольное число XProcessingInstruction и XComment объекты | Пропущено |
Пример внедренного выражения в имени XML-элемента:
Dim elementName As String = "contact" Dim contact1 As XElement = <<%= elementName %>/>Пример внедренного выражения в содержимом XML-элемента:
Dim contactName As String = "Patrick Hines" Dim contact2 As XElement = <contact><%= contactName %></contact>Пример внедренного выражения в имени атрибута XML-элемента:
Dim phoneType As String = "home" Dim contact3 As XElement = <contact <%= phoneType %>="206-555-0144"/>Пример внедренного выражения в значении атрибута XML-элемента:
Dim phoneNumber As String = "206-555-0144" Dim contact4 As XElement = <contact home=<%= phoneNumber %>/>Пример внедренного выражения в атрибуте XML-элемента:
Dim phoneAttribute As XAttribute = New XAttribute(XName.Get(phoneType), phoneNumber) Dim contact5 As XElement = <contact <%= phoneAttribute %>/>Пример внедренного выражения в корневом элементе XML-документа:
Dim document As XDocument = <?xml version="1.0"?><%= contact1 %>
Если этот параметр включен Option Strict, компилятор проверяет, расширяет ли тип каждого внедренного выражения до требуемого типа. Единственным исключением является корневой элемент XML-документа, который проверяется при запуске кода. Если вы компилируете без Option Strictнее, можно внедрить выражения типа Object и их тип проверяется во время выполнения.
В расположениях, где содержимое является необязательным, внедренные выражения, содержащиеся Nothing в них, игнорируются. Это означает, что вам не нужно проверять содержимое элемента, значения атрибутов и элементы массива, Nothing прежде чем использовать XML-литерал. Обязательные значения, такие как имена элементов и атрибутов, не могут быть Nothing.
Дополнительные сведения об использовании внедренного выражения в определенном типе литерала см. в разделе XML Document Literal, XML Element Литерал.
Правила области видимости
Компилятор преобразует каждый XML-литерал в вызов конструктора для соответствующего типа литерала. Литеральное содержимое и внедренные выражения в XML-литерале передаются в качестве аргументов конструктору. Это означает, что все элементы программирования Visual Basic, доступные для XML-литерала, также доступны для внедренных выражений.
В xml-литерале можно получить доступ к префиксам пространства имен XML, объявленным с помощью инструкции Imports . Можно объявить новый префикс пространства имен XML или затенить существующий префикс пространства имен XML в элементе с помощью атрибута xmlns . Новое пространство имен доступно дочерним узлам этого элемента, но не xml-литералам в внедренных выражениях.
Примечание.
При объявлении префикса пространства имен XML с помощью атрибута xmlns пространства имен значение атрибута должно быть константной строкой. В этом отношении использование атрибута xmlns похоже на использование Imports инструкции для объявления пространства имен XML. Встроенное выражение нельзя использовать для указания значения пространства имен XML.