XsltCompiler compiler = getProcessor().newXsltCompiler();
compiler.setSchemaAware(false);
XsltExecutable exec = compiler.compile(new SAXSource(new InputSource(xsl)));
XsltTransformer transformer = exec.load();
transformer.setInitialContextNode(profile);
XdmDestination result = new XdmDestination();
transformer.setDestination(result);
transformer.transform();
Serializer serializer = new Serializer();
serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
OutputStream outstr = null;
try {
switch (this.profile.getKind()) {
case URI:
URI furi = URI.create(this.profile.getUri());
outstr = new FileOutputStream(new File(furi));
break;
case OUTPUT_STREAM:
outstr = this.profile.getOutputStream();
break;
default:
throw new UnsupportedOperationException(format("Unsupported profile kind '%s'", this.profile.getKind()));
}
serializer.setOutputStream(outstr);
S9apiUtils.serialize(this, result.getXdmNode(), serializer);
} finally {
if (!System.out.equals(outstr) && !System.err.equals(outstr)) {
outstr.close();
}
}