获取xsd

时间:2016-09-08 19:58:14

标签: java xml xpath xsd saxon

我有一个包含一堆重复组的xsd文件,我想获取它们的路径列表。 (这里大多数都是非重复的群体;我不关心这些。)

我在想我可以浏览架构的某种树形表示,并检查节点是否在重复。如果是,我会将其xpath写入文件。如果没有,我会跳过它。

我知道我可以使用Saxon和这个答案How can I find all elements in an XML Schema whose value is specified as a QName?生成一个scm文件,但我只是部分肯定这是要走的路。

有没有任何已知的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我不确定"重复组"的确切含义。 (这让我想起了COBOL中的一些东西......)但我并不认为这是真的重点。

总的来说,我建议不要尝试使用XPath和XSLT来处理源模式文档,因为正确处理它太困难了 - 编写等效模式的方法太多了。有各种选择:使用Saxon可以使用SCM文件,或使用saxon:schema()扩展函数来处理已编译的模式组件模型;或者使用Xerces,有一个Java API来执行此操作。

预约是您的术语"重复组"。按组,是指具有name属性的xs:group元素(XSD将其称为"模型组定义"),或者使用ref属性("模型组引用") ,或者你的意思是"组定义组件"这是模型组定义和属性组定义的通用术语,或者您的意思是"替换组",或者您的意思是"模型组",它对应于xs:选择,xs:序列,还是xs:所有元素? XSD术语可能非常令人困惑 - 如果不完全清楚你在寻找什么,很难提出建议。