我想根据用户提供的参数执行动态组合(AND或)搜索。
搜索组合示例:
(
在上面的查询中,每个参数将查看它们的XPATH,例如(item/tigroup/title, item/isbn), XPATH不是用户提供的,我必须使用搜索组合
动态生成XPATH。如何动态地形成组合查询并将其传递给BaseX?
用户可以执行任何类型的AND或搜索,它们可以是多个AND或条件
任何建议都非常感谢
使用xquery:eval
,字符串可以作为XQuery表达式求值(更多示例请参阅文档):
declare variable $QUERY := 'text()';
db:open('db')//*[xquery:eval($QUERY, map { '': . })]
请注意,将任意字符串作为XQuery代码求值是非常危险的。如果字符串包含用户输入,则传递的恶意字符串可能会做意想不到的事情。在上面的例子中,恶意字符串可能是一个文件操作(例如,file:delete(.)
),或者一个运行很长时间并阻塞系统的查询。