从Saxon9.7开始,我们必须使用不同的s9api过程来“导入”打包样式表。这里说:“样式表包可以.使用. s9api API.导入。”然后他提到了这些的细节。
当我读到它,希望它会很简单,我锁定了这一点:
样式表导出文件..。被任何接受源样式表的Saxon接口所接受。
因此,我创建了这个MCV示例:
import java.io.*;
import net.sf.saxon.Configuration;
import net.sf.saxon.s9api.Processor;
import net.sf.saxon.s9api.XsltCompiler;
import net.sf.saxon.s9api.XsltExecutable;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
public class test {
public static void main (String args[]) throws Exception {
Processor saxProc = new Processor(false);
Configuration saxCfg = saxProc.getUnderlyingConfiguration();
XsltCompiler saxComp = saxProc.newXsltCompiler();
File xslmain = new File(args[0]);
Source xsl = new StreamSource(xslmain);
XsltExecutable saxExe = saxComp.compile(xsl);
}
}这样执行(对ee、pe和他使用9.9.1.7J )不会引发异常:
$ javac -classpath saxon9pe.jar test.java
$ java -classpath .:saxon9he.jar test something.xsl但是,如果我打包something.xsl (即使用EE将其导出到xml文件)并像这样执行MCV,则会引发异常:
$ java -classpath .:saxon9he.jar test something-exported.xml
Error
SXPK0002: Cannot load expression with tag indexedFilter2. The stylesheet uses Saxon-EE features
Exception in thread "main" net.sf.saxon.s9api.SaxonApiException: Cannot load expression with tag indexedFilter2. The stylesheet uses Saxon-EE features难道我不能使用EE打包xsl文件,分发HE,并使用HE读取打包的样式表来执行转换吗?如果是,怎么做?
发布于 2020-03-24 22:29:55
尝试用-target:HE编译它。原则上,这应该阻止Saxon生成那些他运行时不会识别的构造。
不过,我不得不说,这并不是很彻底的测试。还可能需要使用-opt选项禁用选定的优化。
https://stackoverflow.com/questions/60838463
复制相似问题