Number-funktioner

Nummer "konstruktor"

number(object)

Det är knappast någon överaskning att man kan konvertera texten 123 till talet 123, Men det kan vara användbart att försäkra sig om att ett tal verkligen uppfattas som ett tal och inte text.
Texten 00123 konverteras till talet 123 med denna funktion. Om texten inte kan konverteras till ett tal returneras NaN, Not-a-Number.

Man kan även konvertera booleans till tal, som i C/C++, 0 blir false och 1 blir true.

	<xsl:template match="person">
		<xsl:value-of select="number(age)" /> 
		<xsl:value-of select="age" /><br/>
	</xsl:template>
	
	

Sum

sum(node-set)

Returnerar summan från ett node-set
	<xsl:template match="persons">
		<xsl:value-of select="sum(person/age)" />
	</xsl:template>
	

Övrigt

De fyra räknesätten samt modulo
  • +
  • -
  • *
  • div
  • mod

  • För att inte * , tecknet för multiplikation, ska misstolkas måste det stå med (minst ett) blanksteg på vardera sida
    I nedanstående exempel, finns också de övriga number funktionerna men jag har dessutom lånat in format-number från XSLT
  • round
  • floor
  • ceiling

  • Ett tämligen knasigt exempel, men bara för att visa hur de används.
    	<xsl:template match="persons">
    		<table><thead><th> Beräknat värde, utan avrundning  </th><th> 3 decimaler (om finns) </th> 
    			<th> 3 decimaler (forcerande)</th><th> round   </th><th> floor   </th><th> ceiling </th></thead>
    		<xsl:for-each select="person" >
    		<tr>
    			<td><xsl:value-of select=".//zipcode div (position() + 1) mod age" /></td>
    			<td><xsl:value-of select="format-number(.//zipcode div (position() + 1) mod age,'#.###')" /></td>
    			<td><xsl:value-of select="format-number(.//zipcode div (position() + 1) mod age,'#.000')" /></td>
    			<td><xsl:value-of select="round(.//zipcode div (position() + 1) mod age)" /></td>
    			<td><xsl:value-of select="floor(.//zipcode div (position() + 1) mod age)" /></td>
    			<td><xsl:value-of select="ceiling(.//zipcode div (position() + 1) mod age)" /></td>
    		</tr>
    		</xsl:for-each>
    		</table>
    	</xsl:template>
    	

    Parameter eller variabel - ingår i XSLT

    <xsl:variable> och <xsl:param> kan vara användbara. Variable kan inte ändras när den en gång satts, det kan däremot param. Deklaration av båda varianter sker på något av nedanstående sätt.
    	
    	<xsl:param name="myvar" select="12" />
    	<xsl:param name="othervar">13</xsl:param>
    	
    Om den deklareras direkt under <xsl:stylesheet>, så blir den global för hela filen.

    När variabeln/parametern skall användas skrivs ett $-tecken framför. Änuu ett meningslöst exempel

    	<xsl:template match="persons">
    		<xsl:for-each select="person" >
    			<xsl:value-of select=".//zipcode div $othervar * position() mod age - $myvar" /><br/>
    		</xsl:for-each>
    	</xsl:template>