Node.js 在XQuery表达式中使用外部变量
我正在使用带有Node.js应用程序的BaseX数据库服务器。应用程序允许用户在文本字段中输入多个字符串,并用分隔符分隔。然后将这些多个字符串查询到XML文件,以搜索具有相同值的节点。我不知道如何在XQuery中包含外部变量Node.js 在XQuery表达式中使用外部变量,node.js,xquery,basex,xml-database,Node.js,Xquery,Basex,Xml Database,我正在使用带有Node.js应用程序的BaseX数据库服务器。应用程序允许用户在文本字段中输入多个字符串,并用分隔符分隔。然后将这些多个字符串查询到XML文件,以搜索具有相同值的节点。我不知道如何在XQuery中包含外部变量splitstring。这是我的密码: exports.search = function(req, res){ var string = req.body.searchBox; string = string.toLowerCase(); var splitstring
splitstring
。这是我的密码:
exports.search = function(req, res){
var string = req.body.searchBox;
string = string.toLowerCase();
var splitstring = string.split(' ');
//console.log(splitstring);
var basex = require('basex');
var log = require("../node_modules/basex/debug");
// create session
var session = new basex.Session();
basex.debug_mode = false;
// create query instance
var inputquery = 'for $node in doc("./tags.xml")/images/image return $node/source';
var query = session.query(inputquery);
query.results(log.print);
// close query instance
query.close();
// close session
session.close();
我想实现如下内容:
var inputquery = 'for $node in doc("./tags.xml")/images/image where $node/tag=' + <one of the strings in splitstring> + ' return $node/source';
var-inputquery='用于文档中的$node(“./tags.xml”)/images/image,其中$node/tag='++'返回$node/source';
使用BaseX和XQuery可以完成类似的操作吗?这是绝对支持的。看 在查询的顶部:
declare variable $variable_name external;
在代码中:
query.bind("variable_name", some_value);
这是绝对支持的。看 在查询的顶部:
declare variable $variable_name external;
在代码中:
query.bind("variable_name", some_value);
在Charles Duffy已经正确建议的基础上进行扩展,下面是一个绑定完整字符串并在XQuery中标记它的示例。在XQuery中绑定该值并将该值定义为外部值。只需使用
fn:tokenize()
在Charles Duffy已经正确建议的基础上进行扩展,下面是一个绑定完整字符串并在XQuery中标记它的示例。在XQuery中绑定该值并将该值定义为外部值。只需使用
fn:tokenize()
谢谢但我需要变量来保存字符串值列表,然后对该列表执行查询(在列表上循环,匹配值并返回匹配的节点)。这可以实现吗?同样,XQuery本身也支持它,BaseX一般也支持它。node.js特定的数据库绑定是否支持它是另一个问题。@alasin…当然,您也可以将整个空格分隔的字符串传递进来,并将其拆分到XQuery中,从而对node.js绑定的功能提出疑问。您能告诉我这是如何完成的吗?或者将我重定向到描述语法或示例的链接?“我还没有找到这样的查询。@alasin,在中的XPath函数引用是此类问题的起点。如果你寻找提到“拆分”的地方,你会在其中找到谢谢!但我需要变量来保存字符串值列表,然后对该列表执行查询(在列表上循环,匹配值并返回匹配的节点)。这可以实现吗?同样,XQuery本身也支持它,BaseX一般也支持它。node.js特定的数据库绑定是否支持它是另一个问题。@alasin…当然,您也可以将整个空格分隔的字符串传递进来,并将其拆分到XQuery中,从而对node.js绑定的功能提出疑问。您能告诉我这是如何完成的吗?或者将我重定向到描述语法或示例的链接?“我还没有找到这样的查询。@alasin,在中的XPath函数引用是此类问题的起点。如果你寻找提到“拆分”的地方,你会在其中找到