给定一个模式文档(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..。
发布于 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接口还提供信息。
https://stackoverflow.com/questions/21447416
复制相似问题