You're very close, Tim. But as you've found out, a direct element constructor "<binary>..." just creates an element named binary, not a binary node. That's legal XQuery, but not very helpful.

Instead, I believe you want the computed constructor for a binary node (aka "binary node constructor"). This is a MarkLogic Server extension, because the XQuery 1.0 data model doesn't include the concept of a binary node.

Anyway, in either 0.9-ml or 1.0-ml you can write:

  binary { $content }

Note that the binary node constructor can also handle xs:base64Binary directly:

  binary { xs:base64Binary("ABCD") }

You can read more about binary constructors and other XQuery enhancements in the XQuery Reference Guide: http://developer.marklogic.com/pubs/4.1/books/xquery.pdf

-- Mike

On 2009-07-26 08:15, Tim Frosh wrote:

Hi all,

I am trying to upload files (binary and other) to database but need your help.
Using html forms and xdmp:get-request-field together with xdmp:document-insert 
I succeed.
But I had not the same result using xforms. In xform, the binary data is store 
in xml instance within an base64Binary element.
On the server side I decoded data and try to store like this:

let $contentToStore := xs:hexBinary(xs:base64Binary($contentEncoded))
let $work := xdmp:document-insert($doc, $contentToStore )

but get error $contentToStore is not a node. If I try to create an node using 
the data as
let $contentToStore2 :=<binary>  {$contentToStore}</binary>  the data is stored 
as text BUT not binary.

The function document-insert doesn't have options for setting data format. The 
documentation says that the root element of the node defines the data format 
but I couldn't find any example how to set that.

How can I create a binary node from the hexBinary data ? Or is there another 
way for uploading files from xforms and base64Binary encoded data?

Any help is appreciated.




_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to