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

问题描述:

我试图找到一种方法来查询RNG模式,同时避免重新发明*,以回答基本问题,例如:什么元素是有效的孩子一个XML实例元素的属性等等。在java中查询RelaxNG模式(xml语法),最好使用012

赛后here提出了我与婧/庄这样的希望,因为我已经做RNG验证与京,而是围绕搜索后,我发现没有源代码示例这将确认要求和浏览API文档也并没有多大帮助(反过来,这也是与Jing捆绑在一起的唯一文档)。

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

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

此问题的答案是使用RNGOM。它是一个基于Jing的对象模型构建API。由于Jing没有公开它的内部模型,似乎是避免对这个用例进行彻底改造的唯一方法。你仍然需要编写你自己的代码,通过浏览这个模型来进行实际的查询(就像我现在要做的那样)。

学习如何利用RNGOM不是微不足道的,因为可以看到here,但项目的代码库应该使事情变得更简单(包含使用示例)。

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

编辑1

我结束了创建我自己的RNG对象模型和一个解析器来生成它。它旨在处理我的具体使用案例,并允许我查询我在问题中发布的问题。由于没有提供其他答案,我会接受我自己的答案,直到(如果有的话)发布更好的答案。