xsl-list
[Top] [All Lists]

Re: [xsl] 99 bottles of beer

2007-02-05 05:48:40
Andrew Welch wrote:
After seeing M. David's post about the bottles of beer problem, I
thought about how to solve this problem using XSLT 2.0.  Here's what
came to mind first:

Hi Andrew,

let me try what came to mind second ;)
Here's my go on it in a single XPath statement. A bit less well-suited for educational purposes. It shows nested for-loops in XPath, casting, use of sequences+separator and some ways how not to code (it is exactly an example of good programming practice ;)

<xsl:stylesheet version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:xs="http://www.w3.org/2001/XMLSchema";>
<xsl:output method="text" />
   <xsl:template match="/" name="main">
       <xsl:value-of select="
           for $i in reverse(1 to 99)
           return for $j in
               (' on the wall.',
               '.&#10;Take one down, pass it around',
               ' on the wall.&#10;' )
return concat
                   ($i - xs:integer(ends-with($j, '&#10;')),
                   ' bottle', if ($i = 1) then '' else 's',
                   ' of beer', $j)
       " separator="&#10;"/>
</xsl:template>
</xsl:stylesheet>


Cheers,
-- Abel Braaksma
  http://www.nuntia.nl

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>