When it comes to testing xquery constructs I find the easiest method is to use MArkLogics CQ interface. A simple answer to doing the same with XSLT is to use a single named template in an XSLT
Just create a basic XSLT named tester.xsl and add in one named template called 'testConstruct' and call it using the following command line
java -jar saxon.jar -it:testConstruct -xsl:tester.xsl -o:result.xml
The sample below tests creation of a string reconstruction from a test string
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template name="testConstruct">
<xsl:variable name="provisions" select="'Sch. 08 para. 028(02) para. 058(03)A Sch. 15'" />
<xsl:variable name="schtokens" select="tokenize($provisions, 'Sch. ')" />
<xsl:for-each select="$schtokens">
<xsl:variable name="paraTokens" select="tokenize(substring-after(., ' '), 'para.')" />
<xsl:variable name="schNo" select="if (contains(., ' ')) then substring-before(., ' ') else ." />
<xsl:value-of select="if (not(matches(., '^\s*$')) and contains(., 'para')) then
(concat('Sch. ', $schNo, ' para.', substring-before($paraTokens[2],'('),
string-join(for $p in $paraTokens return replace(normalize-space($p), '^[0-9]+', ''),'')) )
else if (not(matches(., '^\s*$'))) then
( concat('Sch. ', $schNo) )
else ()" />
<xsl:if test="not(position() = last())">
<xsl:value-of select="' '"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>