[xquery-talk] Tree-walking (was: index-of() behavior)
lists at fgeorges.org
Thu Mar 19 20:38:37 PST 2009
Michael Kay wrote:
> To get close to emulating apply-templates, I think you need
> a function M that maps node-names to functions T, so you pass
> M to your tree-walking function W, and W when it reaches a node
> N calls M to obtain the function T corresponding to the node-name
> of N, and then calls T. (M=mode, T=template).
Very interesting. Except that I would define M as mapping a node (not a node name) to functions, to emulate match patterns. But I guess a general, user-defined function to map from nodes to functions would be less than optimal. I guess I am too much XSLT-oriented, but a set of pairs of match patterns (as defined by XSLT) and function objects sounds reasonable to me:
M1 := (("pattern1", T1),
M2 := (("pattern-a", Ta),
One obvious advantage of what you describe is that W is not fixed, and could be defined by the user or by a library, and be reused, instead of having to write it again and again as in XSLT.
I thought a few weeks ago that it would be interesting to expose patterns as first-class objects, even in XSLT. It seems this would be an interesting application.
More information about the talk