| Каталог | Индекс раздела |
| Назад | Содержание | Вперед |
Вычисляемый конструктор элемента создает элементный узел, для которого содержимое узла вычисляется на основании вложенных выражений.
Результатом вычисляемого конструктора элемента является новый элементный узел, который имеет собственную идентификацию узла. Все узлы атрибутов и потомков нового элементного узла также являются новыми узлами, которые имеют собственную идентификацию, даже если они являются копиями существующих узлов.
Синтаксис
>>---element--element_name--{--+-----------------------+--}---------><
'-выражение_содержимого-'
| element | |
Ключевое слово, которое показывает, что будет конструироваться элементный узел. |
element_name | |
QName конструируемого элемента. Если element_name включает префикс пространства имен, префикс разрешается в URI пространства имен при помощи использования статически определенных пространств имен. Если element_name не имеет префикса пространства имен, имена неявным образом квалифицируются пространством имен по умолчанию для элементов/типов. Расширенное QName, которое является результататом вычисления element_name становится именем конструируемого элементного узла. |
выражение_содержимого | |
Выражение, которое генерирует содержимое конструируемого элементного узла. Значение выражение_содержимого может быть любой последовательностью узлов и атомарных значенией. выражение_содержимого может использоваться для вычисления как содержимого, так и атрибутов конструируемого узла. Для каждого узла, который возвращает выражение_содержимого, создается новая копия узла и всех его потомков с сохранением их исходных аннотаций типа. Любые узлы атрибутов, которые возвращает выражение_содержимого, должны быть в начале последовательности узла (перед любыми другими узлами); эти узлы атрибутов становятся атрибутами конструируемого элемента. Любой узел элемента, содержимого или инструкции обработки, которые возвращает выражение_содержимого, становятся дочерними узлами нового конструируемого узла. Любые атомарные значения, которые возвращает выражение_содержимого преобразуются в строки и записываются в текстовые узлы, которые становятся дочерними узлами нового конструируемого узла. Соседние текстовые узлы сливаются в один текстовый узел. |
Примеры
В следующем выражении вычисляемый конструктор элемента делает модифицированную копию существующего элемент. Предположим, что переменная $e связана с элементом, которые имеет числовое содержимое. Этот конструктор создает новый элемент с именем length, который имеет те же атрибуты, что и $e, имеет числовое содержимое, равное удвоенному содержимому $e:
element length {$e/@*, 2 * fn:data($e)}
В этом примере, если переменная $e связана с выражением let $e := <length units="inches">{5}</length>, то результатом выражения-примера является элемент <length units="inches">10</length>.
Назад Содержание Вперед
Каталог Индекс раздела