簡體   English   中英

在XQuery表達式中使用外部變量

[英]Using outer variables in an XQuery expression

我正在使用帶有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';

可以使用BaseX和XQuery完成類似的事情嗎?

絕對支持。 請參閱針對node.js BaseX庫的測試套件

在查詢的頂部:

declare variable $variable_name external;

在您的代碼中:

query.bind("variable_name", some_value);

擴展Charles Duffy已經正確建議的內容,這是一個綁定完整字符串並在XQuery中將其標記化的示例。 您綁定值,並將值定義為XQuery中的外部值。 只需使用fn:tokenize()在XQuery中拆分字符串即可

// 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM