Hi Marc,
I have not used it, or even claim to understand it, but https://github.com/jpcs/transform.xq might give you some ideas. It avoids eval by using an EBNF to pre-generate an XPath parser in XQuery.
/Andy
On 13 November 2014 21:51, Marc van Grootel marc.van.grootel@gmail.com wrote:
Hi,
I would like to ask some advice.
For my Origami[1] library I'm exploring different ways of providing more powerful selectors for nodes in a template document.
As this is for a templating library I would like to offer string based selectors and am considering if I should go for CSS-style selectors or XPath selectors.
I started on CSS selectors to be able to select nodes with selectors like "p#id" and "li.class" but to do this properly it involves quite a bit of string manipulation in order to support more advanced stuff.
Being in a language that already has XPath in it, it would be much more natural and powerful to use XPath selectors. This led me to look at xquery:eval.
So far I resisted using eval but the code is a lot simpler that way. Implementing CSS-style selectors would probably lead me down a path with a lot more ugly string manipulation.
I'm aware that it's better to express these things in XQuery code and that is also possible. But it's so much nicer to read this:
xf:extract(xf:select('li'), $doc)
then this:
xf:extract(function($node) { $node/li }, $doc)
I'm interested in pros and cons of using xquery:eval with XPath string-selectors. How is the performance? Other downsides (such as being non-standard)?
Thanks
--Marc