Subject: Re: [xsl] Select item from schedule based on date in XPath 1.0 From: "Philipp Kursawe phil.kursawe@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 31 Jul 2014 18:19:50 -0000 |
Thanks Dimitre, that works! Nice trick with the "last()" On Wed, Jul 30, 2014 at 6:12 PM, Dimitre Novatchev dnovatchev@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > On Wed, Jul 30, 2014 at 7:00 AM, Philipp Kursawe > phil.kursawe@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> > wrote: > > I am using XPath 1.0 so for the date comparison itself I use this trick: > > number(translate(@startTime, "-T:.Z", "")) > > to get a number representation for the startTime attibute. > > > > Simply removing the non-digit characters will not, in general, be > correct, especially in the case when the timezone values are > different. > > If you can completely ignore the timezones, this XPath expression: > > /*/*[translate(substring-before(substring-after(@startTime, 'T'), > '.'), ':', '') > < > 100*translate($vMyTime, ':', '') > ] > [last()] > > selects the item element with the wanted value of the startTime attribute. > > To prove this, one can run a transformation as the following: > > <xsl:stylesheet version="1.0" xmlns:xsl=" > http://www.w3.org/1999/XSL/Transform"> > <xsl:output omit-xml-declaration="yes" indent="yes"/> > > <xsl:variable name="vMyTime" select="'11:15'"/> > <xsl:template match="/"> > <xsl:copy-of select=" > /*/*[translate(substring-before(substring-after(@startTime, 'T'), > '.'), ':', '') > < > 100*translate($vMyTime, ':', '') > ] > [last()] > "/> > </xsl:template> > </xsl:stylesheet> > > > When this transformation is applied on the provided XML document > (corrected to be wellformed): > > <daily> > <item startTime="2014-07-26T10:00:00.000Z"/> > <item startTime="2014-07-26T11:00:00.000Z"/> > <item startTime="2014-07-26T12:00:00.000Z"/> > <item startTime="2014-07-26T13:00:00.000Z"/> > </daily> > > the wanted result is produced: > > <item startTime="2014-07-26T11:00:00.000Z" /> > > > -- > 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? :) > ------------------------------------- > I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Select item from schedule, L2L 2L emanuelallen@ | Thread | [xsl] want to sort and resolve <xre, Flanders, Charles E |
[xsl] want to sort and resolve <xre, Flanders, Charles E | Date | |
Month |