To construct a document-node:
document { <test/> }
If you xdmp:describe that output you should see that there is a document-node
around the test element. As usual you can put any XQuery expression inside the
curly braces.
-- Mike
On 4 Apr 2013, at 10:43 , "Steiner, David J. (LNG-DAY)"
<[email protected]> wrote:
> Hi Charles,
>
> OK… I’ll get back to the binary bit – never tried to produce a PDF, so I’m
> not sure I’m clear on “wrap the binary output you want into a document node”.
>
> So, to get an idea of what’s happening, I changed the module to this:
> xquery version "1.0-ml";
>
> module namespace cpdf = "http://marklogic.com/rest-api/transform/createPDF";
>
> import module namespace jam = "http://xqdev.com/jam" at "jam.xqy";
> import module namespace jamu = "http://xqdev.com/jam-utils" at
> "jam-utils.xqy";
>
> declare function cpdf:transform(
> $context as map:map,
> $params as map:map,
> $content as document-node()
> ) as document-node()
> {
> if (fn:empty($content/*)) then $content
> else
> <doc>{
> jam:start("http://localhost:8080/mljam", "mljam", "secret"),
> jam:eval-get("1+1"),
> jam:end()
> }</doc>
> (:
> <doc>{
> (jam:start("http://ilabsmltest:8080/mljam/mljam", "mljam", "secret"),
> jamu:fop($content),
> jam:end())
> }</doc>
> :)
> };
>
> And this is the error from the error log:
> 2013-04-04 13:36:42.280 Info: DocumentsREST: <error:error
> xsi:schemaLocation="http://marklogic.com/xdmp/error error.xsd"
> xmlns:error="http://marklogic.com/xd
> mp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> 2013-04-04 13:36:42.280 Info: DocumentsREST:
> <error:code>XDMP-MODNOTFOUND</error:code>
> 2013-04-04 13:36:42.280 Info: DocumentsREST:
> <error:name>err:XQST0059</error:name>
> 2013-04-04 13:36:42.280 Info: DocumentsREST:
> <error:xquery-version>1.0-ml</error:xquery-version>
> 2013-04-04 13:36:42.280 Info: DocumentsREST: <error:message>Module not
> found</error:message>
> 2013-04-04 13:36:42.280 Info: DocumentsREST:
> <error:format-string>XDMP-MODNOTFOUND: (err:XQST0059) Module
> /marklogic.rest.transform/createPDF/lib/jam.xqy n
> ot found</error:format-string>…
>
> So, my newest question is: how do I properly specify the modules in the REST
> transform XQuery module (the jam.xqy and jam-utils.xqy which live in the
> modules DB for REST app server)?
>
> Thanks,
> David
>
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Charles Greer
> Sent: Thursday, April 04, 2013 1:00 PM
> To: [email protected]
> Subject: Re: [MarkLogic Dev General] Probably doing something stupid...
>
> Hi David,
>
> For a 500 error you should get a little more detail in the server logs, but
> one thing you mention is indeed wrong -- you need to return a document-node
> from the transform.
>
> It should be possible to wrap the binary output you want into a document node
> though.
>
> Charles
>
>
> constructor
> On 04/04/2013 07:32 AM, Steiner, David J. (LNG-DAY) wrote:
> Trying to do the following:
> curl --anyauth --user id:pass -X PUT -d@"./createPDF.xqy" -H "Content-type:
> application/xquery" 'http://ilabsmltest:8011/v1/config/transforms/createPDF'
>
> And getting the error:
> <rapi:error xmlns:rapi="http://marklogic.com/rest-api">
> <rapi:status-code>500</rapi:status-code>
> <rapi:status>INTERNAL ERROR</rapi:status>
> <rapi:message-code/>
> <rapi:message>500 Internal Server Error internal error</rapi:message>
> </rapi:error>
>
> The following works from QConsole:
> xquery version "1.0-ml";
> import module namespace jam = "http://xqdev.com/jam" at "jam.xqy";
> import module namespace jamu = "http://xqdev.com/jam-utils" at
> "jam-utils.xqy";
>
> let $xslfoDoc := [xsl-fo deleted]
> return
> (jam:start("http://ilabsmltest:8080/mljam/mljam", "mljam", "secret"),
> jamu:fop($xslfoDoc),
> jam:end())
>
> So, I'm trying to make a XQuery transformation module out of it :
> xquery version "1.0-ml";
>
> module namespace cpdf = "http://marklogic.com/rest-api/transform/createPDF";
>
> import module namespace jam = "http://xqdev.com/jam" at "jam.xqy";
> import module namespace jamu = "http://xqdev.com/jam-utils" at
> "jam-utils.xqy";
>
> declare function cpdf:transform(
> $context as map:map,
> $params as map:map,
> $content as document-node()
> ) as binary()
> {
> if (fn:empty($content/*)) then $content
> else
> (jam:start("http://ilabsmltest:8080/mljam/mljam", "mljam", "secret"),
> jamu:fop($content),
> jam:end())
> };
>
>
> I'm assuming that there's just something wrong with the imports... and/or
> namespacing...
> And not that I can't return a binary() instead of a document-node().
>
>
> Thanks,
> David
>
>
>
>
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
> --
> Charles Greer
> Senior Engineer
> MarkLogic Corporation
> [email protected]
> Phone: +1 707 408 3277
> www.marklogic.com
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general