[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XQuery Puzzle
On 17/04/2008, Fraser Goffin <goffinf@g...> wrote: > Sorry for asking an XQuery question here, if there is a more > appropriate forum please let me know. > > Anyway, a question relating to this simple XQuery has been circulating > on another group, but I am puzzled as to whether using // on a > sequence is valid (see the return clause below). I tried in a couple > of XQuery parsers (Saxon9 + the one built into XML Spy) and both > return no results ?? > > let $set := ( > <div1>one </div1>, > <div1 class="doc">two </div1>, > <div1>three </div1>, > <div1 class="doc">four </div1>, > <gotcha>START</gotcha>, > <div1>five </div1> > ) > return $set//gotcha/preceding-sibling::div1[@class="doc"][1] It's because they don't share a parent that they aren't siblings - so the preceding-sibling axis returns nothing. Give them a common parent such as: let $set := <foo> <div1>one </div1>, <div1 class="doc">two </div1>, <div1>three </div1>, <div1 class="doc">four </div1>, <gotcha>START</gotcha>, <div1>five </div1></foo> and it will return: <div1 class="doc">four </div1> remember to use brackets if you wanted the first in document order rather than the nearest sibling: ($set//gotcha/preceding-sibling::div1[@class="doc"])[1] returns <div1 class="doc">two </div1> The xquery list is at x-query.com cheers -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
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
|