将XQuery与多个集合函数一起使用

时间:2013-01-08 13:58:13

标签: collections xquery

我使用以下XQuery查询文件集合:

for $files in collection("/data?select=*data*.xml")

目录中的每个文件都有一个特定的名称,这使我能够识别它。我使用它作为标识符,我检索如下:

let $file-id := tokenize(base-uri($files), "/")[last()]

$ file-id 变量遵循某种模式:abc-1234。前八个字符是相关的,所以我使用下面的变量获取它们:

let $file-link-id := substring($file-id, 1, 8)

现在,我有另一个文件集合,我想查询。这些文件在名称中遵循相同的模式,因为它们包含连接的信息。

如何使用 $ file-link-id 在第二个集合中选择正确的文件?

我认为我必须将它包含在第二个集合子句中,这与?select=$file-link-id.xml一致,但我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:1)

如果我在这里假设错误,也许你可以澄清你的问题陈述,因为你的问题似乎很容易解决(所以也许我误解了你的问题)。

所以你有正确的$file-link-id并希望将它用作字符串。如果你的xquery处理器支持XQuery 3.0,你可以使用两个管道,即

for $files in collection("/data?select=" || $file-link-id || ".xml")

如果没有,请使用string-join()

for $files in collection(string-join(("/data?select=", $file-link-id, ".xml"), ''))