Subject: RE: [xsl] calculating math:matrix longest column strings From: Jarno.Elovirta@xxxxxxxxx Date: Thu, 16 Oct 2003 10:01:35 +0300 |
Hi, > suppose I have a math:matrix of 4 columns by 4 rows (but the matrix > could be of any size). I am currently "looking at" a math:mn > in the 2nd > row, 3rd column during processing of an XSLT transform. I need to be > able to find and sum the longest cell in each of the preceding two > columns. By the "longest" cell, I mean the cell which has > the longest > string in the column. In other words, I need to add together the > lengths of the longest strings in all the preceding columns of the > current element being processed. The structure of the matrix > conforms > to the w3c schema for mathML, so use any example you like such as [snip] > So, for purposes of this example, the answer would be 4. How about something like <xsl:template match="/"> <xsl:for-each select="math/matrix/matrixrow[2]/*[3]"> <xsl:call-template name="summer"/> </xsl:for-each> </xsl:template> <xsl:template name="summer"> <xsl:param name="i" select="count(preceding-sibling::*)"/> <xsl:param name="sum" select="0"/> <xsl:choose> <xsl:when test="$i > 0"> <xsl:variable name="longest"> <xsl:for-each select="../../matrixrow/*[$i]"> <xsl:sort select="string-length(.)" data-type="number" order="descending"/> <xsl:if test="position() = 1"> <xsl:value-of select="string-length(.)"/> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:call-template name="summer"> <xsl:with-param name="i" select="$i - 1"/> <xsl:with-param name="sum" select="$sum + $longest"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$sum"/> </xsl:otherwise> </xsl:choose> </xsl:template> You can increase the performance by using some other technique to find the longest string, e.g. recursive template. Dimitre's FXSL can also help you here. Cheers, Jarno - Nick Sentience: March 2003 Mix <http://hardnrg.com/music.php> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] calculating math:matrix longe, Matthew L. Avizinis | Thread | [xsl] Entity reference problem, Ryan Graham |
[xsl] website transformation, Saverio Perugini | Date | RE: [xsl] Make Hirachy from flat fi, Jarno . Elovirta |
Month |