Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解释在多个XML文档上应用多个xpath查询的规则_Java_Xpath_Parsing_Interpreter_Javacc - Fatal编程技术网

Java 解释在多个XML文档上应用多个xpath查询的规则

Java 解释在多个XML文档上应用多个xpath查询的规则,java,xpath,parsing,interpreter,javacc,Java,Xpath,Parsing,Interpreter,Javacc,我需要构建一个组件,该组件将在输入中包含一些XML文档,并检查以下规则: XML1:/bookstore/book[price>35.00] != null and (XML2:/city/name = 'Montreal' or XML3://customer[@language] contains 'en') 基本上,我的组件应该能够: 用相应的XML文档替换XML标记(冒号之前) 在此XML文档上应用xpath查询 根据预期结果(“=”、“!=”、“包含”)检查xpa

我需要构建一个组件,该组件将在输入中包含一些XML文档,并检查以下规则:

XML1:/bookstore/book[price>35.00] != null 
and (XML2:/city/name = 'Montreal'
     or XML3://customer[@language] contains 'en')
基本上,我的组件应该能够:

  • 用相应的XML文档替换XML标记(冒号之前)
  • 在此XML文档上应用xpath查询
  • 根据预期结果(“=”、“!=”、“包含”)检查xpath输出
  • 遵循基本语法(“and”、“or”和括号)
  • 说出规则是真是假
你知道有什么图书馆可以帮我吗?也许是JavaCC


感谢您评估我推荐的XPath

Jaxen是一个开源XPath库 用Java编写。它适用于 许多不同的对象模型, 包括DOM、XOM、dom4j和JDOM。 也可以写适配器吗 处理非XML树的 编译的Java字节码或Java bean 作为XML,从而使您能够查询 这些树也使用XPath


Java5/javax.xml.xpath)也是一个选项,但我还没有尝试过。

JavaCC邮件列表上的某个人给我指出了正确的方向,提到了。它引导我找到了目前最好的java实现


Schematron网站声称该语言支持“跨链接和XML文档之间跳转以检查约束”,但Probatron似乎不允许这样做。我可能不想对其进行调整或找到解决方法(比如构建一个包含所有源文档的临时XML文档)。除此之外,Probatron似乎是适合我的库。

对于xpath部分,我正在考虑使用JDK API。根据以下基准测试,它似乎比其他库更快,而且我实际上没有性能限制:我的问题更多地涉及如何解释规则和相应地编排解析。对不起,我应该说得更准确一些。谢谢,我已经看到schematron应该能够使用xquery而不是xpath,但不幸的是,java实现(probatron)到目前为止只支持xpath。我将评估所有这些,并查看VTD-XML以构建我的解决方案。