Parsing java中的Saxon XSD或模式解析器

Parsing java中的Saxon XSD或模式解析器,parsing,xsd,saxon,Parsing,Xsd,Saxon,是否有任何方法可以使用saxon解析模式或XSD文件?我需要显示给定XSD的所有可能的XPath 我在org.apache.xerces中找到了一种方法,但希望在Saxon中实现逻辑,因为它支持XSLT 3.0(我们也希望对XSLT相关的功能使用相同的库) 提前感谢Saxon EE当然包括一个解析模式文档的XSD处理器。我认为您的问题不是关于解析文档的低级过程,而是关于在解析模式后查询模式的高级过程 Saxon EE提供了几种以编程方式访问编译模式组件的方法 可以将编译后的架构导出为XML格式

是否有任何方法可以使用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访问编译的模式-请参阅

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


当然,访问已编译的模式本身并不能解决显示所有有效路径的问题。首先,所有有效路径的集合通常是无限的(因为类型可以是递归的,也因为通配符)。第二,即使结果是有限的,通过扩展导出的替换群和类型等特征也会带来挑战。但原则上,信息是存在的:从带有全局声明的元素名中,可以找到它的类型,从它的类型中,可以递归地找到有效的子元素集,依此类推。

Saxon EE支持XSD 1.0和1.1模式,我想。请看。谢谢Michael,我正在寻找一个开源工具,现在我将继续使用org.apache.xerces。不同的问题:)在Saxon free(home)版本中,是否可以验证生成的XSLT文件是否有效(XSLT 3.0)。我使用XPath组(用户将配置XPath)@ KANTESE生成XSLT文件,您可以使用SAXON 9 HE编译XSLT文档,如果这是您考虑检查有效性的话。如果要根据XSLT 3的XSD模式进行验证,需要EE或Xerces。@Saxon的kantesh HE XSLT编译器将告诉您样式表中的所有静态错误。但是请注意,使用永远不会选择任何内容的路径(例如,由于元素名称中的拼写错误)不是静态错误,它不会使样式表无效(只是无用)。要检测这样的错误,您需要Saxon的模式感知版本,即Saxon EE,它不是开源的。很抱歉迟了回复,非常感谢Michael和Martin