Listing 1• Transform the XML data into an XSL-FO file
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:fo="http://www.w3.org/1999/XSL/Format">
5 <xsl:template match="/">
6 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
7 <fo:layout-master-set>
8 <fo:simple-page-master master-name="simple"
9 page-height="29.7cm"
10 page-width="21cm"
11 margin-top="1cm"
12 margin-bottom="2cm"
13 margin-left="2.5cm"
14 margin-right="2.5cm">
15 <fo:region-body margin-top="3cm"/>
16 <fo:region-before extent="1.5cm"/>
17 <fo:region-after extent="1.5cm"/>
18 <fo:region-end extent="1.5cm"/>
19 </fo:simple-page-master>
20 </fo:layout-master-set>
21 <fo:page-sequence master-reference="simple">
22 <fo:title>Server Statistcs</fo:title>
23 <fo:static-content flow-name="xsl-region-before">
24 <fo:block text-align="center">
25 Server Statistics at <xsl:value-of select="/statistics/@date"/>
26 </fo:block>
27 </fo:static-content>
28 <fo:static-content flow-name="xsl-region-after">
29 <fo:block text-align="center">Page
<fo:page-number/></fo:block>
30 </fo:static-content>
31 <fo:flow flow-name="xsl-region-body">
32 <fo:block>
33 <fo:table table-layout="fixed">
34 <fo:table-column column-width="150pt"/>
35 <fo:table-column column-width="150pt"/>
36 <fo:table-body>
37 <fo:table-row>
38 <fo:table-cell border-
style="solid" display-
align="center"
39 border-color="black"
border-width="1pt"
40 padding-before="3pt"
padding-after="3pt"
41 padding-start="3pt"
padding-end="3pt">
42 <fo:block>Type of
Object</fo:block>
43 </fo:table-cell>
44 <fo:table-cell border-style="solid"
display-align="center"
45 border-color="black" border-
width="1pt"
46 padding-before="3pt"
padding-after="3pt"
47 padding-start="3pt"
padding-end="3pt">
48 <fo:block>Total
Number</fo:block>
49 </fo:table-cell>
50 </fo:table-row>
51 <xsl:for-each select="/statistics/*">
52 <fo:table-row>
53 <fo:table-cell border-style="solid"
display-align="center"
54 border-color="black" border-
width="1pt"
55 padding-before="3pt"
padding-after="3pt"
56 padding-start="3pt"
padding-end="3pt">
57 <fo:block>
58 <xsl:value-of
select="name()"/>
59 </fo:block>
60 </fo:table-cell>
61 <fo:table-cell border-style="solid"
display-align="center"
62 border-color="black" border-
width="1pt"
63 padding-before="3pt" padding-
after="3pt"
64 padding-start="3pt" padding-
end="3pt">
65 <fo:block>
66 <xsl:value-of select="."/>
67 </fo:block>
68 </fo:table-cell>
69 </fo:table-row>
70 </xsl:for-each>
71 </fo:table-body>
72 </fo:table>
73 </fo:block>
74 </fo:flow>
75 </fo:page-sequence>
76 </fo:root>
77 </xsl:template>
78 </xsl:stylesheet>
<strong>Listing 2• XSLT commands to translate XML to HTML</strong>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4 <xsl:template match="/">
5 <HTML>
6 <HEAD>
7 <TITLE>Server Statistics - HTML
format</TITLE>
8 </HEAD>
9 <BODY>
10 <H1>
11 Server Statistics at <xsl:value-of select="
/statistics/@date"/>
12 </H1>
13 <Table border="1">
14 <TR>
15 <TH>Type of Object</TH>
16 <TH>Total Number</TH>
17 </TR>
18 <xsl:for-each select="/statistics/*">
19 <TR>
20 <TD><xsl:value-of select="name()"/></TD>
21 <TD><xsl:value-of select="."/></TD>
22 </TR>
23 </xsl:for-each>
24 </Table>
25 </BODY>
26 </HTML>
27 </xsl:template>
28 </xsl:stylesheet>