SaxonParserTest 缺少 SaxonXQDataSource?

SaxonParserTest missing SaxonXQDataSource?

查看 运行 simplest 可能使用撒克逊语的示例,具体来说,Saxon-HE:

thufir@dur:~/NetBeansProjects/helloWorldSaxon$ 
thufir@dur:~/NetBeansProjects/helloWorldSaxon$ gradle clean run

> Task :compileJava FAILED
/home/thufir/NetBeansProjects/helloWorldSaxon/src/main/java/helloWorldSaxon/App.java:6: error: package com.saxonica.xqj does not exist
import com.saxonica.xqj.SaxonXQDataSource;
                       ^
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
2 actionable tasks: 2 executed
thufir@dur:~/NetBeansProjects/helloWorldSaxon$ 

我认为这不是正确的导入语句,但我也不确定什么是正确的。仔细查看示例会发现它正在使用 saxonica 并且实际上已经注释掉了 import:

//import net.sf.saxon.xqj.SaxonXQDataSource;

要重申,希望留在 Saxon-HE 内。但是怎么办?

来自 文件:

compile (group = "net.sf.saxon"            , name = "Saxon-HE"    , version = "9.9.0-2")

坚持 Saxon-HE 这是正确的导入?

这附带哪个数据源?

thufir@dur:~/saxon$ 
thufir@dur:~/saxon$ jar tf Saxon-HE.jar | grep data
net/sf/saxon/data/
net/sf/saxon/data/analyze-string.xsd
net/sf/saxon/data/casevariants.xml
net/sf/saxon/data/categories.xml
net/sf/saxon/data/chameleon.xsl
net/sf/saxon/data/json.xsd
net/sf/saxon/data/normalizationData.xml
net/sf/saxon/data/override.xsl
net/sf/saxon/data/unicodeBlocks.xml
net/sf/saxon/data/xml-to-json-indent.xsl
net/sf/saxon/data/xml-to-json-pkg.xsl
net/sf/saxon/data/xml-to-json.xsl
net/sf/saxon/data/xpath-functions.scm
net/sf/saxon/data/xpath-functions.xsd
net/sf/saxon/resource/MetadataResource.class
net/sf/saxon/resource/MetadataResource.class
thufir@dur:~/saxon$ 

我需要更多编译依赖项吗?如果有,是哪些?

class SaxonXQDataSource 在包 com.saxonica.xqj 中。如果您使用的是 Saxon-HE,那么您需要在 class 路径上有 JAR 文件 saxon9-xqj.jar

Saxon 的 XQJ 库与 Saxon-HE 的其余部分区别对待的原因是许可不同。 XQJ 接口由 Oracle 发布,Oracle 声称其实现受 Oracle 许可条件的约束(有些人质疑实现已发布的 API 需要许可,但这是律师的事情)。 Oracle 许可条件不符合开源许可的公认标准(有两个原因:(a) 它们不允许修改,以及 (b) 它们要求实现通过所有参考测试)。出于这个原因,一些重新分发 Saxon-HE 的软件公司更愿意将 XQJ 从分发中排除,为了简化操作,我们将 XQJ classes 放在一个单独的 JAR 文件中。