Если вы объявите
declare namespace A = "http:example.com/A";
declare namespace B= "http:example.com/B";
, вы сможете использовать
case element(A:add) | element(B:add)
хотя бы в стандартном XQuery (https://www.w3.org/TR/xquery-31/#prod -xquery31-SequenceTypeUnion ) , Я не знаю, поддерживает ли это Marklogi c.
Я не думаю, что типы последовательностей допускают подстановочный знак пространства имен в форме, например, element(*:add)
, поэтому я не уверен, что предложить для вашего большое количество пространств имен, проверьте, нужен ли вам переключатель типов и сопоставление типов последовательностей, или вы не можете просто выбрать *:add
в шаге выражения пути или предиката, например, if ($node[self::*:add])
, например, вместо
typeswitch($node)
case element(add) return
local:do-something()
...
вы можете использовать
if ($node[self::*:add])
then local:do-something()
else $node