在XQueryexpression式中使用外部variables

我正在使用BaseX数据库服务器与Node.js应用程序。 该应用程序允许用户在由分隔符分隔的文本字段中input多个string。 然后这些多个string被查询到XML文件以search具有相同值的节点。 我不知道如何在XQuery中包含外部variablessplitstring 。 这是我的代码:

 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'; 

像这样的事情可以使用BaseX和XQuery来完成吗?

扩展Charles Duffy已经正确的build议,这里是一个例子来绑定完整的string,并在XQuery中标记它。 您绑定该值,并在XQuery中将该值定义为外部值。 在XQuery中拆分string只需使用fn:tokenize()

 // create query instance var inputquery = 'declare variable $string as xs:string external;' + 'for $node in doc("./tags.xml")/images/image where $node/tag=tokenize($string, "\s") return $node/source'; var query = session.query(inputquery); query.bind("string", string); query.results(log.print); query.close(); 

这绝对是支持的。 查看node.js BaseX库的testing套件 。

在查询的顶部:

 declare variable $variable_name external; 

在你的代码中:

 query.bind("variable_name", some_value); 
Interesting Posts