首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询XSD-有效的XML以获取原始XML架构。

查询XSD-有效的XML以获取原始XML架构。
EN

Stack Overflow用户
提问于 2014-01-30 03:45:32
回答 1查看 208关注 0票数 0

给定一个模式文档(XSD )(如MODS 3.5模式 (美国国会图书馆,LoC) )和一个已知根据该模式有效的文档(如来自LoC 法律Blawgs网络档案馆2007年反垄断与竞争政策博客档案元数据 (HTML视图) ),是否有Java允许Java程序查询XML文档中的XML模式数据类型,即文档中的元素是该文档的实例?

似乎我可能有XML模式和UML模型混淆。我想到了一个XML,因为它表示类似于UML模型(M1)的东西,然后是一个XML,比如表示UML元素的实例的用户数据(M0)。类似地,如果可以查询XML元素,确定元素从解析树中派生或符合的XML模式数据类型或元素定义,我认为它可以为ModeShape的排序器提供一个很好的特性。

我认为,其基本思想是:可以在ModeShape JCR存储库中引用表示已顺序XML文档的XML元素的JCR节点,将每个元素引用到表示XML模式数据类型的JCR节点,例如在文档使用的模式的排序中定义该类型的代表JCR节点,例如ModeShape XSD排序器所进行的排序。

我只是不确定在Java中是否存在一个API来确定XML模式元素,而不是一个有效的XML文档元素--当XML文档根据一个XML模式进行验证时--这样该元素在解析树中是一致的。我的印象是,这样的计算是可能的。简单地说,我想知道,是否已经有了一个API?

另外还有UML..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 10:35:01

答案是肯定的。

在标准方面,根据模式验证XML文档会产生一个PSVI (后模式验证信息集),并且PSVI使用验证所针对的类型的信息来装饰解析树中的节点。

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

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

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

XSLT/XQuery方法的一个限制是,只有当验证成功时,它才能工作。当验证失败时,DOM/SAX接口还提供信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21447416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档