我使用java和saxonee-9.5.1.6.jar包含构建路径,运行时,在不同时间获取这些错误。
在stylesheet.xslt的第6行第169行的xsl:import-schema出错: XTSE1650:net.sf.saxon.trans.LicenseException:请求的功能(xsl:import-schema) 需要Saxon-EE
第1行第1列出错 SXXP0003:XML解析器报告错误:prolog中不允许使用内容。 javax.xml.transform.TransformerConfigurationException:无法编译样式表。检测到1个错误。
我在十六进制编辑器中打开.xslt文件,并且在开头的AND中看不到任何不同的字符 我在不同的项目中使用transformerfactory但我得到的任何错误。
答案 0 :(得分:0)
检查tFactory的实现类是什么。我的猜测可能是net.sf.saxon.TransformerFactoryImpl
- 这基本上是Saxon-HE版本。
当您像这样使用JAXP时,您会遇到配置问题,因为它会加载它在类路径中找到的任何内容,或者受到系统属性设置的影响,这些设置可能在您不知道的应用程序的某些部分中设置关于。
如果您的应用程序依赖于特定功能,则最好加载特定的TransformerFactory,例如tFactory = new com.saxonica.config.EnterpriseTransformerFactory()。
我不知道你的样式表是否希望根据模式验证源文档,但它确实如此,请注意这不是自动的:你可以在工厂设置属性以实现它。
我建议使用Saxon的s9api接口而不是JAXP来做这种事情。 JAXP接口是为XSLT 1.0设计的,将它用于一些新的2.0功能(如模式感知)是一个真正的延伸:它可以完成,但是你会遇到限制。