[2.0] Range Expressions—The to Operator
To create sequences of integers, XPath 2.0 introduces
the to
operator. For example, here
is a short stylesheet that creates a sequence of five integers and a
reversed sequence of five integers, then prints the values of the
sequences:
<?xml version="1.0"?> <!-- to.xsl --> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:output method="text"/> <xsl:variable name="some-numbers" as="xs:integer*" select="1 to 5"/> <xsl:variable name="reversed-numbers" as="xs:integer*" select="reverse(1 to 5)"/> <xsl:template match="/"> <xsl:value-of select="$some-numbers" separator=", "/> <xsl:text> </xsl:text> <xsl:value-of select="$reversed-numbers" separator=", "/> </xsl:template> </xsl:stylesheet>
The to
operator creates only
sequences of integers. If the second number is lower than the first
(10 to 1
, for example), the result
is an empty sequence. If the second number is the same as the first
(such as 10 to 10
), the result is a
sequence that contains that single integer.
Be aware that the to
operator
can be used as part of a larger sequence. For example, we could create
the sequence (1 to 17, 65 to 100)
.
Finally, if you need to create a sequence of numbers in descending
order, you can use the [2.0] reverse()
function
(see Appendix C) to reverse the sequence of
integers created with the to
operator.
The results of this stylesheet look like this:
1, 2, 3, 4, 5 5, 4, 3, 2, 1
Get XSLT, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.