functions can return sequences to xcc.
try this as a simple example and build on
declare function module:test()
{
[ 1 to 10 ] , "HI" , <node/>
}
----------------------------------------
David A. Lee
Senior Principal Software Engineer
Epocrates, Inc.
[email protected]<mailto:[email protected]>
812-482-5224
From: [email protected]
[mailto:[email protected]] On Behalf Of Amar Wakkar
Sent: Tuesday, November 15, 2011 5:59 AM
To: [email protected]
Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
binary content
Yes it does in an .xqy page or in query console.
Now I am trying to get it to work inside XCC Java code but it does not work as
it is in AdhocQuery class.
Can we get multiple results out from a module which has this piece of code?
Function can return just single value so that may not work in this case?
Thanks
Amaresh Wakkar
> From: [email protected]
> To: [email protected]
> Date: Mon, 14 Nov 2011 14:25:05 -0800
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
> This works just fine for me on ML5:
>
> let$d :=
> xdmp:document-get("http://www.gotdogsonline.com/chinese-foo-dog-pictures-breeders-puppies-rescue/pictures-photos/chinese-foo-dog-0001.jpg")
> return
> xdmp:document-insert("/foo.jpg",$d);
> for $i in collection()
> return ($i/document-uri(.),$i)
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> [email protected]
> Sent: Monday, November 14, 2011 4:28 PM
> To: [email protected]
> Subject: General Digest, Vol 89, Issue 53
>
> Send General mailing list submissions to
> [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
> http://developer.marklogic.com/mailman/listinfo/general
> or, via email, send a message with subject or body 'help' to
> [email protected]
>
> You can reach the person managing the list at
> [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of General digest..."
>
>
> Today's Topics:
>
> 1. Re: Retrieving file name/document URI of binary content
> (Amar Wakkar)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 14 Nov 2011 21:27:39 +0000
> From: Amar Wakkar <[email protected]>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI
> of binary content
> To: <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
>
> Hello David,
> I tried but no joy...still giving same error about binary nodes not being
> allowed in element node.
> for $uri in collection("user10")/document-uri(.)return ( $uri , doc($uri) )
> Interestingly, when I created a collection of just text and xml contents both
> of your suggestions work so the issue is definitely with the binary data and
> the way it is queried/represented in Marklogic.
> It may sound a silly question, but when I stored a binary image in Marklogic
> collection along with a document-uri then should there not be some way e.g.
> Metadata about the resultset which should tell me what is the associated URI
> for this content when it was stored in Marklogic? It just happened to be a
> binary image file but should that matter as far as retrieving a document-uri
> is concerned? It is just a name used to store the data in database, if I can
> retrieve that name for an XML or TXT file then why not for Binary image?
> ThanksAmaresh Wakkar
> From: [email protected]
> To: [email protected]
> Date: Mon, 14 Nov 2011 21:09:36 +0000
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
>
>
>
>
>
>
>
>
>
>
> I still dont understand why this doesnt work:
>
> for $x in collection("user10")
> return
> ( fn:document-uri($x) , $x )
>
>
> But you can always try
>
>
> for $uri in
> collection("user10")/document-uri(.)
> return ( $uri , doc($uri) )
>
>
> ----------------------------------------
> David A. Lee
> Senior Principal Software Engineer
> Epocrates, Inc.
> [email protected]
> 812-482-5224
>
>
>
>
> From: [email protected]
> [mailto:[email protected]]
> On Behalf Of Amar Wakkar
>
> Sent: Monday, November 14, 2011 3:53 PM
>
> To: [email protected]
>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
>
>
>
>
> Thanks!!!
>
>
>
>
>
> The dot definitely made the difference.. I can now query the content and
> document-uri in separate queries, but it would have been great if I could
> just fetch them together in single query like other experts pointed out:
>
>
>
>
>
> More importantly, if I query these two separately, is there a guarantee that
> they will come in correct order everytime? I mean the image name at position
> 1 will always correspond to image-1 retrieved in a separate query for that
> collection?
>
>
>
>
>
> If it all was fetched in single query then these issues would not have come,
> is it not?
>
>
>
>
>
> Of course there is one way to do it i.e. a nested query. Get the file
> names/document-uris and then get the documents but that will be more than 2
> calls to Marklogic, I think.
>
>
>
>
>
> Thanks
>
>
>
>
>
> Amaresh
>
>
>
>
>
>
>
>
> From: [email protected]
>
> To: [email protected]
>
> Date: Mon, 14 Nov 2011 12:58:41 -0700
>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
>
> Try this:
>
>
>
> Request request = session.newAdhocQuery("
> collection('imageCollection')/document-uri(.) ");
>
>
>
> notice the dot in the document-uri() function
>
>
>
>
>
>
> From: [email protected]
>
> To: [email protected]
>
> Date: Mon, 14 Nov 2011 19:58:07 +0000
>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
> You can return them as pairs in a sequence
>
> for $x in collection("user10")
> return
> ( fn:document-uri($x) , $x )
>
> Not sure why the XCC code isnt returning the document-uri but it might not
> know it )
>
>
> ----------------------------------------
> David A. Lee
> Senior Principal Software Engineer
> Epocrates, Inc.
> [email protected]
> 812-482-5224
>
>
>
>
> From: [email protected]
> [mailto:[email protected]]
> On Behalf Of Amar Wakkar
>
> Sent: Monday, November 14, 2011 2:42 PM
>
> To: [email protected]
>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
>
>
>
> Hello David,
>
>
>
>
> No luck, I am getting following error when I try your suggestion:
>
>
>
>
>
>
> com.marklogic.xcc.exceptions.XQueryException: XDMP-TOOFEWARGS: (err:XPST0017)
> fn
>
>
> :document-uri() -- Too few args, expected 1 but got 0
>
>
> [Session: user=user, cb=XCCTestDB [ContentSource: user=user, cb=XCCTestDB
> [prov
>
>
> ider: address=localhost/127.0.0.1:8006, pool=1/64]]]
>
>
> [Client: XCC/4.2-7, Server: XDBC/5.0-1]
>
>
> in /eval, on line 1
>
>
> expr: fn:document-uri()
>
>
> at com.marklogic.xcc.impl.handlers.ServerExceptionHandler.handleResponse
>
>
> (ServerExceptionHandler.java:30)
>
>
> at com.marklogic.xcc.impl.handlers.EvalRequestController.serverDialog(Ev
>
>
> alRequestController.java:78)
>
>
> at com.marklogic.xcc.impl.handlers.AbstractRequestController.runRequest(
>
>
> AbstractRequestController.java:78)
>
>
> at com.marklogic.xcc.impl.SessionImpl.submitRequest(SessionImpl.java:268
>
>
> )
>
>
>
>
>
> Basically I want to be able to get images stored in Marklogic server back on
> a JSP page in an <img> tag. So far, I can get the html content upto
> the JSP page, however to render image, I want to be able to use the same name
> used while storing the image in Marklogic database e.g. image1,2,3 etc as
> document URI.
>
>
>
>
>
> I tried following in QConsole which works but there are two problems with it:
>
>
> for $x in collection("user10")
>
>
> return
>
>
> fn:document-uri($x)
>
>
>
>
>
> Problem:1 :
>
>
> It retrieves only the file names so I will have to write one query to get the
> content and other query to get the file names, that does not sound
> quite right.
>
>
>
>
>
> Problem:2:
>
>
> Even if problem-1 is not an issue, how do I get it to work from Java code?
> Should I copy these lines in a .xqy module/page and invoke it somehow
> from JSP?
>
>
>
>
>
>
>
>
> Is there any better way to get image and it's document-uri in one go from
> Marklogic. I stored them as binary instances when creating content. I am
> using Marklogic-5.
>
>
>
>
>
> Thanks
>
>
> Amaresh Wakkar
>
>
>
>
>
>
>
>
>
>
>
>
>
> From: [email protected]
>
> To: [email protected]
>
> Date: Mon, 14 Nov 2011 15:08:19 +0000
>
> Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of
> binary content
>
> Try this:
>
> Request request = session.newAdhocQuery("
> collection('imageCollection')/document-uri() ");
>
>
>
>
> ----------------------------------------
> David A. Lee
> Senior Principal Software Engineer
> Epocrates, Inc.
> [email protected]
> 812-482-5224
>
>
>
>
> From: [email protected]
> [mailto:[email protected]]
> On Behalf Of Amar Wakkar
>
> Sent: Monday, November 14, 2011 9:27 AM
>
> To: [email protected]
>
> Subject: [MarkLogic Dev General] Retrieving file name/document URI of binary
> content
>
>
>
>
> Dear all,
>
>
>
>
> I am learning ways of doing things in Marklogic server. I have managed to
> save a collection to Marklogic server which consists of few .gif images.
> The document URI's are the actual file names when I stored them in collection
> e.g. image1, image2 etc..The collection is named "imageCollection". I can
> query for "imageCollection" and it does return 3 images in result set.
> Unfortunately, I am unable to figure
> out how to get "file name" or Document URI of these images ?
>
>
>
>
>
>
>
>
>
> createOptions = ContentCreateOptions.newBinaryInstance();
>
>
>
> createOptions.setCollections(new String[]{"imageCollection"});
>
>
>
>
>
>
>
> createOptions.setFormatBinary();
>
>
>
>
>
>
> content = ContentFactory.newContent(someContent.getAttachmentsFileNames()[i],
> someContent.getAttachments()[i], createOptions);
>
>
> System.out.println("Inserting contents..");
>
>
> session.insertContent(content);
>
>
>
>
>
>
>
>
> The call to
>
>
>
>
>
>
> Request request = session.newAdhocQuery(" collection(\"imageCollection\") ");
>
>
>
>
>
>
>
> ResultSequence rs = session.submitRequest(request);
>
>
>
>
>
>
>
> while(rs.hasNext()){
>
>
>
> System.out.println("Inside contentDao 44444444");
>
>
>
>
>
>
> ResultItem item = rs.next();
>
>
>
>
>
>
>
>
> Following call returns null
>
>
> System.out.println(item.getDocumentURI());
>
>
>
>
>
> Please help me understand how to get the file names of the images so that I
> can use them to render back on screen.
>
>
>
>
>
>
>
>
> Thanks
>
>
> Amaresh Wakkar
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________ General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
>
>
>
>
> _______________________________________________ General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
>
>
> _______________________________________________ General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
>
>
>
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://developer.marklogic.com/pipermail/general/attachments/20111114/b2bc2223/attachment.html
>
> ------------------------------
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
> End of General Digest, Vol 89, Issue 53
> ***************************************
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general