I guess you’re right.
We haven’t revised EXPath packaging for a long time now. Actually, I’m not sure how many people use it at all ;) Anyone out there?
On Mon, Jan 24, 2022 at 4:08 PM Eliot Kimber eliot.kimber@servicenow.com wrote:
I did confirm that if the package @name URI matches the URI of a module, then the module is resolved, i.e.:
<package xmlns="http://expath.org/ns/pkg" name="http://servicenow.com/xquery/module/now-dita-utils" abbrev="now-xquery" version="0.1" spec="1.0">
<title>XQuery modules for ServiceNow Product Content processing and support</title> <xquery> <namespace>http://servicenow.com/xquery/module/database-from-git</namespace> <file>database-from-git.xqm</file> </xquery>
…
</package>
That implies that each module needs to be in a separate XAR file in order to also be in a separate namespace.
I don’t think that is consistent with the EXPath packaging spec.
In the description of the XQuery entry it says:
An XQuery library module is referenced by its namespace URI. Thus the xquery element associates a namespace URI to an XQuery file. An importing module just need to use an import statement of the form import module namespace xx = "<namespace-uri>";. An XQuery main module is associated a public URI. Usually an XQuery package will provide functions through library modules, but in some cases one can want to provide main modules as well. This implies to me that the value of the <namespace> element in the <xquery> is what should be used to resolve the package reference, not the package’s @name value, which simply serves to identify the package.
Is my analysis correct or have I misunderstood the package mechanism?
Cheers, E.