Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: [xml-dev] Dynamic function names

From: "Michael Kay" <mike@--------.--->
To: "'Ignacio Tripodi'" <ignaciot@-----.--->,<xml-dev@-----.---.--->
Date: 8/8/2008 7:22:00 PM
Unfortunately XQuery has neither higher-order functions nor 
dynamic evaluation. (With higher-order functions, the variable doesn't hold the 
name of the function as a string, it holds a reference to the function as a 
first class object). However, many implementations do have an eval() function 
(in saxon it's called saxon:evaluate()) and some (including Saxon-SA) also have 
a capability for higher-order functions.
 
If you're prepared to consider XSLT rather than XQuery, 
Dimitre Novatchev's FXSL library provides a full implementation of higher-order 
programming in 100% portable XSLT code (this is possible in XSLT because it can 
ride on the dynamic despatch mechanism offered by 
xsl:apply-templates).
 
Michael Kay
http://www.saxonica.com/


  
  
  From: Ignacio Tripodi 
  [mailto:ignaciot@g...] 
Sent: 08 August 2008 
  19:54
To: xml-dev@l...
Subject: [xml-dev] Dynamic 
  function names


  
  Is this possible to do with XQuery? I'd like to be able to eval() 
  a function whose name I'm getting from a variable. In a nutshell, I would have 
  an attribute whose value is the function name that needs to be called. 
  Something 
  like:

                
  let $func_name := 
  //blah[@function_to_run]
                
  let $func_argument := 
  //blah[@some_id]
                
  let $result := eval($func_name( $att_value ))

which would basically 
  execute the function whose name is $func_name, passing it $func_argument as 
  the only argument and storing the result in $result. Of course, the 3rd line 
  does not work and it's only to show what I'm trying to accomplish. Is there 
  any way to accomplish this, not necessarily using eval()?

Any help will 
  be greatly appreciated!

-i


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent