Java中的Saxon XSD或模式解析器

问题描述 投票:0回答:1

我们可以使用saxon解析Schema或XSD文件吗,我需要显示给定XSD的所有可能的XPath。

我在org.apache.xerces中找到了一种方法,但由于它支持XSLT 3.0,所以希望在Saxon中实现逻辑(我们也希望对XSLT相关功能使用相同的库)

预先感谢

parsing xsd saxon
1个回答
0
投票

Saxon-EE当然包括一个解析模式文档的XSD处理器。我认为您的问题不是解析文档的低级流程,而是解析架构后查询架构的较高级流程。

[Saxon-EE提供了几种以编程方式访问已编译模式的组件的方法。

  • 您可以将已编译的架构导出为XML格式的SCM文件。该格式的文档尚不完善,但是其结构与W3C规范中定义的架构组件模型非常接近。

  • 您可以使用扩展功能(例如saxon:schema()和saxon:schema从XPath访问已编译的模式-请参见http://www.saxonica.com/documentation/index.html#!functions/saxon/schema

  • 您还可以在Java级别访问模式:方法已在Javadoc中进行了文档说明,但是它们实际上是为内部使用而设计的,而不是为了此类应用程序的方便。

当然,访问编译模式本身并不能解决您显示所有有效路径的问题。首先,所有有效路径的集合通常是无限的(因为类型可以是递归的,并且由于通配符)。其次,即使结果是有限的,诸如替换组和通过扩展得出的类型之类的特征也会带来挑战。但从原则上讲,信息就在那里:从带有全局声明的元素名称中,您可以找到其类型,从其类型中,您可以找到有效的子元素集,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.