RE: Context node traversal inside predicates (was: Nod
> The 'context()' function would be similar to the 'current()' fuction. > It would recall previous context nodes. > > 'context(n)' would recall the n-th context node (as found > when propagating > upwards in the predicates of the expression) > > e.g.: > 'context(0)' is equal to '.' > 'context(1)' is equal to the context node as constructed by the > immmediately outer predicate. > ... > 'context(-1)' would be equal to the context node as found in > the outermost > predicate. Something like this was in an early draft of XPath 1.0, and was implemented (IIRC) in WD-xsl, though I've rarely seen it used in practice. I think the idea of manually addressing the stack of context variables is very error-prone and counter-intuitive. The proper way to do this is to declare a range variable. In XQuery you can do this using the "let" clause of the FLWOR expression; XPath 2.0 has a poor man's version in the "for" expression, which allows: $SetA/Element[for $Z in . return $setB/Element[substring-after(.,'.')=$Z]] In fact you might want to turn the whole thing into an XQuery-like join: for $Z in $SetA/Element, $Y in $setB/Element return if (substring-after($Y, '.') = $Z) then $Y else () Michael Kay http://www.saxonica.com/
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format