Subject: RE: [xsl] Template matching preceding-sibling. From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 14 Nov 2007 08:28:59 -0000 |
You're missing that != (like the other comparison operators) returns true if any item on the left is != to any item on the right. You probably want not(activity = preceding-sibling::Rec/activity) but I haven't looked at the problem, it might be that you want not(activity = preceding-sibling::Rec[1]/activity) which only looks at the immediately preceding sibling. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Ilya Konanykhin [mailto:ilya.konanykhin.ml@xxxxxxxxx] > Sent: 14 November 2007 04:01 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Template matching preceding-sibling. > > Hi, list! > I'm asking for clarification of the topic being on the list > several days ago (Nov 8). Steve <subsume@xxxxxxxxx> wrote: > > > I'm missing something fundamental, what is it? > > > > <xsl:template match="Rec[activity != > preceding-sibling::Rec/activity > > or not(preceding-sibling::Rec)]"> Ello xslers. > > </xsl:template> > > > > <xml> > > <Rec> > > <activity>hi</activity> > > </Rec> > > <Rec> > > <activity>hi</activity> > > </Rec> > > </xml> > > > > ---- > > > > Above should only print anything once, but I'm getting it each time. > > What am I not getting? > > Charles Knell and Scott Trenda gave advices/made notices, > thus confirming, that the problem exists. But copying the > input data and the template given by Steve and running it I > obtained exactly the result required by him in the first > topic-forming message, if I understood his request correctly. > I used MSXML (not sure about version, but don't think it's > important in this simple > case) and Saxon 9, for the latter I also tried changing > template version to 2.0 - the result stood the same. Data follows: > > ----------- > input.xml: > <?xml version="1.0"?> > > <xml> > <Rec> > <activity>hi</activity> > </Rec> > <Rec> > <activity>hi</activity> > </Rec> > </xml> > > ----------- > input.xsl: > <?xml version="1.0"?> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:template match="Rec[activity != > preceding-sibling::Rec/activity or not(preceding-sibling::Rec)]"> > Ello xslers. > </xsl:template> > > </xsl:stylesheet> > > ----------- > output.xml: > <?xml version="1.0" encoding="UTF-8"?> > > Ello xslers. > > > hi > > ----------- > > As it is clearly seen the string "Ello xslers" appears only > once and not twice as Steve wrote ("hi" comes from the defaul > copy rules, as I understand it). > > Did I missed or misunderstood something very basic? Can > someone please reveal the trick to me (especially interested > in Charles' oppinion as he was involved most intensively in > the discussion). > > Many thanks in advance, > Ilya
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Template matching precedi, Ilya Konanykhin | Thread | Re: [xsl] Template matching precedi, Ilya Konanykhin |
[xsl] get value from link from last, Vaduvoiu Tiberiu | Date | RE: [xsl] get value from link from , Michael Kay |
Month |