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

Subject: Re: [xsl] Q - Parsing & Manipulating Strings from XSL
From: Ahsan Ali <doubleletter@xxxxxxxxx>
Date: Tue, 31 May 2005 11:12:03 +0400
What do you suggest for this then ?? Is there a way around in 1.0 ? I
don't mind if its complicated.. I must do it somehow...

Thanks,

Ahsan

On 5/31/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> These functions are present in XQuery 1.0 and in XSLT 2.0, but not in XSLT
> 1.0.
>
> Michael Kay
> http://www.saxonica.com/
>
>
> > -----Original Message-----
> > From: Ahsan Ali [mailto:doubleletter@xxxxxxxxx]
> > Sent: 31 May 2005 07:29
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Re: [xsl] Q - Parsing & Manipulating Strings from XSL
> >
> > Allright. I converted the xquery code to the below xsl code:
> >
> >       <xsl:template match="JrnyTm">
> >               <xsl:variable name="onemin" select="
> > xdt:dayTimeDuration('PT1M')"/>
> >               <xsl:variable name="time" select="xs:integer(.)
> > * $onemin"/>
> >               <xsl:variable name="hours"
> > select="xs:hours-from-duration($time)"/>
> >               <xsl:variable name="mins"
> > select="xs:minutes-from-duration($time)"/>
> >               <xsl:value-of select="concat($hours, ' hrs',
> > $mins, ' mins')"/>
> >       </xsl:template>
> >
> > Now the problem is that the xdt namespace is not recognised !
> >
> > The namespace definition is:
> > xmlns:xs="http://www.w3.org/2001/XMLSchema";
> > xmlns:xdt="http://www.w3.org/2005/04/xpath-datatype";
> >
> > I get an error:"Namespace 'http://www.w3.org/2005/04/xpath-datatype'
> > does not contain any functions."
> >
> > I'm using the MSXML XSL processor...
> >
> >
> > Regards, Ahsan
> >
> > On 5/30/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> > >
> > > > Is there way to do this in pure XSLT instead of Xquery ??
> > >
> > > Of course. Just replace
> > >
> > >    let $x := EXPR
> > >
> > > and
> > >
> > >    declare variable $x := EXPR
> > >
> > > by
> > >
> > >    <xsl:variable name="x" select="EXPR"/>
> > >
> > > and replace
> > >
> > >    "return X" by
> > >
> > >    <xsl:value-of select="X"/>
> > >
> > > Michael Kay
> > > http://www.saxonica.com/
> > >
> > > >
> > > > > You've got a choice between using numeric arithmetic or
> > > > duration arithmetic.
> > > > > It's probably cleanest to use duration arithmetic though
> > > > it's a bit verbose.
> > > > >
> > > > > declare variable $one-minute := xdt:dayTimeDuration('PT1M')
> > > > >
> > > > > then
> > > > >
> > > > > let $time := xs:integer(JrnyTm) * $one-minute,
> > > > >     $hours := hours-from-duration($time),
> > > > >     $minutes := minutes-from-duration($time)
> > > > > return
> > > > >     concat($hours, ' hrs ', $minutes, ' minutes ')
> > > > >
> > > >
> > > > Regards, Ahsan

Current Thread