Saxon XSD 或 java 中的 Schema 解析器

Saxon XSD or Schema parser in java

有什么方法可以使用 saxon 解析模式或 XSD 文件吗?我需要显示给定 XSD.

的所有可能的 XPath

我在 org.apache.xerces 中找到了一种方法,但想在 Saxon 中实现逻辑,因为它支持 XSLT 3.0(我们也想为 XSLT 相关功能使用相同的库)

提前致谢

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 中,但它们实际上是为内部使用而设计的,而不是这种应用程序的便利性。

当然,访问已编译架构本身并不能解决显示所有有效路径的问题。首先,所有有效路径的集合通常是无限的(因为类型可以递归,并且因为通配符)。其次,即使结果是有限的,通过扩展派生的替换组和类型等特征也具有挑战性。但原则上,信息是存在的:从具有全局声明的元素名称,你可以找到它的类型,从它的类型你可以找到有效子元素的集合,等等递归。