number(num) mod 3 should work. The following sample files output 1 2 0 as expected.
XML
(saved as input.xml )
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="mod_test.xsl"?> <items> <item> <num>1</num> </item> <item> <num>2</num> </item> <item> <num>3</num> </item> </items>
XSL
(saved as mod_text.xsl )
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="//item"> <xsl:value-of select="number(num) mod 3"/> </xsl:template> </xsl:stylesheet>
Note: just num mod 3 in select also works.
For reference, here is the relevant section in the documentation.
source share