Of course the hardest part there is
<xsl:for-each select="xs:integer(substring-before(range,'-')) to
xs:integer(substring-after(range,'-'))">
which is only needed due to the unstructured input.
If the input were
<fizzbuzz>
<start>1</start>
<stop>100</stop>
rather than
<fizzbuzz>
<range>1-100</range>
You could simplify that greatly.
<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="fizzbuzz">
<xsl:value-of separator="" select="
for $i in start to stop
return (' ',$i, test/mod[($i mod @value) = @test])
[not(position() lt last() and . instance of xs:integer)]"/>
</xsl:template>
</xsl:stylesheet>
--~------------------------------------------------------------------
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>
--~--