fusiondb-server icon indicating copy to clipboard operation
fusiondb-server copied to clipboard

Querying a document collection does not seem to return non-XML files

Open grantcv1 opened this issue 4 years ago • 2 comments

I'm running the Alpha 3 Docker instance.

I'm finding that I can't see the PDF files I have installed alongside my XML documents.

This had worked fine with eXist-db and I've changed nothing other that switch to the FusionDB instance.

My simplified xquery is:

xquery version "3.1"; declare namespace d="DAV:"; for $doc in collection('/repository/grantcv1')   return (     let $fileURI := base-uri($doc)     return <d:response xmlns:d="DAV:">       <d:href>{$fileURI}</d:href>     </d:response>   )   I get all the XML files, but nothing else. I used to get the complete list of files in the folder.

grantcv1 avatar Mar 05 '21 03:03 grantcv1

The behavior you see in eXist was true for eXist 5.2.0 and lower, but with https://github.com/eXist-db/exist/pull/3349, the next release of eXist will match the behavior you see in FusionDB. The change was to ensure fn:collection() function would return proper document-node() nodes (containing XML data, not binary data). As an alternative for your use case, consider xmldb:get-child-resources().

joewiz avatar Mar 05 '21 14:03 joewiz

Thanks @joewiz. @grantcv1 The change was made so that FusionDB (and eXist-db) become more compliant with the W3C XQuery specifications. There is some explanation and details in the issue that Joe referenced.

For returning a list of URI as your query above is shown, it is actually more efficient to use xmldb:get-child-resources as suggested by Joe.

I hope that helps? Let us know if you need any more support in this area.

adamretter avatar Mar 07 '21 10:03 adamretter