首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven和Saxon-PE7运行XSpec

使用Maven和Saxon-PE7运行XSpec
EN

Stack Overflow用户
提问于 2016-09-23 08:46:25
回答 2查看 425关注 0票数 0

我们希望将XSpec作为Maven构建的一部分运行,以检查XSL转换。一个插件可以从GitHub获得。当我们针对调用函数检查的XSL样式表在Saxon中不可用时,问题就出现了,如下所示:

代码语言:javascript
复制
Error at xsl:if on line 194 column 75 of dyxml_table_cals.xsl:
XPST0017 XPath syntax error at char 0 on line 194 near {...table-enumeration-condition...}:
Cannot find a matching 2-argument function named {http://saxon.sf.net/}evaluate().
Saxon extension functions are not available under Saxon-HE

我们拥有PE的执照。根据萨克森的文件增强版在没有许可信息时恢复到开放源代码HE,情况似乎是这样的。是否有可能通过Maven激活PE,例如使用可豪斯插件,这会是什么样子?我们已经使用了一种通过Java进行激活的方法,但是如果可能的话,了解另一种更优雅的方式将是有帮助的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-26 08:56:46

经过一些试验和错误之后,我们发现以下解决方案是有效的:

  1. 上面链接的XSpec插件的创建者硬编码了未经许可的Saxon的使用。特别是,以下几行引起了问题: 专用最终静态处理器=新处理器(False); 我们对代码进行了分叉,并将其更改为: 专用最终静态处理器=新处理器(真);
  2. 我们构建了一个自定义类来激活许可证,并将其集成到插件源代码中。(不能在这里张贴代码。)

这解决了许可证问题。现在,我们的XSpec测试已经启动并运行。对我们!

票数 0
EN

Stack Overflow用户

发布于 2016-09-23 23:11:11

我不太熟悉XSpec的Maven插件,但我尝试给出一些提示和解决办法。

您提到的Maven插件的pom.xml包含对使用的Saxon版本的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>net.sf.saxon</groupId>
    <artifactId>Saxon-HE</artifactId>
    <version>9.7.0-1</version>
</dependency>

您应该指定Saxon版本,以便使用Saxon或Saxon。然而,这些Saxon版本似乎无法在公共Maven存储库中使用,因为与Saxon不同,它们是专有软件。我想您可以将Saxon的.jar文件放在本地存储库中(请参阅Maven文档)。我建议将.lic许可文件与.jar文件放在同一个目录中。

另外两个提示可能会帮助您找到解决办法:

  • XSpec允许在或批处理脚本中的环境变量中指定撒克逊版本。然后可以在Maven项目中运行一个shell脚本,例如使用example plugin。这并不理想,但它可能足以满足您的用例。
  • 这里有运行另一个Maven插件的XSpec,您可能也想检查一下。

希望能帮上忙..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39656496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档