0
我是新来的XML,所以忍受着我。我需要将一个xml文件转换为另一个xml文件。它需要xslt 2.0。我正在使用撒克逊的s9api。使用他们的文件,这是我迄今为止:如何使用saxon s9api进行XSLT 2.0转换? 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。我可以用“xml”替换“html”吗? –
它也给我以下错误:必须指定源文档,初始模板或初始函数。这不是我在第一次尝试块中所做的吗? –
您还应该在变压器上设置初始上下文节点。你对builder.build()的调用应该返回一个XdmNode。使用XdmNode(比如source)设置一个局部变量,然后在变压器transformer.setInitialContextNode(source)上设置初始上下文。 –