> No, it doesn't seem to be fixed, Mike's implementation seems to try be
> smarter than the spec allows and his own coding assumes :)
Seems BaseX rules!
And glad to be a contributor to the eventual future improvement of Saxon :)
Cheers,
Dimitre
On Wed, Dec 29, 2021 at 12:17 PM Martin Honnen martin.honnen@xxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> On 29.12.2021 20:59, Dimitre Novatchev dnovatchev@xxxxxxxxx wrote:
> > document (fragments?) are involved.
> >
> > Yes, bugs happen...
> >
> > Just trying to evaluate Dr. Kay's fold-left solution with Saxon (EE9.1.7
> > via Oxygen) I am getting a result of 20 nodes but the correct must be
> > just 3 nodes. BaseX correctly evaluates the XPath expression and
> > produces the right 3-nodes result.
> >
> > Xml document:
> > <t>
> > <a/>
> > <b/>
> > <c/>
> > </t>
> >
> > XSLT stylesheet:
> >
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform
> > <http://www.w3.org/1999/XSL/Transform>" version="3.0">
> > <xsl:output omit-xml-declaration="yes"/>
> > <xsl:template match="/">
> > <xsl:sequence select=
> > "let $xml := /,
> > $nodes := (/*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a,
> > /*/b,
> > /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> > /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> > /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> > /*/a, /*/c, /*/b, /*/a, /*/b )
> > return
> > $nodes => fold-left((), function($all, $this) {$all, $this
> > except $all})"/>
> > </xsl:template>
> > </xsl:stylesheet>
> >
> > Result produced when run with Saxon-EE (and also PE) 9.9.1.7 via Oxygen:
> >
> >
> <a/><c/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/><b/>
> >
> > Evaluating the below expression with Saxon-EE XQuery9.9.1.7 also
> > produces the same unexpected result:
> >
> > let $xml := parse-xml("<t><a/><b/><c/></t>"),
> > $nodes := ($xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b,
> > $xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b, $xml/*/a, $xml/*/c,
> > $xml/*/b, $xml/*/a, $xml/*/b, $xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a,
> > $xml/*/b, $xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b, $xml/*/a,
> > $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b,$xml/*/a, $xml/*/c, $xml/*/b,
> > $xml/*/a, $xml/*/b, $xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b,
> > $xml/*/a, $xml/*/c, $xml/*/b, $xml/*/a, $xml/*/b )
> > return
> > $nodes => fold-left((), function($all, $this) {$all, $this except
> > $all})
> >
> > Hopefully this is fixed in the next versions of Saxon?
>
> No, it doesn't seem to be fixed, Mike's implementation seems to try be
> smarter than the spec allows and his own coding assumes :)
>
> Saxon-JS 2.3 gets
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="3.0">
> <xsl:output omit-xml-declaration="yes"/>
> <xsl:template match="/">
> <xsl:sequence select=
> "let $xml := /,
> $nodes := (/*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a,
> /*/b,
> /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> /*/a, /*/c, /*/b, /*/a, /*/b, /*/a, /*/c, /*/b, /*/a, /*/b,
> /*/a, /*/c, /*/b, /*/a, /*/b )
> return
> fold-left($nodes, (), function($all, $this) {$all, $this except
> $all})"/>
> </xsl:template>
> </xsl:stylesheet>
>
> right but SaxonCS and Saxon HE 10.6 don't.
>
>
>
--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
|