In the xsl template generate.table.row.separator you
will find the following xsl code:
<xsl:if test="$rowsep=1 and (position()!=last() or
$parent_position < $grandparent_children)">
<xsl:call-template name="table.row.separator"/>
</xsl:if>
The test 'position()!=last() does not actually work
since whitespace nodes can be counted. I believe what
you were trying to figure out whether or not there were
following-sibling nodes that are 'rows'. Doing a test
like the following will fix the problem:
(count(following-sibling::row)!=0)
Also, you will need to add a test in the template for
tgroup to add the \hline depending on the frame like such:
<xsl:if test="../@frame='all' or ../@frame='top' or
../@frame='topbot' or not(@frame)">
\hline
</xsl:if>
Hope this wasn't too unclear!