XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
- XQuery Help and Discussion (2017)
-> + Issue with Processing Instruct... (2)
-> + problem converting json to XML... (2)
-> + Problem base64 decoding string... (3)
-> + Problems posting multipart for... (5)
-> + trouble with download of price... (2)
-> + Problem with http-post not bei... (3)
-> + path problem, xps_file:writeAl... (9)
-> + Xquery update support? (2)
-> + problem with Stylus studio try... (5)
-> + adding dtd reference to xml ou... (4)
-> + xquery escaping ambarsand when... (3)
-> + Whitespace problem when return... (5)
-> + Problem with namespace prefix ... (5)
-> - Sending via SFTP returns unexp... (1)
-> + Query and Sftp clent (4)
-> + xquery and try - catch (3)
-> + Query + ddtek:http-post optio... (5)
-> + Example files referenced in do... (3)
-> + Automatic Error Detection and ... (3)
-> + Working with result of ddtek:h... (2)
-- [1-20] [21-40] [41-60] Next
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 05:55 AM
How can I change a variable value inside a block ?

let $x:=3
let $y := if($x = 3) then
let $x := 4
return 1
else 2
return $x

The previous code will always return 3, but I want it to return 4. How can I do that ? Is it possible to modify variable values inside blocks ?

PS. I`m running this query agains eXist XML Database.

Postnext
(Deleted User) Subject: Update variable value inside block
Author: (Deleted User)
Date: 13 Sep 2005 06:19 AM
Hi Marius,
the XQuery language does not allow changing the value assigned to a variable; so, in your code, you are defining a new $x variable with a narrower scope.
This is a query equivalent to the one you wrote:

declare function computeY($x)
{
if($x = 3) then 1
else 2
};

let $x := 3
let $y := computeY($x)
return $x

Hope this helps,
Alberto

Postnext
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 06:27 AM
Thanks.

This helps me to understant why my code does not work. But could provide an example of how I could obtain the new value as I would from Java for example? I could return an XML node with 2 childs representing the 2 values, and then obtain the values from that node, but this would affect the performance as one of my variables is a quite large sequence.

Postnext
(Deleted User) Subject: Update variable value inside block
Author: (Deleted User)
Date: 13 Sep 2005 06:39 AM
Hi Marius,
in XQuery you have to find out the rule or the formula that computes the correct value.
Your snippet is too simple for me to guess what you are doing; can you post the real code you are dealing with?

Alberto

Posttop
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 07:11 AM
Thanks.

This helps me to understant why my code does not work. But could provide an example of how I could obtain the new value as I would from Java for example? I could return an XML node with 2 childs representing the 2 values, and then obtain the values from that node, but this would affect the performance as one of my variables is a quite large sequence.

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.