Как заменить значение $ content при преобразовании? - PullRequest
1 голос
/ 02 апреля 2019

Мне нужно заменить значение $ content в моем преобразовании.

xquery version "1.0-ml";

module namespace test =
  "http://marklogic.com/rest-api/transform/security-load";

declare function test:transform(
    $context as map:map,
    $params as map:map,
    $content as document-node()
) as document-node()
{       
        let $jsonObj := xdmp:from-json($content)
        let $inputval := "fname,lname"
        let $entity :="holidayDate"
        let $domain :="referenceData"


        let $uri := xdmp:apply(
            xdmp:function(xs:QName("createUri"), "/wdsUtils.sjs"),
            $jsonObj,
            $inputval)


        let $root := xdmp:apply(
            xdmp:function(xs:QName("addMetaData"), "/wdsUtils.sjs"),
            $entity,
            $domain,
            $jsonObj)

        let $output := $root    

        return map:put($context,"uri",$uri),
        document { $output }
};

Мне нужно изменить значение $ content на значение $ root и вернуть его. Я пытался вернуть $ root напрямую, но это не сработало, я получил недопустимую ошибку в документе.

enter image description here

1 Ответ

2 голосов
/ 02 апреля 2019

Проблема в том, что $output относится к оператору FLWOR, но вы ссылаетесь на него вне этого оператора. Смотрите скобки в return ниже.

xquery version "1.0-ml";

module namespace test = "http://marklogic.com/rest-api/transform/security-load";

declare function test:transform(
    $context as map:map,
    $params as map:map,
    $content as document-node()
) as document-node()
{       
    let $jsonObj := xdmp:from-json($content)
    let $inputval := "fname,lname"
    let $entity :="holidayDate"
    let $domain :="referenceData"

    let $uri := 
        xdmp:apply(
            xdmp:function(xs:QName("createUri"), "/wdsUtils.sjs"),
            $jsonObj,
            $inputval
        )

    let $root := 
        xdmp:apply(
            xdmp:function(xs:QName("addMetaData"), "/wdsUtils.sjs"),
            $entity,
            $domain,
            $jsonObj
        )

    let $output := $root    

    return (
        map:put($context,"uri",$uri),
        document { $output }
    )
};
...