Прямой конструктор
В прямом конструкторе элемента имя создаваемого элемента является константой. В этом случае элемент создается в соответствии с правилами синтаксиса XML и может содержать вложенные элементы.
В прямой конструктор могут включаться выражения, заключенные в фигурные скобки "{" и "}". При создании элемента эти выражения будут вычислены и заменены своим результатом.
Если символы "{" и "}" используются в конструкторе как обычные символы, они должны быть удвоены, т.е. заменены символами "{{" и "}}". Можно также использовать ссылки на символы: { для символа "{" и } для символа "}".
Результатом действия конструктора является новый узел-элемент.
Начальный тег конструктора и вложенных элементов может содержать один и более атрибутов. Имя атрибута должно быть типа QName, а значение – строкой, заключенной в одиночные или двойные апострофы. Так же, как и содержимое элемента, значение атрибута может содержать вычисляемые выражения в фигурных скобках "{" и "}".
Каждый атрибут в прямом конструкторе элемента создает свой собственный узел-атрибут.
Текстовым значением созданного узла является конкатенация содержимого всех входящих в него текстовых узлов.
Прямые конструкторы узлов комментариев и узлов инструкций по обработке записываются в конструкторе в том виде, в каком они появятся в документе XML.
Пример задания прямого конструктора:
Запрос на обработку с использованием прямого конструктора имеет следующий вид:
xquery version "1.0";
declare variable $email-server as xs:string:="mail.com";
<message>
<header>
<address>
<from value="{fn:concat('ivanov','@',$email-server)}"/>
<to value="{fn:concat('sidorov','@',$email-server)}"/>
</address>
<subject>О встрече</subject>
</header>
<body>{fn:concat("Встреча сегодня ",
fn:substring(xs:string(fn:current-date()),1,10),
" в 12.30")}</body>
</message>
Результат обработки запроса имеет следующий вид:
<message>
<header>
<address>
<from value="ivanov@mail.com"/>
<to value="sidorov@mail.com"/>
</address>
<subject>О встрече</subject>
</header>
<body>Встреча сегодня 2008-03-01 в 12.30</body>
</message>
Дата добавления: 2015-03-19; просмотров: 532;