[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

Setting global variables

Michael Kay mike at saxonica.com
Wed Oct 31 21:52:57 PST 2007


  Setting global variables
> Is the whole point of functional programming to allow better 
> optimization by the processor / compiler? Or are there other 
> advantages as well?

That's part of the point. The other part is that it removes a lot of the
potential for coding errors. Programs without side-effects are much less
likely to contain bugs.
> 
> As I mentioned to John, I can't do this because the document 
> name can change. If I could pass the document name from a 
> point external to the library, this would solve my problem. 
> (I suppose I should check the Saxon documentation and see if 
> this is possible...)

Sure, use an external variable

declare variable $docname external;
declare variable $doc := doc($docname);
declare variable $mydata := $doc//item[color='pink']

There's a Saxon extension that allows you to provide a default value for an
external variable.

(For the special case of document URIs, there's also another option, which
is to use a URIResolver. If you supply a URIResolver, then the literal URIs
contained in the query become abstract URIs that can be mapped to any
resources your application chooses.)

Michael Kay
http://www.saxonica.com/


> 
> > Incidentally, the problem of passing parameters through 
> functions that 
> > don't actually look at them directly sounds like a request for 
> > something like XSLT 2.0's tunnel parameters.
> 
> It does.
> 
> > It looks as if XQuery is going to be extended to turn it into a 
> > procedural language through "scripting extensions". As far as I'm 
> > concerned, that's a great shame - being forced to learn to use 
> > functional programming has made me a much better programmer.
> 
> How so?
> 
> I've had to jump through a slightly different set of hoops, 
> but it all feels about the same as performing structured 
> programming. By "structured programming", I mean breaking 
> your application into many small functions and only passing 
> to each function the information it needs. This as opposed to 
> 70s-style spaghetti code, with lots of global variables and 
> GOTOs. That was a big difference for me and led to much cleaner code.
> 
> Of course, here I am asking for global variables :)
> 
> -- Ron
> 
> _______________________________________________
> http://x-query.com/mailman/listinfo/talk
> http://x-query.com/mailman/listinfo/talk



Purchase Stylus Studio Online Today!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.