Я новичок в XML, так что несите меня. Мне нужно преобразовать xml-файл в другой XML-файл. Он нуждается в xslt 2.0. Я использую sa9on s9api. Используя их документацию, это то, что у меня есть до сих пор:Как сделать преобразование XSLT 2.0 с помощью saxon s9api? XML-файл в файл XML
import java.io.File;
import javax.xml.transform.stream.StreamSource;
import net.sf.saxon.s9api.DocumentBuilder;
import net.sf.saxon.s9api.Processor;
import net.sf.saxon.s9api.SaxonApiException;
import net.sf.saxon.s9api.XsltCompiler;
import net.sf.saxon.s9api.XsltExecutable;
import net.sf.saxon.s9api.XsltTransformer;
class Main{
public static void main(String args[]){
Processor processor = new Processor(false);
XsltCompiler compiler = processor.newXsltCompiler();
DocumentBuilder builder = processor.newDocumentBuilder();
try {
builder.build(new File("C:\\XMLFILE.xml"));
} catch (SaxonApiException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
XsltExecutable xsl = compiler.compile(new StreamSource(new File("C:\\XSLFILE.xsl")));
XsltTransformer trans = xsl.load();
trans.transform();
} catch (SaxonApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Правильно ли это? Если это так, и это фактически выполняет преобразование, как я могу указать выходной XML.
Мне нужно преобразовать в xml. Могу ли я просто заменить «html» на «xml»? –
Также он дает мне следующую ошибку: должен быть указан исходный документ, исходный шаблон или начальная функция. Разве это не то, что я сделал в первой попытке? –
Вы также должны установить начальный контекстный узел на вашем трансформаторе. Ваш вызов builder.build() должен вернуть XdmNode. Задайте локальную переменную с помощью XdmNode (скажем, источник), а затем установите начальный контекст на трансформаторе transformer.setInitialContextNode (source). –