是否可以使用Xquery来检查xml文档是否在不同范围内将不同的URI分配给相同的名称空间前缀?
答案 0 :(得分:1)
您可以选择(//ns1:*, //@ns1:*)/prefix-from-QName(node-name())
来查找我认为的已用前缀:
例如在运行时
<root xmlns="http://example.com/ns1">
<pf1:foo xmlns:pf1="http://example.com/ns1">
<pf1:bar xmlns:pf1="http://example.com/ns2"/>
<pf3:baz xmlns:pf3="http://example.com/ns1">
<foobar xmlns="" xmlns:pf4="http://example.com/ns1" pf4:att1="whatever"/>
</pf3:baz>
</pf1:foo>
</root>
它返回pf1 pf3 pf4
,使用count(distinct-values((//ns1:*, //@ns1:*)/prefix-from-QName(node-name())))
检查是否使用了多个。示例:https://xqueryfiddle.liberty-development.net/948Fn5t/1
不确定空前缀,因为上面的结果中未包含该前缀,因此可能需要一些额外的处理。