package org.docbag.template.transformer;
import org.docbag.Context;
import org.docbag.template.DocumentTemplate;
/**
* Transforms {@link DocumentTemplate} into another {@link DocumentTemplate}.
*
* <p>The most obvious implementation would be an XSLT transformation, adding dynamic content,
* evaluating expressions, etc.</p>
*
* @author Jakub Torbicki
*/
public interface TemplateTransformer<R extends DocumentTemplate> {
/**
* Transform {@link DocumentTemplate} into another {@link DocumentTemplate}.
*/
public R transform(R template);
/**
* Transform {@link DocumentTemplate} into another {@link DocumentTemplate}.
* The concrete implementation may use information stored in {@link Context} if necessary.
*/
public R transform(R template, Context context);
}