[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Michael Kay" <mike@s...>
  • To: "'Fraser Goffin'" <goffinf@g...>,"'xml-dev'" <xml-dev@l...>
  • Date: Thu, 17 Apr 2008 09:50:32 +0100

 
> Sorry for asking an XQuery question here, if there is a more 
> appropriate forum please let me know.

talk at x-query.com

> 
> 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]

This is actually an XPath question. This path expands to

$set/descendant-or-self::node()/child::gotcha/preceding-sibling::div1[@class
="doc"][1]

Now, one of the elements in $set is a gotcha element, but none of them has a
child, or has a descendant with a child, named gotcha. Therefore the
expression selects nothing.

You want $set/self::gotcha/....

Michael Kay
http://www.saxonica.com/



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member