Проверить у себя не могу, пока предположения.
XSL натравливается на XML, в котором информация о счете.
В xml счета есть вот такая информация (это вкратце, всякие атрибуты выкинул, чтобы не загромождать)
Код:
<?xml version="1.0" encoding="windows-1251"?>
<data secret="984BBF2483277311604E298D8DB8E12A" status="ok">
<inline_params/>
<bill account>
<sub_bill cid="3"/>
<sub_bill cid="4"/>
<sub_bill cid="5"/>
<contract_data cid="1">
</bill account>
</data>
т.е добраться до идентификатора договора можно. Вопрос Вам нужен основной договор или субдоговоры ?
Если основной то, вот так можно попробовать
Код:
<!-- Так объявляем для себя переменную, куда будет сохраняться значения cid -->
<xsl:variable name="mycid" select="/data/bill/contract_data/@cid" />
<!-- Так передаем это значение в SQL запрос -->
<xsl:variable name="query">select id, title from contract where id=<xsl:value-of select="$mycid"/></xsl:variable>
<xsl:variable name="contracts" select="sql:select( $query )"/>
<!-- Перебираем строки запроса -->
<xsl:for-each select="$contracts/row">
<fo:block><xsl:value-of select="@id"/></fo:block>
<fo:block><xsl:value-of select="@title"/></fo:block>
</xsl:for-each>
Если вам нужны данные из log_session_1_.... то запрос модифицируем
Код:
.........
<!-- Так передаем это значение в SQL запрос -->
<xsl:variable name="query">select session_start, to_number_164, round_session_time from log_session_1_201204 where id=<xsl:value-of select="$mycid"/></xsl:variable>
.........
Нужно будет ещё динамически формировать имя таблички в зависимости от года и месяца.