在BaseX中对特定路径进行动态组合搜索



我想根据用户提供的参数执行动态组合(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(.)),或者一个运行很长时间并阻塞系统的查询。

最新更新