[xsl] In XSLT context, base-uri() and document-uri() return different values

Subject: [xsl] In XSLT context, base-uri() and document-uri() return different values
From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 18 Aug 2021 15:27:35 -0000
In the context of an XSLT 3 transform run by Saxon-HE 9.9.1.7J, I have a
variable that contains an element from a document loaded using the document()
function.



In my code I use base-uri() to get the base URI of the element in order to
then resolve URIs relative to this element. This is in code thatbs been
around a long time (nearly 10 years).



In my latest use of this code, Ibm seeing that base-uri() for the node
reflects the URI of the transform, not the node, but document-uri() for the
elementbs root returns the expected document URI:



     [xslt] + [DEBUG] df:resolveTopicRef():
base-uri($context)="file:/Users/eliot.kimber/git/dita-ot/dita-ot-air/plugins/
org.dita.html5/xsl/map2html5Impl.xsl"

     [xslt] + [DEBUG] df:resolveTopicRef():
document-uri($context)="file:/Users/eliot.kimber/git/temp/aair/air-html/bundl
e-aair-automated-incident-response.ditamap"



My understanding of base-uri() is that I should get the same values for
base-uri() and document-uri() in this case because there are no explicit
xml:base attributes in the source document.



Why am I seeing this anomalous result from base-uri()? I didnbt see anything
in the XSLT 3 spec or in the XPath spec that would suggest this behavior
(looking for mentions of bbase-urib).



Thanks,



Eliot





--

Eliot Kimber

http://contrext.com

Current Thread