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



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

这里的一篇帖子提高了我对Jing/Trang这样做的希望,因为我已经在与Jing进行RNG验证了,但在四处搜索后,我没有发现任何可以证实声明的源代码示例,浏览API文档也对我没有太大帮助(这似乎也是与Jing捆绑在一起的唯一文档)。

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

有没有其他库可以用来从java代码中查询RNG模式?请注意,我不是试图通过使用模式来验证实例文件,而是试图查询模式本身。

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

从这里可以看出,学习如何使用RNGOM并非易事,但项目的代码库应该会让事情变得更容易(包含使用示例)。

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

编辑1

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

最新更新