comparison tokenise.xsl @ 53:8000dbed09df

better, now failing on [1]\!'AES,DIVIDEND'
author Henry S. Thompson <ht@markup.co.uk>
date Tue, 16 May 2017 19:09:03 +0100
parents 9bb415e0adc9
children 191c95187e87
comparison
equal deleted inserted replaced
52:9bb415e0adc9 53:8000dbed09df
47 <xsl:param name="i" required="yes" as="xs:integer"/> 47 <xsl:param name="i" required="yes" as="xs:integer"/>
48 <xsl:param name="row" required="yes" as="xs:integer"/> 48 <xsl:param name="row" required="yes" as="xs:integer"/>
49 <xsl:param name="col" required="yes" as="xs:integer"/> 49 <xsl:param name="col" required="yes" as="xs:integer"/>
50 <xsl:param name="soFar" as="element(*)*"/> 50 <xsl:param name="soFar" as="element(*)*"/>
51 <xsl:variable name="last" select="$soFar[count($soFar)]"></xsl:variable> 51 <xsl:variable name="last" select="$soFar[count($soFar)]"></xsl:variable>
52 <xsl:if test="$row=5 and $col=1"><xsl:message>tok1: <xsl:value-of select="$n"/>|<xsl:value-of select="$i"/>|<xsl:value-of select="if ($i=1) then string-join($tokens,'\') else $tokens[$i]"/>|<xsl:value-of select="if ($last instance of element()) then name($last) else 'bogus'"/>|<xsl:value-of select="string($last)"/></xsl:message></xsl:if> 52 <xsl:if test="false()"><xsl:message>tok1@<xsl:value-of select="$row"/>,<xsl:value-of select="$col"/>: <xsl:value-of select="$n"/>|<xsl:value-of select="$i"/>|<xsl:value-of select="if ($i=1) then string-join($tokens,'\') else string-join(($tokens[$i],':',$tokens[$i]/@nr,',',$tokens[$i+1],':',$tokens[$i+1]/@nr,',',$tokens[$i+2],':',$tokens[$i+2]/@nr),'')"/>|<xsl:value-of select="if ($last instance of element()) then name($last) else 'bogus'"/>|<xsl:value-of select="string($last)"/></xsl:message></xsl:if>
53 <!-- Tail-recursion incrementing index $i into $tokens --> 53 <!-- Tail-recursion incrementing index $i into $tokens -->
54 <xsl:sequence select=" 54 <xsl:sequence select="
55 if ($i gt $n) 55 if ($i gt $n)
56 then $soFar 56 then $soFar
57 else 57 else
117 <xsl:function name="e:oddx"> 117 <xsl:function name="e:oddx">
118 <xsl:param name="tokens" as="element(xf:group)*"/> 118 <xsl:param name="tokens" as="element(xf:group)*"/>
119 <xsl:param name="i" as="xs:integer"/> 119 <xsl:param name="i" as="xs:integer"/>
120 <xsl:param name="soFar" as="xs:string"/><!-- Will always be a lonely ' --> 120 <xsl:param name="soFar" as="xs:string"/><!-- Will always be a lonely ' -->
121 <!-- Amalgamate bits of type 9 and 10 as <v> for wrapping in <e> --> 121 <!-- Amalgamate bits of type 9 and 10 as <v> for wrapping in <e> -->
122 <xsl:variable name="content" select="e:amalgamate($tokens,$i,$soFar,10,$soFar)"/> 122 <xsl:variable name="content" select="e:amalgamate($tokens,$i,$soFar,(10,9),$soFar)"/>
123 <xsl:variable name="x"><v><xsl:value-of select=" 123 <xsl:variable name="x"><v><xsl:value-of select="
124 if ($tokens[$content?1]=$soFar) 124 if ($tokens[$content?1]=$soFar)
125 then $content?2 125 then concat($content?2,$soFar)
126 else e:shouldnt('oddx',$tokens[$content?1])"/></v></xsl:variable> 126 else e:shouldnt('oddx',$tokens[$content?1])"/></v></xsl:variable>
127 <xsl:sequence select="[$content?1+1,$x/*]"/> 127 <xsl:sequence select="[$content?1+1,$x/*]"/>
128 </xsl:function> 128 </xsl:function>
129 129
130 <xsl:function name="e:amalgamate" as="array(*)"> 130 <xsl:function name="e:amalgamate" as="array(*)">