加载多个XML文件(MarkLogic)

时间:2013-04-26 02:04:50

标签: xml xquery marklogic

我需要在许多文件中进行搜索,但不想在查询中写出它们的名称。就我而言,我需要查询每个具有完全不同名称的 500 XML文件。那么,有没有办法。

我可以说:

for $x in doc("ALL XML files under a specific directory")
return $x/Something

我正在使用UbuntuMarkLogic5

4 个答案:

答案 0 :(得分:7)

如果您的文档实际上位于“目录”中...(即它们的网址形式为“/a/b/c.xml”),那么您可以使用xdmp:directory()

http://docs.marklogic.com/xdmp:directory

for $x in xdmp:directory("/a/b/") 
return $x/something

答案 1 :(得分:1)

的Mads'如果通过"目录"答案是正确的。你的意思是Marklogic目录。如果您指的是文件系统路径,那么答案是在Marklogic处理文档之前,您需要将它们加载到数据库中。

要执行此操作,请查看ML计算机上的端口8000(localhost?)并选择"加载内容"该页面上的选项。这将允许您选择文件系统目录以从中加载文档。

通过更改"文档设置"在加载之前,您还可以选择将文件系统路径的多少(如果有)作为Markloic中docuemnt URI的一部分进行维护,并为所有加载的文档分配一个集合。我鼓励你做这两件事;一旦他们重新加载,他们将简化所有这些文件的引用(一旦你完成它们,就可以查询或删除。)

加载文档后,您可以使用xdmp:directory()fn:collection()或您喜欢的任何其他方法查询文档。

答案 2 :(得分:0)

如果用户具有正确的权限,您可以从Marklogic查看文件系统。您可以通过这种方式将数据加载到marklogic中,但不会以这种方式查询数据。

这是一个例子,可能会帮助你找到你想要的东西。

 declare namespace dir = "http://marklogic.com/xdmp/directory";

  for $file in xdmp:filesystem-directory("/home/user/desktop/xml/")/dir:entry

  return xdmp:filesystem-file($file/dir:filename) 

答案 3 :(得分:0)

要搜索特定目录中的文件,请查看cts:directory-query()和文档中的示例。

http://docs.marklogic.com/cts:directory-query