2020-02-13 16:49:45 +01:00
|
|
|
package eu.dnetlib.dhp.utils.saxon;
|
|
|
|
|
2020-04-18 12:42:58 +02:00
|
|
|
import java.io.StringReader;
|
2020-02-13 16:49:45 +01:00
|
|
|
import javax.xml.transform.Transformer;
|
|
|
|
import javax.xml.transform.TransformerException;
|
|
|
|
import javax.xml.transform.stream.StreamSource;
|
2020-04-18 12:42:58 +02:00
|
|
|
import net.sf.saxon.Configuration;
|
|
|
|
import net.sf.saxon.TransformerFactoryImpl;
|
2020-02-13 16:49:45 +01:00
|
|
|
|
|
|
|
public class SaxonTransformerFactory {
|
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
/**
|
|
|
|
* Creates the index record transformer from the given XSLT
|
|
|
|
*
|
|
|
|
* @param xslt
|
|
|
|
* @return
|
|
|
|
* @throws TransformerException
|
|
|
|
*/
|
|
|
|
public static Transformer newInstance(final String xslt) throws TransformerException {
|
2020-02-13 16:49:45 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
final TransformerFactoryImpl factory = new TransformerFactoryImpl();
|
|
|
|
final Configuration conf = factory.getConfiguration();
|
|
|
|
conf.registerExtensionFunction(new ExtractYear());
|
|
|
|
conf.registerExtensionFunction(new NormalizeDate());
|
|
|
|
conf.registerExtensionFunction(new PickFirst());
|
2020-02-13 16:49:45 +01:00
|
|
|
|
2020-04-27 14:45:40 +02:00
|
|
|
return factory.newTransformer(new StreamSource(new StringReader(xslt)));
|
|
|
|
}
|
2020-02-13 16:49:45 +01:00
|
|
|
}
|