use of net.sf.saxon.s9api.XsltTransformer in project sirix by sirixdb.
the class TestNodeWrapperS9ApiXSLT method saxonTransform.
/**
* Transform source document with the given stylesheet.
*
* @param xml
* Source xml file.
* @param stylesheet
* Stylesheet to transform sourc xml file.
* @throws SaxonApiException
* Exception from Saxon in case anything goes wrong.
*/
@Ignore("Not a test, utility method only")
public void saxonTransform(final File xml, final File stylesheet) throws SaxonApiException {
final Processor proc = new Processor(false);
final XsltCompiler comp = proc.newXsltCompiler();
final XsltExecutable exp = comp.compile(new StreamSource(stylesheet));
final XdmNode source = proc.newDocumentBuilder().build(new StreamSource(xml));
final Serializer out = new Serializer();
out.setOutputProperty(Serializer.Property.METHOD, "xml");
out.setOutputProperty(Serializer.Property.INDENT, "yes");
out.setOutputFile(new File(TestHelper.PATHS.PATH1.getFile(), "books1.html"));
final XsltTransformer trans = exp.load();
trans.setInitialContextNode(source);
trans.setDestination(out);
trans.transform();
}
use of net.sf.saxon.s9api.XsltTransformer in project sirix by sirixdb.
the class TestXSLTTransformation method testTransform.
@Test
public void testTransform() throws Exception {
final Processor proc = new Processor(false);
final XsltCompiler compiler = proc.newXsltCompiler();
try {
final XsltExecutable exec = compiler.compile(new StreamSource(new File(STYLESHEET)));
final XsltTransformer transform = exec.load();
transform.setSource(new StreamSource(new FileInputStream(INPUT)));
final Serializer serializer = new Serializer();
final OutputStream out = new ByteArrayOutputStream();
serializer.setOutputStream(out);
transform.setDestination(serializer);
transform.transform();
final StringBuilder expected = TestHelper.readFile(new File(EXPECTED), false);
assertEquals("XML files match", expected.toString(), new StringBuilder("<root>").append(out.toString()).append("</root>").toString());
} catch (final SaxonApiException e) {
LOGWRAPPER.error(e);
}
}
use of net.sf.saxon.s9api.XsltTransformer in project ph-schematron by phax.
the class AbstractSchematronXSLTBasedResource method applySchematronValidation.
@Nullable
public final Document applySchematronValidation(@Nonnull final Node aXMLNode, @Nullable final String sBaseURI) throws TransformerException {
ValueEnforcer.notNull(aXMLNode, "XMLNode");
final ISchematronXSLTBasedProvider aXSLTProvider = getXSLTProvider();
if (aXSLTProvider == null || !aXSLTProvider.isValidSchematron()) {
// We cannot progress because of invalid Schematron
return null;
}
// Debug print the created XSLT document
if (SchematronDebug.isShowCreatedXSLT())
s_aLogger.info("Created XSLT document: " + XMLWriter.getNodeAsString(aXSLTProvider.getXSLTDocument()));
// Create result document
final Document ret = XMLFactory.newDocument();
// Create the transformer object from the templates specified in the
// constructor
final Transformer aTransformer = aXSLTProvider.getXSLTTransformer();
// Ensure an error listener is present
if (m_aCustomErrorListener != null)
aTransformer.setErrorListener(m_aCustomErrorListener);
else
aTransformer.setErrorListener(new LoggingTransformErrorListener(Locale.US));
// Set the optional URI Resolver
if (m_aCustomURIResolver != null)
aTransformer.setURIResolver(m_aCustomURIResolver);
// Set all custom parameters
if (m_aCustomParameters != null)
for (final Map.Entry<String, ?> aEntry : m_aCustomParameters.entrySet()) aTransformer.setParameter(aEntry.getKey(), aEntry.getValue());
if (s_aLogger.isDebugEnabled())
s_aLogger.debug("Applying Schematron XSLT on XML [start]");
// Enable this for hardcore Saxon debugging only
if (false)
if (aTransformer.getClass().getName().equals("net.sf.saxon.jaxp.TransformerImpl")) {
final XsltTransformer aXT = ((TransformerImpl) aTransformer).getUnderlyingXsltTransformer();
aXT.setMessageListener((a, b, c) -> s_aLogger.info("MessageListener: " + a + ", " + b + ", " + c));
aXT.setTraceFunctionDestination(new StandardLogger(System.err));
if (false)
aXT.getUnderlyingController().setTraceListener(new XSLTTraceListener());
if (false) {
final XSLTTraceListener aTL = new XSLTTraceListener();
aTL.setOutputDestination(new StandardLogger(System.err));
aXT.getUnderlyingController().setTraceListener(TraceEventMulticaster.add(aTL, null));
}
if (false)
System.out.println("mode=" + aXT.getInitialMode());
if (false)
System.out.println("temp=" + aXT.getInitialTemplate());
if (false)
System.out.println(aTransformer.getOutputProperties());
}
// Do the main transformation
aTransformer.transform(new DOMSource(aXMLNode), new DOMResult(ret));
if (s_aLogger.isDebugEnabled())
s_aLogger.debug("Applying Schematron XSLT on XML [end]");
// Debug print the created SVRL document
if (SchematronDebug.isShowCreatedSVRL())
s_aLogger.info("Created SVRL:\n" + XMLWriter.getNodeAsString(ret));
return ret;
}
use of net.sf.saxon.s9api.XsltTransformer in project sirix by sirixdb.
the class XSLTEvaluator method call.
@Override
public OutputStream call() {
final Processor proc = new Processor(false);
final XsltCompiler comp = proc.newXsltCompiler();
XsltExecutable exp;
XdmNode source;
try {
final Configuration config = proc.getUnderlyingConfiguration();
final NodeInfo doc = new DocumentWrapper(mSession, config);
exp = comp.compile(new StreamSource(mStylesheet));
source = proc.newDocumentBuilder().build(doc);
if (mSerializer == null) {
final Serializer out = new Serializer();
out.setOutputProperty(Serializer.Property.METHOD, "xml");
out.setOutputProperty(Serializer.Property.INDENT, "yes");
out.setOutputStream(mOut);
mSerializer = out;
} else {
mSerializer.setOutputStream(mOut);
}
final XsltTransformer trans = exp.load();
trans.setInitialContextNode(source);
trans.setDestination(mSerializer);
trans.transform();
} catch (final SaxonApiException e) {
LOGGER.error("Saxon exception: " + e.getMessage(), e);
} catch (final SirixException e) {
LOGGER.error("TT exception: " + e.getMessage(), e);
}
return mOut;
}
use of net.sf.saxon.s9api.XsltTransformer in project sirix by sirixdb.
the class XMLReduce method reduce.
@Override
public void reduce(final DateWritable paramKey, final Iterable<Text> paramValue, final Context paramContext) throws IOException, InterruptedException {
final StringBuilder builder = new StringBuilder("<root>");
for (final Text event : paramValue) {
System.out.println(event.toString());
builder.append(event.toString());
}
builder.append("</root>");
// System.out.println(builder.toString());
final Processor proc = new Processor(false);
final XsltCompiler compiler = proc.newXsltCompiler();
try {
final XsltExecutable exec = compiler.compile(new StreamSource(new File(STYLESHEET)));
final XsltTransformer transform = exec.load();
transform.setSource(new StreamSource(new StringReader(builder.toString())));
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final Serializer serializer = new Serializer();
serializer.setOutputStream(out);
transform.setDestination(serializer);
transform.transform();
final String value = out.toString();
// System.out.println(value);
paramContext.write(null, new Text(value));
} catch (final SaxonApiException e) {
LOGWRAPPER.error(e);
}
}
Aggregations