XSLのXSLT exclude-result-prefixes属性と同様のXQueryから結果プレフィックスを除外するにはどうすればよいですか。XQueryの結果プレフィックスの除外
現在のところ、私のXQueryは、結果セットの一部ではなく元のペイロードの一部であった名前空間の名前空間プレフィックスを生成します。
XSLのXSLT exclude-result-prefixes属性と同様のXQueryから結果プレフィックスを除外するにはどうすればよいですか。XQueryの結果プレフィックスの除外
現在のところ、私のXQueryは、結果セットの一部ではなく元のペイロードの一部であった名前空間の名前空間プレフィックスを生成します。
XQueryには、XSLTのexclude-result-prefixesのような組み込み機能はありません。シリアライゼーションの拡張はそこでは役に立たないようです。したがって、返却する直前に最終結果を処理することで、自分で処理する必要があります。しかし、困難ではありません。
xqueryfunctionsウェブサイトには、functx:change-element-names-deep
(http://www.xqueryfunctions.com/xq/functx_change-element-names-deep.html)のような機能がありますが、実際にはこの請求書には当てはまりません。そこで、私自身のより具体的な解決方法を以下に示します。
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
};
HTH!
入力内容、希望する出力、クエリ、および実際の出力を表示します。そして、あなたの質問を修正するのを助けることができます。 –