首页 文章

使用XPath获取XML-Schema限制

提问于
浏览
0

我试图获取XML模式文件中的元素,simpleTypes和complexTypes的所有限制(minOccurs,maxOccurs,totalDigits,maxLength等) . 由于这些限制在子元素中,因此应该可以根据xsd:element,xsd:simpleType和xsd:complexType以及属性“name”的值选择这些限制元素 . 然后,我可以逐个元素地循环遍历结果集,并使用每个元素的限制填充表 .

不幸的是,我无法构建这样的XPath表达式 . 也许它甚至不可能?这是我到目前为止:

//*[xsd:element[@name] or xsd:simpleType[@name] or xsd:complexType[@name]]//xsd:restriction/descendant::*

这让我受到限制,比如minOccurs等,但我需要让父元素具有@ name-value .

1 回答

  • 1

    首先,除非您知道架构作者以特定方式使用该语言,否则难以在XML级别处理原始架构文档 . 编写相同内容的方法太多了(例如,使用模型组,属性组,xs:include,命名类型与匿名类型等) . 您可以通过使用模式API来访问已编译的模式,或者使用Saxon的SCM(编译模式的XML表示)来避免此问题 - 这消除了表面语法变体,并允许您访问底层模式组件模型, XML表示 .

    其次,你说你想要“填表”结果 . 也就是说,您想要的结果比简单的字符串,数字或节点集更复杂 . 因此,您不在XPath的域之内,而是在XQuery或XSLT中 - 您希望构造结构化结果 .

相关问题