将变量从bash传递给XQuery

时间:2017-03-13 20:08:20

标签: xml bash xquery xqilla

我有一个bash脚本,它遍历多个目录并解析来自几个XML文件的数据。我正在使用XQilla来执行我的XQueries。

echo "---|Reading names|---"
../../xqilla .._name.fcs >> /var/lib/mysql-files/name.txt

这是XQuery:

for $fw in doc("./network_objects.xml")/network_objects/network_object
where $fw/interfaces/interfaces/ipaddr
return (data($fw/Name))

如何将变量从bash-script传递给XQuery,以便我可以搜索不同的项目,具体取决于cwd?

2 个答案:

答案 0 :(得分:2)

使用xqilla's -v option to pass an external variable(这是标准化的XQuery概念):

-v <name> <value> : Bind the name value pair as an external variable

在XQuery中,确保将该变量声明为外部。

例如,调用XQuery脚本传递值为$foo的{​​{1}}变量:

bar

通过在脚本的标题中声明它来使用此变量:

xqilla -v foo bar test.xq

答案 1 :(得分:0)

#!/bin/dash

echo "Alpha
Bravo
Charlie
Delta" |
while read name; do
    echo "/network_objects/network_object[Name='$name'][interfaces/interface/ipaddr]/Name/string()" |
        xqilla -i ./network_objects.xml /dev/stdin
done