在java中查询RelaxNG模式(xml语法),最好使用Jing

时间:2012-02-27 13:40:27

标签: java xml relaxng jing

我试图找到一种方法来查询RNG模式,同时避免轮子的重新发明,以回答基本问题,例如:哪些元素是XML实例元素的有效子元素,什么可以/必须是它的属性和等等。

帖子here提出了我与Jing / Trang这样做的希望,因为我已经和Jing进行了RNG验证,但在搜索之后我发现没有源代码示例可以确认索赔和浏览API文档也对我没什么帮助(反过来似乎也是与Jing捆绑在一起的唯一文档)。

我真的很想避免将模式解析到我自己的对象模型中来执行这些查询,这似乎也是多余的,因为我知道Jing也必须在某个地方进行。问题是如何从中获取我需要的信息。

我可以用另一个库从java代码查询RNG模式吗?请注意,我不是试图通过使用模式来验证实例文件,我试图查询模式本身。

1 个答案:

答案 0 :(得分:1)

这个问题的答案是使用RNGOM。它是一个基于Jing的对象模型构建API。由于Jing没有暴露它的内部模型似乎是避免完全重新发明这个用例的轮子的唯一方法。您仍然需要编写自己的代码,通过浏览此模型来进行实际查询(正如我现在尝试的那样)。

学习如何利用RNGOM并不是一件容易的事情here,但项目的代码库应该让事情变得更容易(包含用法示例)。

我遗憾地发现没有其他库可以让我查询RNG模式(或者至少可以减轻这样做的痛苦)。

修改1

我最终创建了自己的rng对象模型和解析器来生成它。它旨在处理我的特定用例,并允许我像我在问题中发布的那样进行查询。由于没有提供其他答案,我将接受我自己的答案,直到(如果有的话)发布更好的答案。