[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
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access