Re: [xsl] Q - Parsing & Manipulating Strings from XSL

Subject: Re: [xsl] Q - Parsing & Manipulating Strings from XSL
From: Ahsan Ali <doubleletter@xxxxxxxxx>
Date: Sun, 29 May 2005 18:35:12 +0400
Dear Michael,

Thanks for your quick & helpful reply. To answer your question:

If the time is 12:45 it is returned as 1245.
If it is 01:50 it is returned as 150
If it is 00:45 it is returned 45
if it is 00:04 it is returned as 4 !

So that's why I want to pad the beginning of string with 0s until its
length is 4.

Its a strange way to do it, but as I said, I have to make the best of it.

Also, I'm sorry to say I'm not very familiar with XQuery... what does
$in have to be replaced with ? I'm getting an error.. FYI, the data is
given as <JrnyTm>150</JrnyTm>

Best Regards,

Ahsan

On 5/29/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> >  A soap response contains a complex hierarchy of data, in which, if
> > the departure time is 00:45 hours then it is represented as 45 ! To
> > make matters worse, the schema defines it as a string. I have no
> > influence over the schema since I'm querying a webservice. So I need
> > to pad that 45 with 0s and of course add that colon. Is there a way I
> > can do that in XSL ?
>
> Of course, but first one needs to know how other times are represented. Is
> 01:30 represented as "01:30", as "0130", as "90", or in some other way? And
> is 00:05 represented as "5" or as "05"?
> >
> >  Furthermore, in the same repsonse, I have a string of the format
> > YYYYNYY [chars may be either Y or N], also respresented as a free
> > format string. This represents the days of the week starting from
> > Sunday...  Now I need to take each char, and replace it with a <TD
> > color="green">S</TD> if it is Y, and <TD>S</TD> if it is N.
> >
> >  Anyway I can do that in XSL ?
> >
>
> Sure. In XSLT 2.0 do
>
> <xsl:for-each select="1 to 7">
>   <TD>
>     <xsl:if test="substring($in, ., 1) = 'Y'">
>       <xsl:attribute name="color">green</xsl:attribute>
>     </xsl:if>
>     <xsl:text>S</xsl:text>
>   </TD>
> </xsl:if>
>
> In 1.0 the simplest solution is probably simply to unfold the loop, i.e.
> repeat the content of the above for-each loop seven times changing the
> second argument of substring() each time.
>
> Michael Kay
> http://www.saxonica.com/

Current Thread