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

时间:2010-03-19 14:10:09

标签: 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查询
  • 检查xpath输出与预期结果(“=”,“!=”,“包含”)
  • 遵循基本语法(“和”,“或”和括号)
  • 判断规则是真还是假

你知道哪个图书馆可以帮助我吗?也许是JavaCC?

由于

2 个答案:

答案 0 :(得分:0)

为了评估XPATH,我建议JAXEN

  

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

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

答案 1 :(得分:0)

JavaCC邮件列表上的某个人向我指出了正确的方向,提到了Schematron。它引导我Probatron,这似乎是最好的Java实现。

Schematron网站声称该语言支持“跳过链接和XML文档之间以检查约束”,但似乎Probatron不允许这样做。我可能不会调整它或找到一个技巧(比如构建一个包含我所有源文档的临时XML文档)。除此之外,看起来Probatron对我来说是合适的图书馆。