Numbering Textual Output
Problem
You want to create sequentially numbered output.
Solution
Since output can be numbered in many ways, this example presents a series of increasingly complex examples that address the most common (and a few uncommon) numbering needs.
Number siblings sequentially
This category is the simplest form of numbering. For example, you can produce a numbered list of people using the stylesheet in Example 5-35 and Example 5-36.
Example 5-35. Stylesheet
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="person">
<xsl:number count="*" format="1. "/>
<xsl:value-of select="@name"/>
</xsl:template>
</xsl:stylesheet>Example 5-36. Output
1. Al Zehtooney 2. Brad York 3. Charles Xavier 4. David Willimas 5. Edward Ulster 6. Frank Townsend 7. Greg Sutter 8. Harry Rogers 9. John Quincy 10. Kent Peterson ...
You can use the justify template discussed in Recipe 5.3 if you want right-justified numbers.
Start from a number other than one
xsl:number
does not provide a standard facility for
starting from or incrementing by a number other than one, but you can
handle this task with a little math. Example 5-37 and
Example 5-38 start from ten and increment by five,
just to be different.
Example 5-37. Stylesheet using nonsequential numbering
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:strip-space elements="*"/> <xsl:template match="person"> ...
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