Как преобразовать несколько объектов XML-документа ввода с помощью одного сценария преобразования XSL с использованием процессора Saxon9HE в Java-приложение?Преобразование нескольких входных XML-документов с помощью XSLT в Java-приложении с использованием API Saxon9HE
Я нашел способ преобразования нескольких входных файлов XML из файловой системы с помощью сценария XSLT here, но я не могу понять, как передать несколько загруженных объектов XML-документа в приложение Java с использованием API Saxon9HE. Для одного документа XML мой код выглядит так и работает:
Processor proc = new Processor(false);
XsltCompiler comp = proc.newXsltCompiler();
try {
XsltExecutable exp = comp.compile(new StreamSource(stylesheetFile));
XdmNode source = proc.newDocumentBuilder().build(new DOMSource(inputXML));
Serializer out = proc.newSerializer();
out.setOutputProperty(Serializer.Property.METHOD, "xml");
out.setOutputProperty(Serializer.Property.INDENT, "yes");
out.setOutputFile(new File(outputFilename));
XsltTransformer trans = exp.load();
trans.setInitialContextNode(source);
trans.setDestination(out);
trans.transform();
} catch (SaxonApiException e) {
e.printStackTrace();
}
В приведенной таблице стилей используются некоторые параметры с именами файлов или URI, которые вы можете передать. Таким образом, вы можете использовать http://www.saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/XsltTransformer.html#setParameter (net.sf.saxon.s9api.QName,% 20net.sf.saxon.s9api.XdmValue) для установки таких параметров. –
Спасибо. Но разве это не означает, что я могу только передавать файлы из файловой системы или Интернета через имя еще раз? Вместо этого я хочу передать объекты Java XML Document, загруженные и обработанные из другого источника. Должен ли я сохранять их в XML-файлах в файловой системе, чтобы передавать их в Saxon Transformer? – scholt
Если вы хотите создать документ в своем приложении, вы также можете это сделать, возможно, вам придется изменить ' ' to ' ' в ссылочной таблице стилей, а затем вы можете установить параметр с именем 'doc2' в' XdmNode', который вы создаете в своем приложении, используя метод 'setParameter'. Поскольку у вас, кажется, есть узлы DOM, вы даже можете передать их напрямую, но я не уверен, что это более чистый подход, я уверен, с вопросом, помеченным как саксон, Майкл Кей расскажет вам. –