Xquery:将链接转换为变量

时间:2012-05-05 00:25:15

标签: xquery

是否可以在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");

1 个答案:

答案 0 :(得分:0)

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

由于浏览器只显示序列化到文件中的查询结果(与简单文本编辑器一样),因此基本上没有&#34;联系人&#34;或者&#34;沟通&#34;浏览器和XQuery引擎之间允许重新评估任何用户交互。所以,你的问题基本上是问如何创建这种基于自定义参数重新评估XQuery的方法。

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

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

这样的解决方案取决于XQuery引擎的功能。也许是一个独立的&#34;解决方案可以使用Javascript,但这似乎超出了问题的范围。