Re: library package – load stylesheet s into XQuery?

Jean-Paul Rehr <[email protected]> Mon, 24 Jun 2024 13:12:52 +0200
Newsgroups gmane.text.xml.exist
Message-ID <CALcdGbzsLKjXTS=gyA+yHBFzZi3OY6ZHUBAPdZmr4rQrvNsdOQ@mail.gmail.com>
Dear Julian, understood.

>Perhaps there is a programmatic way to obtain the current package base
path (/db/system/repo/cmiferator-0.0.3) and use that for loading
the stylesheet.

You can dynamically get the path of the module from
system:get-module-load-path()
and parse the path into the string needed to build your resource path for
the XLST file.

Best,
JPR



On Mon, Jun 24, 2024 at 12:01 PM Julian Jarosch <[email protected]>
wrote:

> Dear Jean-Paul,
>
> Thanks! Yes and no – yes, a library module, but within a package that is
> exclusively declared as a library. See the table with types of packages in
> this section: https://exist-db.org/exist/apps/doc/repo#sect-repoxml
>
> “Library package” with type = library and *no target specified* was what
> I was going for, so far.
>
> This means that the package is not deployed into the /db/apps collection.
> Instead it lives in /db/system/repo. Its collection name includes the
> version number. Currently the full path would be
> /db/system/repo/cmiferator-0.0.3/content/CMIF-base.xsl, but this will
> obviously change with the version number.
>
> Perhaps there is a programmatic way to obtain the current package base
> path (/db/system/repo/cmiferator-0.0.3) and use that for loading the
> stylesheet.
>
> Otherwise, I take your point and will consider setting a target where to
> deploy the package within the database (/db/apps/cmiferator) and use a
> fixed, complete resource path for loading the stylesheets. (It’s just that
> initially the library package concept seemed a good fit for what I try to
> achieve – make a few XQuery functions available database-wide.)
>
> Best,
> Julian
> Am 24.06.24 um 11:43 schrieb Jean-Paul Rehr:
>
> Dear Julian,
>
> >Is it even possible to include XSLTs in a library package in a manner
> that they can be loaded into XQuery?
>
> I assume by "library package" you mean library module? I do this all the
> time without an issue. It's just another XML document.
>
> However I have a doubt about this path:
>
> >doc('./CMIF-base.xsl')
>
> Have you tested this with the full explicit path to the document? e.g.
> "/db/apps/myapp/CMIF-base.xsl"
>
> Cheers,
> JPR
>
>
> On Mon, Jun 24, 2024 at 11:35 AM Julian Jarosch <
> [email protected]> wrote:
>
>> Hello everyone,
>>
>> I’m trying to use XSLT stylesheets in an XQuery module in a library
>> package, along the lines of (simplified example):
>>
>> declare variable $template := doc('./CMIF-base.xsl');
>>
>> The current actual code is here:
>>
>>
>> https://github.com/digicademy/cmiferator/blob/78b2725bf9fcc163fc48df0a96c436fadeefcef6/library-package/content/cmiferator.xqm#L25
>>
>> I had successfully tested this as an XQuery module written directly in
>> eXist/eXide. It stopped working when I installed it as a library package,
>> as far as I can tell.
>>
>> By “stopped working” I mean that the variable which is supposed to
>> contain the stylesheet document ($template in the example) remains empty
>> and the transform:transform() function fails because of a missing
>> stylesheet argument.
>>
>> Currently, it seems to me that the cause is with the library package? Is
>> it even possible to include XSLTs in a library package in a manner that
>> they can be loaded into XQuery?
>>
>> Thanks for any guidance – presumably for pointing out an egregious
>> oversight on my end :-)
>>
>> Kind regards,
>> Julian
>> _______________________________________________
>> Exist-open mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/exist-open
>>
> _______________________________________________
> Exist-open mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/exist-open
>

_______________________________________________
Exist-open mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/exist-open