Xml XQuery排除结果前缀

Xml XQuery排除结果前缀,xml,xquery,Xml,Xquery,如何从与XSL中的XSLT exclude result prefixes属性类似的XQuery中排除结果前缀 目前,我的XQuery为不属于结果集的名称空间生成名称空间前缀,但这些名称空间是原始负载的一部分。XQuery实际上没有XSLT中排除结果前缀这样的内置功能。序列化扩展在这方面似乎也没有帮助。因此,在返回最终结果之前,您必须自己处理最终结果。不过应该不难 xqueryfunctions网站有一些功能可以提供帮助,比如functx:change element names deep(),

如何从与XSL中的XSLT exclude result prefixes属性类似的XQuery中排除结果前缀


目前,我的XQuery为不属于结果集的名称空间生成名称空间前缀,但这些名称空间是原始负载的一部分。

XQuery实际上没有XSLT中排除结果前缀这样的内置功能。序列化扩展在这方面似乎也没有帮助。因此,在返回最终结果之前,您必须自己处理最终结果。不过应该不难

xqueryfunctions网站有一些功能可以提供帮助,比如
functx:change element names deep
(),但这并不符合这里的要求。因此,我有一个更具体的解决方案:

declare function local:remove-prefixes($node as node(), $prefixes as xs:string*) {
    typeswitch ($node)
    case element()
        return
            if ($prefixes = ('#all', prefix-from-QName(node-name($node)))) then
                element {QName(namespace-uri($node), local-name($node))} {
                    $node/@*,
                    $node/node()/local:remove-prefixes(., $prefixes)
                }
            else
                element {node-name($node)} {
                    $node/@*,
                    $node/node()/local:remove-prefixes(., $prefixes)
                }
    case document-node()
        return
            document {
                $node/node()/local:remove-prefixes(., $prefixes)
            }
    default
        return $node
};

显示输入、所需输出、查询和实际输出。然后我们可以帮助您更正您的查询。