Subject: RE: [xsl] manipulating a property value From: "Kenny Akridge" <kenny@xxxxxxxxxxxxxxxxx> Date: Wed, 14 Apr 2004 22:59:59 -0400 |
I don't know how to do this in 2.0, but this works for 1.1(I believe it is 1.1). <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <myoutput> <xsl:apply-templates/> </myoutput> </xsl:template> <xsl:template match="mytag"> <xsl:choose> <xsl:when test="contains(@duration, 'days')"> <!-- translate ' days' to empty string, which leaves with an int --> <xsl:value-of select="translate(@duration, ' days', '') * 24"/> <br/> </xsl:when> <xsl:otherwise> <!-- ditto on ' hours' --> <xsl:value-of select="translate(@duration, ' hours', '')"/> <br/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> -----Original Message----- From: David Buddrige [mailto:dbuddrige@xxxxxxxxx] Sent: Wednesday, April 14, 2004 10:48 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] manipulating a property value Hi all, I have the following input document: <?xml version="1.0" encoding="iso-8859-1"?> <info> <mytag duration="3 days" /> <mytag duration="4 days" /> <mytag duration="6 hours" /> <mytag duration="33 hours" /> <mytag duration="13 hours" /> <mytag duration="5 days" /> <mytag duration="3 hours" /> <mytag duration="23 hours" /> </info> What I want to do, is to convert the output document so that all duration values are in hours, and without specifying the units. So where a duration = "3 days", I want to convert it to hours by multiplying it by 8, and dropping the units identifier. Thus <mytag duration="5 days" /> becomes <mytag duration="40"/> And also <mytag duration="6 hours"/> becomes <mytag duration="6"/> The xslt template I have written to [attempt] to do this is as follows: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <myoutput> <xsl:apply-templates/> </myoutput> </xsl:template> <xsl:template match="mytag"> <xsl:choose> <xsl:when test="@duration='*days'"><!-- need to somehow strip off the 'days' and multiply remaining value by 8 --></xsl:when> <xsl:otherwise><!-- need to somehow strip off the 'hours' and return the remaining substring --></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> I note that XSLT 2.0 has regular expressions available that would make this alot easier - is there any way to do this with XSLT 1.x? thanks heaps David Buddrige __________________________________ Do you Yahoo!? Yahoo! Tax Center - File online by April 15th http://taxes.yahoo.com/filing.html
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] manipulating a property value, David Buddrige | Thread | RE: [xsl] manipulating a property v, David Buddrige |
[xsl] manipulating a property value, David Buddrige | Date | RE: [xsl] manipulating a property v, David Buddrige |
Month |