Yes,

Running with Saxon9 in Xquery mode does result in the expected results. The 
funny thing is though, that if changing the xqy to an xsl and running that 
against various parsers (I tried xalan, msxsl, older saxon and latest saxon), 
that they are all returning p2 for all testcases..

Erm...

Best regards,
Geert

>


Drs. G.P.H. Josten
Consultant


http://www.daidalos.nl/
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
http://www.daidalos.nl/
KvK 27164984
De informatie - verzonden in of met dit emailbericht - is afkomstig van 
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit 
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit 
bericht kunnen geen rechten worden ontleend.


> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> David Sewell
> Sent: vrijdag 27 maart 2009 4:16
> To: General Mark Logic Developer Discussion
> Subject: Re: [MarkLogic Dev General] issue with XPATH
>
> I agree with Florent that it appears to be a MarkLogic bug.
>
> A self-contained test case follows, using an XML node
> variable rather than a call to fn:doc(). The first four
> return values should contain both p2 and p4. Only the fifth
> one should contain p2 alone. Under MarkLogic, the first two
> return only p2.
>
> For what it's worth, Saxon 9.1 returns the expected results,
> eXist does not (but differs from MarkLogic in that set2 and
> set4 contain only p2).
>
> If Florent and I (and Michael Kay!) are wrong about this, I'd
> sure like to know why.
>
> let $xml :=
>    <root>
>      <div>
>        <p>p1</p>
>        <p>p2</p>
>      </div>
>      <div>
>        <p>p3</p>
>        <p>p4</p>
>      </div>
>    </root>
>
> return (
>    (: set1 - return all p's with position() = 2. Expected
> result: (p2, p4).  :)
>
>    <set1>{ $xml/descendant-or-self::node()/p[position() eq 2]
> }</set1>,
>
>    (: set2 - XPath abbreviation // is equivalent to
> /descendant-or-self::node()/
>       by definition. Result should still be (p2, p4) :)
>
>    <set2>{ $xml//p[position() eq 2] }</set2>,
>
>    (: set3 - XPath predicate [2] is equivalent to [position()
> eq 2]. Results
>       should be identical to set1/set2 :)
>
>    <set3>{ $xml/descendant-or-self::node()/p[2] }</set3>,
>
>    (: set4 - final syntax variation with full abbreviation.
> Results should
>       still be identical to set1/set2/set3 :)
>
>    <set4>{ $xml//p[2] }</set4>,
>
>    (:set5 - This is the only one that should return a single node, p2.
>      The XPath should return the second instance of all <p>
> descendants
>      of $xml. :)
>    <set5>{ $xml/descendant::p[2] }</set5>
> )
>
>
>
> On Thu, 26 Mar 2009, Florent Georges wrote:
>
> >
> > Geert Josten wrote:
> >
> >> Though I was surprised, I now think MarkLogic Server is responding
> >> correctly.
> >
> >  Sounds like a bug to me.  If you look at the definition of
> a numeric
> > predicate (http://www.w3.org/TR/xpath20/#id-predicates,
> point 1.) you
> > see that [1] is defined as [position() eq 1].  And in this
> expression,
> > using = and eq is the same.
> >
> >  Regards,
> >
> >
>
> --
> David Sewell, Editorial and Technical Manager ROTUNDA, The
> University of Virginia Press PO Box 801079, Charlottesville,
> VA 22904-4318 USA
> Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
> Email: [email protected]   Tel: +1 434 924 9973
> Web: http://rotunda.upress.virginia.edu/
> _______________________________________________
> General mailing list
> [email protected]
> http://xqzone.com/mailman/listinfo/general
>

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to