Встроенные выражения в XML (Visual Basic)
Встроенные выражения позволяют создать 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 содержит дату "05.03.2006", то при выполнении этого кода значение book будет:
<book category="fiction" isbn="12345">
<modifiedDate>3/5/2006</modifiedDate>
</book>
Расположение и проверка встроенных выражений
Встроенные выражения могут располагаться только на определенных местах внутри текстовых XML выражений. Расположение выражения определяет типы значений, которые могут возвращать выражения, и порядок обработки ключевого слова Nothing. В следующей таблице предоставлены разрешенные расположения и типы встроенных выражений.
Расположение в литерале |
Тип выражения |
Обработка Nothing |
Имя XML-элемента |
Ошибка |
|
Содержимое XML-элемента |
Элемент Object или массив элементов Object |
Игнорируется |
Имя атрибута XML-элемента |
Ошибка, если значение атрибута не является также 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, игнорируются. Это означает, что перед использованием XML-литерала можно не проверять содержимое элемента, значения атрибутов и элементы массива, которые не содержат значения Nothing. Необходимые значения, такие как имена элементов и атрибутов, не могут быть Nothing.
Дополнительные сведения об использовании встроенного выражения в литерале определенного типа см. в разделе XML-литерал документа (Visual Basic), Литеральное представление XML-элемента (Visual Basic).
Правила обзора данных
Компилятор преобразует каждый XML-литерал в вызов конструктора для соответствующего типа литерала. Компилятор преобразует каждый XML-литерал в вызов конструктора для соответствующего типа литерала. Это означает, что все элементы программирования Visual Basic, доступные для XML-литерала, также доступны для его встроенных выражений.
В XML-литерале можно использовать префиксы пространства имен XML, объявляемые с помощью инструкции Imports. Можно объявить новый префикс пространства имен XML или переопределить существующий XML-префикс в элементе с помощью атрибута xmlns. Новое пространство имен является доступным для дочерних узлов таких элементов, но не для XML-литералов во встроенных выражениях.
Примечание
При объявлении префикса пространства имен XML с помощью атрибута пространства имен xmlns значение атрибута должно быть константной строкой.В этом смысле, использование атрибута xmlns аналогично использованию инструкции Imports для объявления пространства имен XML.Встроенные выражения нельзя использовать для указания значения пространства имен XML.
См. также
Ссылки
XML-литерал документа (Visual Basic)
Литеральное представление XML-элемента (Visual Basic)
Оператор Imports (пространство имен .NET и тип)
Основные понятия
Общие сведения об XML-литералах (Visual Basic)