xsl-list
[Top] [All Lists]

Re: [xsl] Select item from schedule based on date in XPath 1.0

2014-07-30 13:26:28


E-S4L

On Jul 30, 2014, at 12:11 PM, "Dimitre Novatchev 
dnovatchev(_at_)gmail(_dot_)com" 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

On Wed, Jul 30, 2014 at 7:00 AM, Philipp Kursawe
phil(_dot_)kursawe(_at_)gmail(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>
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'),
'.'), ':', '')
       &lt;
         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'),
'.'), ':', '')
       &lt;
         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.


When it's all said and done it want matter, it'll only matter in that time. So 
in that time enjoy the existence of that time before that existence is blown 
away like a candle in the wind. No wishes comes true setting around waiting for 
it, life is about living. Make it  what you want. What you every do, be happy 
while doing it, cause when the end comes, it'll be bitter sweet. Some receive 
this end more bitter than sweet, other a little more sweet than better; all in 
all it will not be what you want, so grasps what you want while you still can 
before time rob you of your strength. Enjoy this freedom before death claim it. 
Enjoy life my friend. Only one you get, and only one you will ever had.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>