Re: [xsl] XPath2 preceding / following axis and attributes

Subject: Re: [xsl] XPath2 preceding / following axis and attributes
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Tue, 10 Jan 2006 21:10:35 +1100
On 1/10/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> > In fact, it is easy to see that the following two XPath expressions
> > are equivalent:
> >
> >       someElement/@someAttribute/following::someNodeTest
> >
> > and
> >
> >      someElement/following::someNodeTest
>
> No, I don't think that's correct. The former includes descendants of
> someElement, the latter doesn't.

If so, then Saxon 8.6.1 produces an unexpected result:

When this transformation:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
   <xsl:sequence select=
    "/*/Sample/Data[1]/@category/following::node()"
    />
 </xsl:template>
</xsl:stylesheet>


is applied with Saxon 8.6.1on this source xml document:

<Performance>
  <Sample timestamp="Wednesday, November 30, 2005 5:10:02 PM">
    <Data category="Memory" counter="Available MBytes" instance="">205</Data>
    <Data category="Process" counter="Private Bytes"
instance="lsass">1.397146E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="svchost">6.877594E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="winword">5.653791E+08</Data>
  </Sample>
  <Sample timestamp="Wednesday, November 30, 2005 5:10:04 PM">
    <Data category="Memory" counter="Available MBytes" instance="">192</Data>
    <Data category="Process" counter="Private Bytes"
instance="lsass">1.403699E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="svchost">6.877594E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="winword">5.653791E+08</Data>
  </Sample>
</Performance>

the following result is produced:

205
    <Data category="Process" counter="Private Bytes"
instance="lsass">1.397146E+07</Data>1.397146E+07
    <Data category="Process" counter="Virtual Bytes"
instance="svchost">6.877594E+07</Data>6.877594E+07
    <Data category="Process" counter="Virtual Bytes"
instance="winword">5.653791E+08</Data>5.653791E+08

  <Sample timestamp="Wednesday, November 30, 2005 5:10:04 PM">
    <Data category="Memory" counter="Available MBytes" instance="">192</Data>
    <Data category="Process" counter="Private Bytes"
instance="lsass">1.403699E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="svchost">6.877594E+07</Data>
    <Data category="Process" counter="Virtual Bytes"
instance="winword">5.653791E+08</Data>
  </Sample>
    <Data category="Memory" counter="Available MBytes"
instance="">192</Data>192
    <Data category="Process" counter="Private Bytes"
instance="lsass">1.403699E+07</Data>1.403699E+07
    <Data category="Process" counter="Virtual Bytes"
instance="svchost">6.877594E+07</Data>6.877594E+07
    <Data category="Process" counter="Virtual Bytes"
instance="winword">5.653791E+08</Data>5.653791E+08


So, is this a Saxon 8.6.1 bug in handling the "following" axis?

--
Cheers,
Dimitre Novatchev
---------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all.

Current Thread