0

是否可以将 xquery 文件 (.xq) 中的链接作为变量?

例如,我有以下链接,我需要将其转换为变量,以便可以将其与 for-contains 代码一起使用。

{ for $x in doc("myfile.xml")/portion/food
     return <li><a href="#link"></a>{data($x)}</li>}</ul>

{ for $y in doc("myfile.xml")/portion[contains(., <THIS IS WHERE THE LINK VARIABLE SHOULD GO>)]

我知道设置一个变量如下,但还没有能够将 2 放在一起使其工作

declare variable $hello := ("Hello World");
4

1 回答 1

0

您的问题结合了应该单独处理的不同点。如果我理解正确,您想在 Web 浏览器中显示查询结果,并且您想在创建结果页面在用户交互时操作它的 DOM。我认为第一部分(在浏览器中显示)不是问题

由于浏览器只显示序列化到文件中的查询结果(与简单的文本编辑器一样),因此浏览器和 XQuery 引擎之间基本上没有“联系”或“通信”,可以重新评估任何用户相互作用。因此,您的问题基本上是询问如何创建这种基于自定义参数重新评估 XQuery 的方式。

eXist-db的文档有一个有趣但简单的示例,一个数字猜谜游戏,需要服务器端评估用户输入并在每次猜测时修改页面内容。它完全在 XQuery 中实现,使用 eXist-dbs 的会话处理和XQuery Servlet功能。

根据您的需要调整数字猜测示例应该很容易。您甚至不需要跟踪猜测计数,因此不需要在服务器上创建会话。将所选项目与请求一起发送就足够了id(如示例所示,使用纯 HTML 表单使用猜测的数字),并使用 XQuery 函数评估该请求属性。在示例中,该local:guess函数负责此任务,它还创建适当的 HTML 输出。

这样的解决方案取决于 XQuery 引擎的功能。也许使用 Javascript 可以实现“独立”解决方案,但这似乎超出了问题的范围。

于 2012-05-07T08:44:38.717 回答