adkt
3/17/2018 - 9:30 AM

Node Set with a Random value

Uses a Result Tree Fragment (RTF) via a nodeset to generate a random value. Also uses random from the math exslt library.

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
	version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:exslt="http://exslt.org/common"
	xmlns:math="http://exslt.org/math"
    extension-element-prefixes="math"
>

<xsl:template match="/">
    <!-- result tree fragment -->
	<xsl:variable name="nodeSetExample">
		<itemList>
			<item id="1">one</item>
			<item id="2">two</item>
			<item id="3">three</item>
			<item id="4">four</item>
		</itemList>
	</xsl:variable>
	
	<!-- Generate random number -->
	<xsl:variable name="randomNumber" select="(floor(math:random()*4) mod 4) + 1" />
	
	<xsl:value-of select="exslt:node-set($nodeSetExample)/itemList/item[$randomNumber]/text()"/>
	
	</xsl:template>
</xsl:stylesheet>