[英]XQuery: Omitting empty elements during a transformation
目前,我正在进行一些XML转换。 输入XML没有某些值可能会导致空元素。 因此输出可能如下所示:
<car>
<category>Combi</category>
<name>VW Passat</name>
<age />
</car>
我的问题是是否有全局选项或类似的东西可以省略诸如<age />
这样的空元素?
我可以在转换中检查是否存在某个值。 或者,我可以使用后期处理来删除空元素。 但我希望有一种更优雅的方式来做到这一点:-)
我不相信XQuery中有任何序列化选项可让您在输出中省略nilled元素。
我建议仅使用稍微修改过的标识,该标识会删除被钉住的元素以对输出进行后处理。 类似于以下内容的东西应该起作用:
xquery version "1.0";
declare function local:remove-nilled($node as node()) as node()? {
typeswitch($node)
case document-node()
return
document {
for $child in $node/node()
return
local:remove-nilled($child)
}
case element()
return
if($node/node())then
element { node-name($node) } {
$node/attribute(),
for $child in $node/node()
return
local:remove-nilled($child)
}
else()
default
return
$node
};
local:remove-nilled(
document {
<car>
<category>Combi</category>
<name>VW Passat</name>
<age />
</car>
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.