It looks to me like $content/* got you one step closer to success. Look at your 
qconsole query again: $xslfoDoc is an element(fo:root). But $content is a 
document-node. The difference is that pesky document-node, so you need 
something like $content/* for that function call argument.

The new error seems to be completely different. MLJAM seems to expect something 
in the input, but the input ends before it appears. Unhelpfully, MLJAM isn't 
specific about the problem and RAPI doesn't know how to handle the resulting 
error message.

But my guess is that $xslfoDoc and $content/* are subtly different. The 
namespaces *look* right from here, but they might not be. Or there could be 
something different about the structure of the XML.

I'm not sure how to debug that, but I would start with 
xdmp:log(xdmp:quote($content/*)) in the transform function. Maybe that will 
help to spot the difference. Maybe you can get MLJAM to do more debugging, too?

-- Mike

On 5 Apr 2013, at 12:52 , "Steiner, David J. (LNG-DAY)" 
<[email protected]> wrote:

> I don't think so - $content/* gives a different error when I run it - nothing 
> in the error log, but this in the browser window:
> <rapi:error>
>       <rapi:status-code>400</rapi:status-code>
>       <rapi:status>Bad Request</rapi:status>
>       <rapi:message-code>XDMP-ARGTYPE</rapi:message-code>
>       <rapi:message>XDMP-ARGTYPE: (err:XPTY0004) 
> fn:error("bsh.ParseException: Parse error at line 1, column 637.  
> Encounte...") -- arg1 is not of type xs:QName?</rapi:message>
> </rapi:error>
> 
> And a java error in the MLJAM log:
> Parse error at line 1, column 637.  Encountered: <EOF>
>        at bsh.Parser.generateParseException(Unknown Source)
>        at bsh.Parser.jj_consume_token(Unknown Source)
>        at bsh.Parser.Block(Unknown Source)
>        at bsh.Parser.Statement(Unknown Source)
>        at bsh.Parser.BlockStatement(Unknown Source)
>        at bsh.Parser.Line(Unknown Source)
>        at bsh.Interpreter.Line(Unknown Source)
>        at bsh.Interpreter.eval(Unknown Source)
>        at bsh.Interpreter.eval(Unknown Source)
>        at bsh.Interpreter.eval(Unknown Source)
>        at com.xqdev.jam.MLJAM.doPost(MLJAM.java:301)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>        at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
>        at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
>        at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>        at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
>        at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>        at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>        at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>        at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>        at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>        at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>        at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>        at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
>        at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>        at org.eclipse.jetty.server.Server.handle(Server.java:368)
>        at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>        at 
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:953)
>        at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014)
>        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
>        at 
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
>        at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>        at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
>        at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
>        at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>        at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>        at java.lang.Thread.run(Unknown Source)
> 
> 
> Note that I can run the following from QConsole and open the output file in a 
> browser just fine:
> 
> xquery version "1.0-ml";
> 
> import module namespace cpdf = 
> "http://marklogic.com/rest-api/transform/createPDF"; at "createPDF.xqy";
> 
> let $pdf :=
> let $xslfoDoc :=  
> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"; 
> xmlns:lncr="http://www.lexis-nexis.com/lncr"; 
> xmlns:caseinfo="http://www.lexisnexis.com/xmlschemas/content/legal/case-information/1/";
>  
> xmlns:casesum="http://www.lexisnexis.com/xmlschemas/content/legal/case-summary/1/";>
>  <fo:layout-master-set>
>    <fo:simple-page-master master-name="LetterPage" page-width="8.5in" 
> page-height="11in">
>      <fo:region-body region-name="PageBody" margin="0.7in"/>
>      <fo:region-before region-name="PageHeader" margin="0.7in"/>
>      <fo:region-after region-name="PageFooter" margin="0.7in"/>
>    </fo:simple-page-master>
>  </fo:layout-master-set>
>  <fo:page-sequence master-reference="LetterPage">
>    <fo:flow flow-name="PageBody">
>      <fo:block>Full Casename:                      </fo:block>
>      <fo:block>Posture:                      </fo:block>
>      <fo:block>Cite Overview:                      </fo:block>
>      <fo:block>Overview:                      </fo:block>
>      <fo:block>Outcome:                      </fo:block>
>      <fo:block>Disposition:                      </fo:block>
>      <fo:block>Decision Summary:                       </fo:block>
>    </fo:flow>
>  </fo:page-sequence>
> </fo:root> return
> document {
> (cpdf:start("http://ilabsmltest:8080/mljam/mljam";, "mljam", "secret"),
> cpdf:fop($xslfoDoc),
> cpdf:end())
> }
> return
> xdmp:save("/tmp/example.pdf", $pdf)
> 
> 
> Now, what I've placed in $xslfoDoc above is exactly what I get out of (the 
> default transformation, which is done by XSLT):
> http://localhost:8011/v1/documents?uri=/lnc/7XKV-KRG0-YB0V-9128-00000-00.xml
> 
> Then, when I run it with the PDF transformation added on:
> http://localhost:8011/v1/documents?uri=/lnc/7XKV-KRG0-YB0V-9128-00000-00.xml&transform=createPDF
> 
> I get the invalid coercion:
> <rapi:error>
>       <rapi:status-code>500</rapi:status-code>
>       <rapi:status>INTERNAL ERROR</rapi:status>
>       <rapi:message-code>XDMP-AS</rapi:message-code>
>       <rapi:message>XDMP-AS: (err:XPTY0004) $xslfo as element() -- Invalid 
> coercion: document{<fo:root 
> xmlns:casesum="http://www.lexisnexis.com/xmlschemas/content/legal/case-summary/...";
>  
> xmlns:caseinfo="http://www.lexisnexis.com/xmlschemas/content/legal/case-informat...";
>  xmlns:lncr="http://www.lexis-nexis.com/lncr"; 
> xmlns:fo="http://www.w3.org/1999/XSL/Format";><fo:layout-master-set><fo:simple-page-master
>  master-name="Letter...</fo:root>} as element().  See the MarkLogic server 
> error log for further detail.</rapi:message>
> </rapi:error>
> 
> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Michael Blakeley
> Sent: Friday, April 05, 2013 3:33 PM
> To: MarkLogic Developer Discussion
> Subject: Re: [MarkLogic Dev General] Probably doing something stupid... - 
> using modules in REST transform
> 
> It looks like there's a transform() function that's expecting an $xslfo to be 
> an element, but is getting a document-node. I don't see an $xslfo in the code 
> you supplied, but maybe cpdf:fop($content) needs to be cpdf:fop($content/*) 
> instead?
> 
> XDMP-AS: (err:XPTY0004) $xslfo as element() -- Invalid coercion: 
> document{&lt;fo:root xml 
> ns:casesum="http://www.lexisnexis.com/xmlschemas/content/legal/case-summary/...";
>  xmlns:caseinfo="http://www.lexisnexis.com/xmlschemas/content/legal/case-info
> rmat..." xmlns:lncr="http://www.lexis-nexis.com/lncr"; 
> xmlns:fo="http://www.w3.org/1999/XSL/Format"&gt;&lt;fo:layout-master-set&gt;&lt;fo:simple-page-master
>  master-name="Letter...&lt;/fo:root&gt;} as element()
> 
> 2013-04-05 14:35:49.504 Info: DocumentsREST:   <error:stack>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:     <error:frame>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:       
> <error:uri>/marklogic.rest.transform/createPDF/lib/transform.xqy</error:uri>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:       <error:line>1</error:line>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:       
> <error:column>12178</error:column>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:       
> <error:operation>xdmp:function(fn:QName("http://marklogic.com/rest-api/transform/createPDF";,
>  "transform"))
> (map:map(&lt;map:map xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:map="http://marklogic.com/xdmp/map"&gt;&lt;map:entry 
> key="input-type"&gt;&lt;map:value 
> xsi:type="xs:string"&gt;text...&lt;/map:map&gt;), map:map(), 
> document{&lt;fo:root 
> xmlns:casesum="http://www.lexisnexis.com/xmlschemas/content/legal/case-summary/...";
>  
> xmlns:caseinfo="http://www.lexisnexis.com/xmlschemas/content/legal/case-informat...";
>  xmlns:ln cr="http://www.lexis-nexis.com/lncr"; 
> xmlns:fo="http://www.w3.org/1999/XSL/Format"&gt;&lt;fo:layout-master-set&gt;&lt;fo:simple-page-master
>  master-name="Letter...&lt;/fo:root&gt;})</error:operation>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:       
> <error:xquery-version>1.0-ml</error:xquery-version>
> 2013-04-05 14:35:49.504 Info: DocumentsREST:     </error:frame>
> 
> -- Mike
> 
> On 5 Apr 2013, at 11:54 , "Steiner, David J. (LNG-DAY)" 
> <[email protected]> wrote:
> 
>> OK, so I've gone the painstaking other way and that is to include all 
>> functions from the two libraries into one module.
>> So, the transform actually loads now.
>> 
>> However, when I try to run it, I get a new error: Invalid coercion.
>> 2013-04-05 14:35:49.504 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-05 14:35:49.504 Info: DocumentsREST:   
>> <error:code>XDMP-AS</error:code>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   
>> <error:name>err:XPTY0004</error:name>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   
>> <error:xquery-version>1.0-ml</error:xquery-version>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   <error:message>Invalid 
>> coercion</error:message>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   <error:format-string>XDMP-AS: 
>> (err:XPTY0004) $xslfo as element() -- Invalid coercion: document{&lt;fo:root 
>> xml
>> ns:casesum="http://www.lexisnexis.com/xmlschemas/content/legal/case-su
>> mmary/..." 
>> xmlns:caseinfo="http://www.lexisnexis.com/xmlschemas/content/legal/cas
>> e-info rmat..." xmlns:lncr="http://www.lexis-nexis.com/lncr"; 
>> xmlns:fo="http://www.w3.org/1999/XSL/Format"&gt;&lt;fo:layout-master-s
>> et&gt;&lt;fo:simple-page-master m aster-name="Letter...&lt;/fo:root&gt;} as 
>> element()</error:format-string>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   
>> <error:retryable>false</error:retryable>
>> 2013-04-05 14:35:49.504 Info: DocumentsREST:   <error:expr>$xslfo as 
>> element()</error:expr>
>> ...
>> Full error message attached.
>> 
>> 
>> This is my transform function:
>> 
>> 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
>>    (document {
>> (cpdf:start("http://ilabsmltest:8080/mljam/mljam";, "mljam", "secret"), 
>> cpdf:fop($content),
>> cpdf:end())
>>     })
>> };
>> 
>> 
>> So, maybe I just don't know enough about putting out a PDF in a web 
>> Browser...
>> 
>> I simply want to call this (my default transformation converts XML to 
>> XSL-FO, then the transform converts XSL-FO to PDF):
>> http://localhost:8011/v1/documents?uri=/document.xml&transform=createP
>> DF
>> 
>> And have a PDF open in a viewer...
>> Note: I am not a web app developer, so please forgive me if this is an 
>> obvious answer...
>> 
>> This (the steps in the function above - cpdf:fop) seems to work in QConsole, 
>> as I've said - I get a bunch of "stuff" in the window that looks like this:
>> %PDF-1.4
>> %    
>> 4 0 obj
>> <<
>> /Producer (Apache FOP Version 0.93)
>> /CreationDate (D:20130405143221-04'0-480')
>>>> 
>> endobj
>> 5 0 obj
>> << /N 3
>> /Length 10 0 R
>> /Filter /FlateDecode
>>>> 
>> stream
>> x   wTS  Ͻ7 P    khRH...
>> 
>> So I was just assuming that if I could get it to come out in a browser that 
>> it'd come out as a PDF.
>> 
>> Do I have to do something like change the MIME type of the response somehow?
>> 
>> Thanks,
>> David
>> 
>> 
>> -----Original Message-----
>> From: [email protected] 
>> [mailto:[email protected]] On Behalf Of Steiner, 
>> David J. (LNG-DAY)
>> Sent: Friday, April 05, 2013 9:16 AM
>> To: [email protected]
>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>> stupid... - using modules in REST transform
>> 
>> Hi Charles and Erik (combined responses),
>> 
>> That's correct, I've added it to the REST instance's modules DB.
>> 
>> These are the permissions I have on the library modules (jam.xqy and 
>> jam-utils.xqy):
>> <perms>
>> <perm>
>>   <role>app-builder</role>
>>   <cap>update</cap>
>> </perm>
>> <perm>
>>   <role>app-user</role>
>>   <cap>execute</cap>
>> </perm>
>> <perm>
>>   <role>app-user</role>
>>   <cap>read</cap>
>> </perm>
>> <perm>
>>   <role>rest-reader</role>
>>   <cap>execute</cap>
>> </perm>
>> <perm>
>>   <role>rest-reader</role>
>>   <cap>read</cap>
>> </perm>
>> <perm>
>>   <role>rest-writer</role>
>>   <cap>update</cap>
>> </perm>
>> <perm>
>>   <role>rest-writer</role>
>>   <cap>insert</cap>
>> </perm>
>> <perm>
>>   <role>application-plugin-registrar</role>
>>   <cap>read</cap>
>> </perm>
>> <perm>
>>   <role>application-plugin-registrar</role>
>>   <cap>execute</cap>
>> </perm>
>> </perms>
>> 
>> And I still get the ERROR when using:  curl --anyauth --user admin:admin -X 
>> PUT -d@"/home/tpf106/davids/xquery/createPDF.xqy" -H "Content-type: 
>> application/xquery" 'http://ilabsmltest:8011/v1/config/transforms/createPDF'
>> (I'm using 6.0-1.1)
>> 
>> David
>> 
>> -----Original Message-----
>> From: [email protected] 
>> [mailto:[email protected]] On Behalf Of Erik 
>> Hennum
>> Sent: Thursday, April 04, 2013 8:17 PM
>> To: MarkLogic Developer Discussion
>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>> stupid... - using modules in REST transform
>> 
>> Hi, David:
>> 
>> The description sounds like a known 6.0-2 bug that occurs when a transform 
>> or resource service extension imports a module database library that, in 
>> turn, contains an import.  
>> 
>> The workaround is either to put all of the imports in the extension (when 
>> possible) or to grant execute permission on the module database libraries to 
>> both the rest-reader and application-plugin-registrar roles.
>> 
>> 6.0-3 should provide a fix for this bug.
>> 
>> There is, however, a related bug that won't be fixed in 6.0-3.  If a 
>> dependency library in the module database is updated, the extension will 
>> continue to use the old version.  The workaround is to update the extension 
>> any time a dependency in the module database is updated.
>> 
>> 
>> Hoping that helps,
>> 
>> 
>> Erik Hennum
>> 
>> -----Original Message-----
>> From: [email protected] 
>> [mailto:[email protected]] On Behalf Of Charles 
>> Greer
>> Sent: Thursday, April 04, 2013 6:50 PM
>> To: [email protected]
>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>> stupid... - using modules in REST transform
>> 
>> Hi David,
>> 
>> You're hitting a limitation of the REST API in its first incarnation.  
>> Early access for ML7 is out, and we've addressed this particular concern by 
>> providing an endpoint to put your own libraries in the REST instance's 
>> modules database with the right permissions and all.
>> 
>> It looks like you did this by hand -- the jam libs are in your REST 
>> instance's modules database, right?  In that case, it might be that 
>> you just need to make them executable by rest-reader role, and also 
>> make sure they're stored as text (as opposed to binary)
>> 
>> Hope that helps,
>> 
>> Charles
>> 
>> On 04/04/2013 12:55 PM, Steiner, David J. (LNG-DAY) wrote:
>>> It works from QC whether I use any of these:
>>> import module namespace jam = "http://xqdev.com/jam"; at "jam.xqy"; 
>>> import module namespace jam = "http://xqdev.com/jam"; at "/jam.xqy"; 
>>> import module namespace jam = "http://xqdev.com/jam"; at "
>>> /marklogic.rest.transform/createPDF/lib/jam.xqy";
>>> 
>>> 
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]] On Behalf Of 
>>> Steiner, David J. (LNG-DAY)
>>> Sent: Thursday, April 04, 2013 3:46 PM
>>> To: 'MarkLogic Developer Discussion'
>>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>>> stupid... - using modules in REST transform
>>> 
>>> OK.  I've got the syntax error worked out - it was in the module here, not 
>>> in the jam(s).
>>> 
>>> So, this works:
>>> 
>>> xquery version "1.0-ml";
>>> 
>>> module namespace cpdf =
>>> "http://marklogic.com/rest-api/transform/createPDF";;
>>> 
>>> 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
>>>     (document {
>>> <doc/>
>>>      })
>>> };
>>> 
>>> And I can do this successfully:
>>> http://localhost:8011/v1/documents?uri=/lnc/7XKV-KRG0-YB0V-9128-00000
>>> -
>>> 00.xml&transform=createPDF
>>> 
>>> 
>>> Now, as soon as I add the imports back in, I get the Module Not Found error 
>>> message:
>>> 
>>> 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
>>>     (document {
>>> <doc/>
>>>      })
>>> };
>>> 
>>> The log is attached.
>>> 
>>> I also tried with the libraries referenced explicitely:
>>> /jam.xqy
>>> /jam-utils.xqy
>>> And
>>> /marklogic.rest.transform/createPDF/lib/jam.xqy
>>> /marklogic.rest.transform/createPDF/lib/jam-utils.xqy
>>> 
>>> They live in both places.
>>> 
>>> David
>>> 
>>> 
>>> 
>>> -----Original Message-----
>>> From: Steiner, David J. (LNG-DAY)
>>> Sent: Thursday, April 04, 2013 3:04 PM
>>> To: MarkLogic Developer Discussion
>>> Subject: RE: [MarkLogic Dev General] Probably doing something 
>>> stupid... - using modules in REST transform
>>> 
>>> Yeah, but the exact same library works just fine when I use it from Query 
>>> Console (see original note).
>>> 
>>> Also, there are no error messages produced in the error log.
>>> The only error messages I have are those returned in the rapi:error.
>>> 
>>> I'm not sure why it would work in QC and not here...
>>> 
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]] On Behalf Of Michael 
>>> Blakeley
>>> Sent: Thursday, April 04, 2013 3:01 PM
>>> To: MarkLogic Developer Discussion
>>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>>> stupid... - using modules in REST transform
>>> 
>>> I think the library *is* accessible, because that looks like a syntax error 
>>> inside the library.
>>> 
>>>> XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, 
>>>> unexpected QName_, expecting Else_
>>> It would be nice to have the rest of the error stack so you had the line 
>>> number, but that's the kind of error you might get from misspelling 'else' 
>>> or leaving it out.
>>> 
>>>    if (false()) then 'foo' esle 'bar'
>>>    =>
>>>    XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, 
>>> unexpected QName_, expecting Else_
>>> 
>>> -- Mike
>>> 
>>> On 4 Apr 2013, at 11:45 , "Steiner, David J. (LNG-DAY)" 
>>> <[email protected]> wrote:
>>> 
>>>> Got it...  That was easy...  Thanks Mike!
>>>> 
>>>> However, I still need would need to access these jam libraries that I have 
>>>> in the modules DB.
>>>> 
>>>> Is the answer just to put them in 
>>>> "/marklogic.rest.transform/createPDF/lib/"?
>>>> 
>>>> If so, where's that in the documentation on creating the XQuery 
>>>> Transformations in the REST API?
>>>> 
>>>> If not, am I attempting something that's not possible?
>>>> 
>>>> So, instead of just asking, I tried simply loading the modules to 
>>>> "/marklogic.rest.transform/createPDF/lib/" instead of just "/".
>>>> 
>>>> I now get a new error:
>>>> <rapi:error xmlns:rapi="http://marklogic.com/rest-api";>
>>>>    <rapi:status-code>400</rapi:status-code>
>>>>    <rapi:status>Bad Request</rapi:status>
>>>>    <rapi:message-code>RESTAPI-INVALIDCONTENT</rapi:message-code>
>>>>    <rapi:message>RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content:
>>>> library for createPDF has errors - XDMP-UNEXPECTED: (err:XPST0003) 
>>>> Unexpected token syntax error, unexpected QName_, expecting 
>>>> Else_</rapi:message> </rapi:error>
>>>> 
>>>> Thus, I'm still stuck with not being able to access these libraries...
>>>> 
>>>> -----Original Message-----
>>>> From: [email protected]
>>>> [mailto:[email protected]] On Behalf Of 
>>>> Michael Blakeley
>>>> Sent: Thursday, April 04, 2013 2:23 PM
>>>> To: MarkLogic Developer Discussion
>>>> Subject: Re: [MarkLogic Dev General] Probably doing something 
>>>> stupid... - using modules in REST transform
>>>> 
>>>> 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
>>>> _______________________________________________
>>>> 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
>> 
>> --
>> 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
>> <mlErrorInvalidCoercion.txt>__________________________________________
>> _____
>> 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

Reply via email to