[oXygen-user] eXist-db in <oXygen/>?

Joe Wicentowski joewiz at gmail.com
Sun Dec 29 16:35:37 CST 2019


Hi David,

Let me quote from Adam Retter's response to a similar question on
exist-open[^1]:

> The issue you have is that the Request object only makes sense when your
XQuery is run by eXist-db's webserver, this is because the "request" is the
incoming HTTP request. When running via oxygen there is no HTTP request.

The same factor affects other utilities that talk to eXist via XML-RPC,
such as the Java Admin Client.  makes sense, because the oXygen data source
connection that is responsible for executing eXist queries uses the XML-RPC
protocol.  See the attached screenshot.

In the same thread, Roy Walter suggested a workaround: using the
3-parameter variant of the request:get-parameter function, in which the 3rd
parameter instructs the function whether to fail on error or not.[^2]  If
you change your use of the function to:

```
request:get-parameter('story', 'x', false());
```

... then the function will return "x" when it otherwise would raise an
error.

Best,
Joe

[^1]: https://markmail.org/message/afds3uvbbouees7a
[^2]: https://markmail.org/message/offwjsqd46fcofqc

On Sun, Dec 29, 2019 at 10:58 AM David Birnbaum <djbpitt at gmail.com> wrote:

> Dear oxygen-user list,
>
> I've constructed an XQuery script for eXist-db that uses the function
> request:get-parameter(). It works as expected in eXide. I have established
> a data source connection between <oXygen/> (XML Editor 21.1, build
> 2019120214, running on MacOS Mojave) and eXist-db (5.0.0) running on
> localhost, and I can open, edit, and save XQuery scripts from inside
> eXist-db within <oXygen/>, from which I conclude that the connection is
> live. Since <oXygen/> apparently cannot use the eXist-db data source
> connection for debugging, instead of using the <oXygen/> XQuery debugger
> perspective to run the script I configured a transformation scenario where
> I specify the localhost eXist-db connection as the Transformer. When I run
> this script, I get the following error message from <oXygen/>:
>
> err:XPDY0002 Variable $request is not bound to an Java object
>
>
> The function is used in a line that reads:
>
> declare variable $story_id as xs:string := request:get-parameter('story',
> 'x');
>
>
> I thought at first that the error might be because the "request:"
> namespace prefix was not declared and bound (eXist-db declares it
> implicitly), so I added an explicit namespace declaration for it:
>
> declare namespace request="http://exist-db.org/xquery/request";
>
>
> The error remains. The entire XQuery script is below; it retrieves
> information from a TEI document, based on a user-supplied resource name, if
> the document exists and returns an error message otherwise.
>
> Can someone please help me identify what I have apparently misunderstood
> about running XQuery scripts in an <oXygen/> transformation scenario using
> eXist-db as the XQuery transformer?
>
> Sincerely,
>
> David
> djbpitt at gmail.com
> __
>
> xquery version "3.1";
> declare default element namespace "http://www.tei-c.org/ns/1.0";
> declare namespace request="http://exist-db.org/xquery/request";
> declare variable $stories as document-node()+ :=
> collection('/db/apps/neh_06_reading_tei/xml');
> declare variable $story_id as xs:string := request:get-parameter('story',
> 'x');
> declare variable $story_filename as xs:string: = concat($story_id, '.xml');
> declare variable $story as document-node()? :=
> $stories[ends-with(base-uri(), $story_filename)];
>
> if ($story) then
>     <TEI>{
>         $story//(titleStmt/title | text)
>     }</TEI>
> else
>     <error xmlns="">{concat('No such story:', $story_id)}</error>
>
> _______________________________________________
> oXygen-user mailing list
> oXygen-user at oxygenxml.com
> https://www.oxygenxml.com/mailman/listinfo/oxygen-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.oxygenxml.com/pipermail/oxygen-user/attachments/20191229/f80f0bf4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eXist-db Java admin client throws error when invoking HTTP request context.png
Type: image/png
Size: 119725 bytes
Desc: not available
URL: <http://www.oxygenxml.com/pipermail/oxygen-user/attachments/20191229/f80f0bf4/attachment-0001.png>


More information about the oXygen-user mailing list