Оператор if, который присваивает переменной строковое значение - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в XQuery и изо всех сил пытаюсь найти в Интернете что-нибудь, что учит меня таким простым вещам, как это. Я пытаюсь просто передать 2 строки, где 1 строка возвращается в качестве тега, а 1 строка возвращается в качестве нового значения. Пока у меня есть это, но я получаю ошибки сборки.

declare function util:format-promo-tracking-element(
$fieldName as xs:string, 
$stringValue as xs:string)
{
    let $elementName := $fieldName
    if($stringValue = '5.00') then (
    let $stringValue := '4.05'

    return
        element {$elementName}
        {
            data($stringValue) 
        }  

    )
     else()   

};

Я также пытался переместить оператор return в конец.

1 Ответ

0 голосов
/ 07 ноября 2018

XQuery - это функциональный язык, поэтому попытка присвоить новое значение существующей переменной не допускается. Я думаю, вы хотите что-то вроде этого.

declare function util:format-promo-tracking-element(
$fieldName as xs:string, 
$stringValue as xs:string)
{
let $newValue := if ($stringValue = '5.00') then  '4.05' else $stringValue

    return
        element {$fieldName}
        {
            $newValue
        }  
};

На Wikibooks есть немало основных примеров.

...