xquery - 如何检查我的 cts:and-query 或 cts:or-query 是否包含任何元素查询
问题描述
我有一个函数将返回cts:and-query()
or cts:or-query()
。
如何验证查询是否为空(其中没有任何元素或集合查询)?
我想过滤如下查询
cts:and-query(cts:or-query((), ()), ())
解决方案
根据您的定义验证查询是否为空的最可靠方法是递归遍历查询,直到遇到非空查询元素,否则返回 true。
首先将查询转换为 XML 会更容易一些:
declare function local:is-empty-query(
$q as schema-element(cts:query)*
)
{
if (empty($q)) then true()
else if (every $e in $q satisfies ($e/self::cts:and-query or $e/self::cts:or-query))
then local:is-empty-query($q/*)
else false()
};
local:is-empty-query(document { cts:and-query((cts:or-query((), ()))) }/*)
=> true()
local:is-empty(document { cts:and-query((cts:or-query((cts:word-query('test'), ())))) }/*)
=> false()
推荐阅读
- python - 损坏的蟒蛇环境'EnvironmentLocationNotFound'
- postgresql - 在 PostgreSQL 表中创建 2-way 关系
- php - Wordpress Custom_post slug 和 hurl
- discord.js - 如何使用 discord.js 记录自定义状态更新?
- visual-studio - 链接器错误:无法打开输入文件“d3dx9.lib”
- mysql - Docker MySQL 容器未正确绑定到本地端口
- python - 允许输入五个学生的分数但如何添加所有学生的分数的代码
- url-rewriting - xarray 追加或重写现有的 nc 文件
- javascript - 使用 cookie 存储客户端的次要细节是否比本地存储更好?
- javascript - 为什么是“|” 不适用于组合薮正正则表达式?