Subject: Re: [xsl] Select item from schedule based on date in XPath 1.0 From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 30 Jul 2014 16:11:33 -0000 |
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 | Re: [xsl] Select item from schedule, L2L 2L emanuelallen@ |
Re: [xsl] Select item from schedule, L2L 2L emanuelallen@ | Date | Re: [xsl] Select item from schedule, L2L 2L emanuelallen@ |
Month |