gpt4 book ai didi

java - 查询原始 XML 架构的 XSD 有效 XML

转载 作者:行者123 更新时间:2023-12-01 13:32:58 25 4
gpt4 key购买 nike

给定一个架构文档(XSD 格式),例如 MODS 3.5 schema (美国国会图书馆,LoC),以及根据该模式已知有效的文档 (XML),例如 metadata for the Antitrust & Competition Policy Blog archives 2007 ( HTML view ) 来自 LoC Law Blawgs Web Archive ,是否有一个 Java API 允许 Java 程序查询 XML 文档中的 XML 模式数据类型(文档元素是其实例)?

我似乎对 XML 模式和 UML 模型感到困惑。我正在考虑 XML 模式,因为它表示类似于 UML 模型 (M1) 的东西,然后是 XML 文档,例如表示 UML 模型元素实例的用户数据 (M0)。如果有可能,类似地,查询 XML 元素,以确定该元素派生自符合的 XML 模式数据类型或元素定义。解析树,我认为它可以为 ModeShape 的定序器提供一个很好的功能。 。

我认为,这个想法本质上是:可能可以在 ModeShape JCR 存储库中引用表示排序 XML 文档的 XML 元素的 JCR 节点,以将每个元素引用到 JCR表示 XML 架构数据类型的节点,此类类型的代表性 JCR 节点将在文档使用的架构排序中定义,例如由 ModeShape XSD 排序器排序。

我只是不确定 Java 中是否有一个 API,用于确定 XML 模式元素而不是有效的 XML 文档元素(当根据 XML 模式验证 XML 文档时),以便该元素与解析树中的一致。我的印象是可以执行这样的计算。简单地说,我想知道是否已经有一个 API 可以实现这一点?

或者,还有 UML...

最佳答案

答案是肯定的。

就标准而言,根据架构验证 XML 文档会生成 PSVI(架构后验证信息集),PSVI 使用有关验证节点类型的信息来装饰解析树中的节点。

在具体实现方面,如果您使用 JAXP Validation API,您可以生成一个使用 TypeInfo 增强的 DOM,告诉您每个节点的类型,或者您可以使用基于 SAX 的验证管道,在其中通知类型信息到 TypeInfoProvider。

您还可以使用模式感知 XSLT 和 XQuery 来完成此操作;在验证操作之后,节点会使用“类型注释”进行扩充,您可以使用“实例”测试来查询该注释。如果您使用 Saxon,则可以使用扩展函数 saxon:type() 或 saxon:type-annotation() 进一步探索:

http://www.saxonica.com/documentation/#!functions/saxon/type http://www.saxonica.com/documentation/#!functions/saxon/type-annotation

XSLT/XQuery 方法的一个限制是它仅在验证成功时才有效。 DOM/SAX 接口(interface)还在验证失败的情况下提供信息。

关于java - 查询原始 XML 架构的 XSD 有效 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com