Use db:add from module. no updating expression allowed.
Wednesday, 8 February 2012 · 3 messages
A
andy8 Feb 2012 06:29 #
Hi!
If there is a module:
xquery version "1.0";
module namespace
m="http://www.host.ru/xquery/m";
declare variable $m:db :=
"mydb";
declare function m:up() as xs:string {
let $new-doc :=
<root-element><item>1</item></root-element>
let $update :=
db:add($m:db, document { $new-doc }, "id1.xml")
return
"Result
string"
};and I use it from python API or basexclient utility. Use
as:
xquery import module namespace m="http://www.host.ru/xquery/m" at "/tmp/test.xqy"; m:up()
I get an error:
Stopped at line 8, column 4 in
/tmp/test.xqy:
[XUST0001] Let expression: no updating expression
allowed.
What could be the problem?
--
REGARDS,
Andrey Ganyushkin
AW
Andreas Weiler8 Feb 2012 08:24 #
Hi there,
i guess you have to define the function as updating [1].
-- Andreas
[1] http://www.w3.org/TR/xquery-update-10/#id-function-declaration
Quoted text · andy · 34 lines
Am 08.02.2012 um 06:29 schrieb andy: > Hi! > > If there is a module: > > xquery version "1.0"; > module namespace m="http://www.host.ru/xquery/m"; > declare variable $m:db := "mydb"; > > declare function m:up() as xs:string { > let $new-doc := <root-element><item>1</item></root-element> > let $update := db:add($m:db, document { $new-doc }, "id1.xml") > return > "Result string" > }; > > and I use it from python API or basexclient utility. Use as: > > xquery import module namespace m="http://www.host.ru/xquery/m" at "/tmp/test.xqy"; m:up() > > I get an error: > > Stopped at line 8, column 4 in /tmp/test.xqy: > [XUST0001] Let expression: no updating expression allowed. > > What could be the problem? > > -- > Regards, > Andrey Ganyushkin > _______________________________________________ > BaseX-Talk mailing list > BaseX-Talk at mailman.uni-konstanz.de > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
A
andy8 Feb 2012 08:46 #
Many thanks!
Is working correctly now.
Corrected code:
xquery
version "1.0";
module namespace m="http://www.host.ru/xquery/m";
declare
variable $m:db := "mydb";
declare updating function m:up() {
let
$new-doc := <root-element><item>1</item></root-element>
return
db:add($m:db, document { $new-doc }, "id1.xml")
};Andreas Weiler писал
2012-02-08 11:24:
Quoted text · Andreas Weiler · 2 lines
> Hi there, > i guess you have to define the
function as updating [1].
Quoted text · Andreas Weiler · 2 lines
> -- Andreas > [1]
Quoted text · Andreas Weiler · 7 lines
> > Am 08.02.2012 um 06:29 schrieb andy: > >> Hi! >> >> If there is a
module:
Quoted text · Andreas Weiler · 9 lines
>> >> xquery version "1.0"; >> module namespace m="http://www.host.ru/xquery/m"; >> declare variable $m:db := "mydb"; >> >> declare function m:up() as xs:string { >> let $new-doc := 1 >> let
$update := db:add($m:db, document { $new-doc }, "id1.xml")Quoted text · Andreas Weiler · 2 lines
>> return >>
"Result string"
Quoted text · Andreas Weiler · 3 lines
>> }; >> >> and I use it from python API or
basexclient utility. Use as:
Quoted text · Andreas Weiler · 2 lines
>> >> xquery import module namespace
m="http://www.host.ru/xquery/m" at "/tmp/test.xqy"; m:up()
Quoted text · Andreas Weiler · 2 lines
>> >> I get
an error:
Quoted text · Andreas Weiler · 3 lines
>> >> Stopped at line 8, column 4 in /tmp/test.xqy: >>
[XUST0001] Let expression: no updating expression allowed.
Quoted text · Andreas Weiler · 2 lines
>> >> What
could be the problem?
Quoted text · Andreas Weiler · 7 lines
>> >> -- >> >> REGARDS, >> Andrey Ganyushkin >> _______________________________________________ >> BaseX-Talk
mailing list
Quoted text · Andreas Weiler · 2 lines
>> BaseX-Talk at mailman.uni-konstanz.de [1] >>
--
REGARDS,
Andrey Ganyushkin
Links:
------
[1]
mailto:BaseX-Talk at mailman.uni-konstanz.de
[2]
http://www.w3.org/TR/xquery-update-10/#id-function-declaration
Written for BaseX 7.0. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery