проверить наличие нескольких URI в одном префиксе - PullRequest
1 голос
/ 21 октября 2019

Можно ли использовать Xquery для проверки того, имеет ли документ xml разные URI, присвоенные одному и тому же префиксу пространства имен в разных областях?

1 Ответ

1 голос
/ 21 октября 2019

Вы можете выбрать (//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

Не уверен насчет пустого префикса, может потребоваться дополнительная обработка, поскольку он не включен в приведенный выше результат.

...