Пишу свою функцию в дин коде:
Код:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.ttk.billing.xlst;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.XMLUtils;
/**
 *
 * @author lda
 */
public class ContractInfoUL {
    private Setup setup = Setup.getSetup();
    private Connection con;
    public Element get(String cid){
        Element result = null;
        con = this.setup.getDBConnectionFromPool();
        Document doc = XMLUtils.newDocument();
        result = doc.createElement("data");
        doc.appendChild(result);
        result.setAttribute( "operator_name", "ООО Рога  и Копыта");
        result.setAttribute( "operator_site", "http://www.ru");
        return result;
    }
}
Далее в вызываем например в карточке регистрации договора:
Код:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xalan="http://xml.apache.org/xalan"
   xmlns:fo="http://www.w3.org/1999/XSL/Format"
   xmlns:svg="http://www.w3.org/2000/svg" 
        xmlns:contract_info="ru.ttk.billing.xlst.ContractInfoUL" version="1.0">
    
        <xalan:component prefix="contract_info" functions="get">
            <xalan:script lang="javaclass" src="xalan://ru.ttk.billing.xlst.ContractInfoUL"/>
        </xalan:component>
....
<xsl:template match="/card">
.....
    <xsl:variable name="cid" select="contract/@cid" />
    <xsl:variable name="info" select="contract_info:get( string($cid) )"/>
    <xsl:variable name="operator_name" select="$info/@operator_name" />
    <xsl:variable name="operator_site" select="$info/@operator_site" />
....
вот как то так...