Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在XQuery表达式中使用外部变量_Node.js_Xquery_Basex_Xml Database - Fatal编程技术网

Node.js 在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

我正在使用带有Node.js应用程序的BaseX数据库服务器。应用程序允许用户在文本字段中输入多个字符串,并用分隔符分隔。然后将这些多个字符串查询到XML文件,以搜索具有相同值的节点。我不知道如何在XQuery中包含外部变量
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函数引用是此类问题的起点。如果你寻找提到“拆分”的地方,你会在其中找到