我使用relaxNG和Jing(在Java中使用relaxNG验证器)来验证一些XML文件,并且我需要合并语法(在两个语法中重用元素定义)。
为了实现合并我包括与元素的语法和我给href属性包含的语法文件的价值:RelaxNG:在罐子里合并文法
<include href="embededGrammar.xml"/>
所有语法文件都位于相同的路径在我的Java项目的资源。
在IDE中测试应用程序时,将查找包含的语法和XML数据文件。
但是,当我将应用程序打包到JAR文件中时,找不到嵌入式语法,并且错误消息报告说它试图在与jar文件相同的位置找到它(不是在与嵌入位于相同位置的jar文件中语法,因为它应该)。
我已经实施了一种解决方法,但我想实施一个干净的解决方案,因此如果有人解决了这样的问题,请让我知道如何。
谢谢。
编辑:它工作正常,如果我硬编码href值指向jar文件(jar:file:./ jarfile.jar/path/to/file/ebeddedGrammar.xml)内的文件但jar文件名称可能会改变(版本号被附加),此外不能在IDE中进行测试。