Из примера немного сложно выяснить, как давать советы по каждой ошибке, потому что я думаю, что она связана с xpath и на нее нет ссылок.
Вот альтернативное решение, вместо этого используйте apply-templates. (а также я думаю, что в этом случае лучше использовать apply-templates, чем for-each):
<xsl:template match="table">
<fo:table>
<fo:table-body>
<xsl:apply-templates select="tgroup/*/row"/>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="thead/row">
<fo:table-row font-weight="bold">
<xsl:apply-templates select="entry" />
</fo:table-row>
</xsl:template>
<xsl:template match="tbody/row">
<fo:table-row>
<xsl:apply-templates select="entry" />
</fo:table-row>
</xsl:template>
<xsl:template match="entry">
<fo:table-cell>
<fo:block><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:template>
Надеюсь, это поможет.
P.S. Если вам нужна помощь с циклом for-each, можете ли вы опубликовать пример кода, который вы пытались и он не работал.