речь как я понимаю о том как в XSL проверить условие и в случае его истинности запустить темплейт с детализацией ?
вариантов масса
вот мой кусок вызова детализации
Код:
<xsl:template name="VOIP_DETAIL">
<!--
Суммарное время звонков по договору и субдоговорам для проверки на наличие активных логинов (код модуля 4).
-->
<xsl:variable name="summary_query" select="concat('
SELECT sum(session_time) AS duration
FROM contract JOIN
log_session_4_', $mysql_date_suffix, ' AS log ON (contract.id = log.cid AND log.session_time > 0)
WHERE contract.id = ', /data/bill/@cid, ' OR contract.scid = ', /data/bill/@cid
)" />
<xsl:variable name="summary" select="sql:select( $summary_query )" />
<xsl:variable name="duration" select="format-number($summary/row[1]/@duration, '0.00', 'zero')" />
<xsl:if test="$detail_voip_style != 'NONEED' and $duration > 0 ">
<fo:page-sequence master-reference="portrait2" initial-page-number="1" force-page-count="no-force">
<fo:static-content flow-name="PageHeader">
<fo:block xsl:use-attribute-sets="text6_right">
страница <fo:page-number /> из <fo:page-number-citation ref-id="endofvoip" />
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:value-of select="counter:set( 'voip_page_fill', '27.0' )" />
<xsl:call-template name="VOIP_LOGIN_DETAIL" />
<fo:block id="endofvoip" />
</fo:flow>
</fo:page-sequence>
</xsl:if>
</xsl:template>
вы можете просто сделать foreach по элементу /bill/pos и найти позицию с требуемым ID, сумма этой позиции будет условием