我有xsd验证的XML。 要控制UI中的用户输入,我需要知道元素和属性的类型,模式,最大长度。 因此,我需要通过Xpath f.ex从xsd获取minOccures,类型,模式以获取我的XML中的某些元素或属性。 如何获得它?
此处类似问题Given an XML file and associated XSD, I'd like to find the XSD for elements in that XML instance
答案 0 :(得分:0)
这取决于您使用的技术。如果您使用Saxon(它必须是Saxon-EE用于模式感知),那么在模式验证之后,您可以在任何经过验证的元素或属性节点上调用扩展函数saxon:type($node)
,这将返回有关验证它的类型。您可以使用函数调用语法访问此类型的属性,例如saxon:type($node)("name")
为您提供类型的名称。同样地,saxon:type($node)("facets")
将为您提供该类型的所有方面,如果您想要找到模式方面的值,您可以使用saxon:type($node)("facets")[.("class")="pattern"]("value")
。
当然这对Saxon来说都是特别的,如果你使用不同的模式感知XPath处理器,你必须检查它是否提供类似的功能。它可能涉及编写您自己的扩展函数。