Maybe it will be better to write a blog, so here are the basics:
You add an Xsl parameter, name it "currentpage", data origin "querystring pass through", and enter "getPage" as argument for the data origin.
Inside your xsl, you query that parameter:
< xsl:parameter name="currentpage" select="1" />
Now let us imagine a XML data source containing 230 elements in /root/element (serialized datatable with 230 rows)
You will have a pagesize of 15 elements. 230\15 = 15,33 ->16 pages
< xsl:variable name="elementsPerPage" select="15" />
<xsl:variable name="totalNumberOfPages" select="ceiling (count(/root/element)-$elementsPerPage)" />
output your data
< xsl:for-each select="/root/element[position() > (($currentpage-1)*$elementsPerPage) and position() <= ($currentpage*$elementsPerPage) ] />
.....
ouput paging:
< a href="?getPage={$currentpage-1}" >prev < /a> < xsl:value-of select="$current" /> < a href="?getPage={$currentpage+1}" >next < /a>