adkt
3/19/2018 - 12:11 AM

Random Number Generator

A random number generator for xslt2.0+

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:err="http://www.w3.org/2005/xqt-errors" exclude-result-prefixes="array fn map math xhtml xs err" version="3.0">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <xsl:template match="/">
		<!-- declare fragment tree -->
		<xsl:variable name="firstNames"> 
			<firstname>Andrew</firstname> 
			<firstname>Alex</firstname> 
			<firstname>Aaron</firstname> 
		</xsl:variable> 
		
		<!-- generate a random number to randomly pick an email address -->
		<xsl:variable name="IdTotal" select="string(sum(string-to-codepoints(fn:generate-id())))"/>
		<xsl:variable name="random" select="xs:decimal(substring($IdTotal, string-length($IdTotal)-1, 2)) div 100"/>
		<xsl:variable name="randomNumber3" select="floor(($random *3) mod 3) + 1"/>
		<xsl:value-of select="$firstNames/firstname[$randomNumber3]"/>
	</xsl:template>
	
</xsl:stylesheet>