Number generation and formatting in XSL
Number generation and formatting
The Stylesheet 1 demonstrates a default behaviour of the xsl:number element. Numbering of
the individual chapter elements depends on the position of a chapter element. Each levels
of the chapter is numbered independently. Setting an attribute level into multiple in
Stylesheet 2 do enables the more natural numbering.
A D V E R T I S E M E N T
XML source
<?xml version="1.0"?>
<xslTutorial >
<chapter>First Chapter</chapter>
<chapter>Second Chapter
<chapter>Subchapter 1</chapter>
<chapter>Subchapter 2</chapter>
</chapter>
<chapter>Third Chapter
<chapter>Subchapter A</chapter>
<chapter>Subchapter B
<chapter>sub a</chapter>
<chapter>sub b</chapter>
</chapter>
<chapter>Subchapter C</chapter>
</chapter>
</xslTutorial>
HTML output 1
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE BORDER="1">
TR>
<TH>Number</TH> ;
<TH>text</TH></TR>
<TR>
<TD>1</TD>
<TD>First Chapter</TD></TR>
<TR>
<TD>2</TD>
<TD>Second Chapter </TD></TR>
<TR>
<TD>1</TD>
<TD>Subchapter 1</TD></TR>
<TR>
<TD>2</TD>
<TD>Subchapter 2</TD></TR>
<TR>
<TD>3</TD>
<TD>Third Chapter </TD></TR>
<TR>
<TD>1</TD>
<TD>Subchapter A</TD></TR>
<TR>
<TD>2</TD>
<TD>Subchapter B </TD></TR>
<TR>
<TD>1</TD>
<TD>sub a</TD></TR>
<TR>
<TD>2</TD>
<TD>sub b</TD></TR>
<TR>
<TD>3</TD>
<TD>Subchapter C</TD></TR>
</TABLE>
</BODY>
</HTML>
HTML output 2
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE BORDER="1">
<TR>
<TH>Number</TH>
<TH>text</TH></TR>
<TR>
<TD>1</TD>
<TD>First Chapter</TD></TR>
<TR>
<TD>2</TD>
<TD>Second Chapter </TD></TR>
<TR>
<TD>2.1</TD>
<TD>Subchapter 1</TD></TR>
<TR>
<TD>2.2</TD>
<TD>Subchapter 2</TD></TR>
<TR>
<TD>3</TD>
<TD>Third Chapter </TD></TR>
<TR>
<TD>3.1</TD>
<TD>Subchapter A</TD></TR>
<TR>
<TD>3.2</TD>
<TD>Subchapter B </TD></TR>
<TR>
<TD>3.2.1</TD>
<TD>sub a</TD></TR>
<TR>
<TD>3.2.2</TD>
<TD>sub b</TD></TR>
<TR>
<TD>3.3</TD>
<TD>Subchapter C</TD></TR>
</TABLE>
</BODY>
</HTML>
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE BORDER="1">
<TR><TH>Number</TH><TH>text</TH></TR>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:number/ >
</TD><TD>
<xsl:value-of select="./text()"/>
</TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE BORDER="1">
<TR><TH>Number</TH><TH>text</TH></TR>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:number level="multiple"/>
</TD><TD>
<xsl:value-of select="./text()"/>
</TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
The Format Attribute
An xsl:numbers do inserts a formated numbers into the output. Format is given with the
format attribute. An attribute starts with a format identificator followed by separator
characters.
XML source
<?xml version="1.0"?>
<xslTutorial >
<n>one</n>
<n>two</n>
<n>three</n>
<n>four</n>
</xslTutorial>
HTML output 1
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE>
<TR>
<TD>1. one</TD></TR>
<TR>
<TD>2. two</TD></TR>
<TR>
<TD>3. three</TD></TR>
<TR>
<TD>4. four</TD></TR>
</TABLE>
</BODY>
</HTML>
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//n">
<TR><TD>
<xsl:number value="position()" format="1. "/>
<xsl:value-of select="."/>
</TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
Formatting The Multilevel Numbers
The Stylesheet 1 and the Stylesheet 2 are the examples of formatting a multilevel
numbers.
XML source
<?xml version="1.0"?>
<xslTutorial >
<chapter>First Chapter</chapter>
<chapter>Second Chapter
<chapter>Subchapter 1</chapter>
<chapter>Subchapter 2</chapter>
</chapter>
<chapter>Third Chapter
<chapter>Subchapter A</chapter>
<chapter>Subchapter B
<chapter>sub a</chapter>
<chapter>sub b</chapter>
</chapter>
<chapter>Subchapter C</chapter>
</chapter>
</xslTutorial>
HTML output 1
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE BORDER="1">
<TR>
<TH>Number</TH>
<TH>text</TH></TR>
<TR>
<TD>1 </TD>
<TD>First Chapter</TD></TR>
<TR>
<TD>2 </TD>
<TD>Second Chapter </TD></TR>
<TR>
<TD>2.A </TD>
<TD>Subchapter 1</TD></TR>
<TR>
<TD>2.B </TD>
<TD>Subchapter 2</TD></TR>
<TR>
<TD>3 </TD>
<TD>Third Chapter </TD></TR>
<TR>
<TD>3.A </TD>
<TD>Subchapter A</TD></TR>
<TR>
<TD>3.B </TD>
<TD>Subchapter B </TD></TR>
<TR>
<TD>3.B.a </TD>
<TD>sub a</TD></TR>
<TR>
<TD>3.B.b </TD>
<TD>sub b</TD></TR>
<TR>
<TD>3.C </TD>
<TD>Subchapter C</TD></TR>
</TABLE>
</BODY>
</HTML>
HTML output 2
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE BORDER="1">
<TR>
<TH>Number</TH>
<TH>text</TH></TR>
<TR>
<TD>I:</TD>
<TD>First Chapter</TD></TR>
<TR>
<TD>II:</TD>
<TD>Second Chapter </TD></TR>
<TR>
<TD>II-1:</TD>
<TD>Subchapter 1</TD></TR>
<TR>
<TD>II-2:</TD>
<TD>Subchapter 2</TD></TR>
<TR>
<TD>III:</TD>
<TD>Third Chapter </TD></TR>
<TR>
<TD>III-1:</TD>
<TD>Subchapter A</TD></TR>
<TR>
<TD>III-2:</TD>
<TD>Subchapter B
<TR>
<TD>III-2-a:</TD>
<TD>sub a</TD></TR>
<TR>
<TD>III-2-b:</TD>
<TD>sub b</TD></TR>
<TR>
<TD>III-3:</TD>
<TD>Subchapter C</TD></TR>
</TABLE>
</BODY>
</HTML>
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE BORDER="1">
<TR><TH>Number</TH><TH>text</TH></TR>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:number level="multiple" format="1.A.a "/>
</TD><TD>
<xsl:value-of select="./text()"/>
</TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE BORDER="1">
<TR><TH>Number</TH><TH>text</TH></TR>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:number level="multiple" format="I-1-a:"/>
</TD><TD>
<xsl:value-of select="./text()"/>
</TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
Be the first one to comment on this page.
Share And Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
Keywords Number generation and formatting in XSL, xsl select, excel formatting, xsl stylesheet,
xsl html, xsl node, formatting html, reference formatting, java generation, formatting tag,
svg xsl, xsl transformation, text formatting, c# formatting, pdf generation, xsl tag,
word formatting, display xsl, value xsl, decimal number, number sum, convert xsl,formatting data