Hi Murray,

I only replied to the list, not to you personally, on the assumption that you 
are subscribed to the list.

https://mailman.uni-konstanz.de/pipermail/basex-talk/2024-January/018275.html

Gerrit

On 29.01.2024 19:39, Murray, Gregory wrote:
Hi Andy,

I didn’t receive a reply from anyone named Gerrit, but I will watch for it. 
Meanwhile, thank you for your suggestion. I made the change you indicated, but 
unfortunately I’m still seeing the same behavior.

Thanks,

Greg

*From: *Andy Bunce <bunce.a...@gmail.com>
*Date: *Monday, January 29, 2024 at 11:51 AM
*To: *Murray, Gregory <gregory.mur...@ptsem.edu>
*Cc: *basex-talk@mailman.uni-konstanz.de <basex-talk@mailman.uni-konstanz.de>
*Subject: *Re: [basex-talk] RESTXQ oddity?

        

You don't often get email from bunce.a...@gmail.com. Learn why this is important 
<https://aka.ms/LearnAboutSenderIdentification>

        

In addition to Gerrit's comments...

This line jumped out as problematic  to me.

%rest:path('theocom/static/{$dir=.+}/{$file=.+}')

The pattern =.+ matches the rest of the path. You only need this once at the 
end of the path.

Maybe just:

%rest:path('theocom/static/{$dir}/{$file=.+}')

/Andy

On Mon, 29 Jan 2024 at 14:49, Murray, Gregory <gregory.mur...@ptsem.edu 
<mailto:gregory.mur...@ptsem.edu>> wrote:

    Hello,

    I’m trying to build my first BaseX web application. I’ve got a RESTXQ 
function for returning static files to the browser, and other RESTXQ functions 
corresponding to URLs in the web application. The function for static files is 
based on the one in DBA:

    (:~ Returns the specified static file to the browser as binary data. :)

    declare

       %rest:GET

       %rest:path('theocom/static/{$dir=.+}/{$file=.+}')

    function c:file($dir as xs:string, $file  as xs:string)

    {

       let $path := file:base-dir() || 'static/' || $dir || '/' || $file

       return

         (

           web:response-header(

             map { 'media-type': web:content-type($path) },

             map { 'Content-Length': file:size($path) }

           ),

           file:read-binary($path)

         )

    };

    Another function returns the home page for the web application. That page 
works just fine. The HTML document gets returned to the browser, and the static 
CSS and image files are sent to the browser successfully.

    (:~ Returns the home page for the entire web application. :)

    declare

       %rest:GET

       %rest:path('theocom')

       %output:method('html')

       %output:html-version('5')

    function c:home()

    {

       let $params := c:http-params()

       return

         (

           c:extra-response-headers(),

           home:get-home-page($params)

         )

    };

    I have another RESTXQ function that corresponds to a URL that goes deeper 
into the web application:

    (:~ Returns a page listing contributors (libraries whose content we've 
imported), for browsing. :)
    declare
       %rest:GET
       %rest:path('theocom/contributors/{$alpha=[a-z]}')
       %output:method('html')
       %output:html-version('5')
    function /c:browse-contributors/($alpha as xs:string)
    {
       let $params :=
    /map:merge/(
           (
    /map:entry/("browse", "contributor"),
    /map:entry/("alpha", /upper-case/($alpha)),
    /c:http-params/()
           )
         )
       return
         (
    /c:extra-response-headers/(),
    /browse:contributors/($params)
         )
    };

    The problem I’m having is that on this page, the browser returns 404 for the 
static files, even though the code for the HTML <head> where the CSS files are 
linked is identical to the home page. Am I doing something wrong, or is the BaseX 
RESTXQ implementation doing something unexpected?

    Thanks,

    Greg

    Gregory Murray

    Director of Digital Initiatives

    Wright Library

    Princeton Theological Seminary


--
Gerrit Imsieke
Geschäftsführer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax +49 341 355356 510
gerrit.imsi...@le-tex.de, http://www.le-tex.de

Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer / Registration Number: HRB 24930

Geschäftsführer / Managing Directors:
Gerrit Imsieke, Svea Jelonek, Thomas Schmidt

Reply via email to