首页 > 解决方案 > XQuery:从字符串(属性值)生成变量名

问题描述

我有一个运行我的 xquery 的框架,它包含一个 XML 配置文件,该文件将我可以在查询中使用的参数定义为变量,如下所示:

<text name="myVar" label="My Var"/>

这意味着用户将有一个对话框,其中包含一个名为“My Var”的字段,然后我可以像$myVar在查询中一样访问其值。我不知道变量是如何声明的,也无法访问运行我的查询的 XQuery 代码。

但我想以通用方式访问我的参数,例如遍历所有参数,检查是否为空,在 HTML 中创建一个带有标签和值的表。我确实可以访问 XML 配置文件。这意味着我必须访问

$(/config/text/@name)

(以上显然不起作用)。

这怎么可能?

标签: xquery

解决方案


好吧,变量名称$myVar只能静态定义,因此除非您从配置文件中找到的内容以编程方式实际生成查询的源代码,否则这是不可能的。

我想我在这里要做的是将参数作为地图传递:

declare variable $params as map(xs:string, item()*);
do-something-with($params('myVar'));

地图中的条目可以静态($params?myVar)或动态访问($params('myVar'))


推荐阅读