You maybe don't want to start by writing to a file.  You want to separate "did the query produce something sensical" and "does the file write do what I expect" as sources of error so you can't try to debug the wrong thing for a few hours.

return
(: file:write($output || $filename, :)
local:process-data($data)
(: ) :)

can be a remarkably useful construct until you like what you're seeing.  The BaseX GUI very sensibly truncates the output so you can't crush it.

-- Graydon

On Thu, Sep 6, 2018 at 11:32 AM Bridger Dyson-Smith <bdysonsmith@gmail.com> wrote:
Hi Marco -
Are you missing a separator ('\') in your $output variable, or in your `fn:concat($output, '\', 'marco.xml')`?

Here's a similar example that's working for me:
```
declare variable $data := (1, 2, 3, 4);
declare variable $output := '/home/bridger/';

declare function local:process-data(
  $seq as item()*
) as item()* {
  <test created="{fn:current-dateTime()}">
    {
      for $s in $data
      return(
        <item>{$s}</item>
      )
    }
  </test>
};

let $filename := "bridger.xml"
return
  file:write($output || $filename, local:process-data($data))
```

I hope this is helpful!
Best,
Bridger

On Thu, Sep 6, 2018 at 11:13 AM Marco Roling <marcoroling@hotmail.com> wrote:

Dear all,

I am new on the block here, and trying to find my way around BaseX, which seems to meet my needs for my research on digital museum collection data analysis.

I have a very large collection of xml files (> 600000 files) that I am querying, and I want to write the returned result immediately in a file. The following xquery (see below) is not working, which probably comes as no surprise to you all.

But to get me started, I would like to have a simple example that works. Any example would do.

Hope anyone can help me out with this.

Thanks very much, best, Marco.


=====

declare variable $data := collection(PRODRMCollectionItems);
declare variable $output := 'C:\DATAQUERY\BaseX\Q001\outputPROD';

(:This is where all the work is happening:)
declare function local:process-data ($nodes as item()*) as element (root) 
{
  <RMCollectionItemsDATA created="{current-dateTime()}">
  {
     for $a in $nodes//artObjectGetResponse/artObject[objectNumber eq 'NG-NM-1395-A']
       return
        <item>{$a}</item>
  }
  </RMCollectionItemsDATA>
};

(:here we store stuff:)
let $filename := concat($output, "marco.xml")
return
  file:write($filename, local:process-data($data))
=====