I'm not 100% clear what the answer to this should be.
The data model defines the document-uri accessor as:
"the absolute URI of the resource from which the Document Node was
constructed, if the absolute URI is available."
In the case of the base-uri, it is certainly the re-directed URL that
should be returned. I'm not clear in my mind if the same holds for the
document-uri.
Here's a test stylesheet to illustrate the point:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="text"/>
<xsl:template name="initial">
<xsl:variable name="doc" select="doc('http://colina.demon.co.uk/test.html')"/>
<xsl:text>URI used to call document is:
</xsl:text>
<xsl:value-of select="document-uri ($doc)"/>
<xsl:text>
</xsl:text>
<xsl:text>Base URI of document is:
</xsl:text>
<xsl:value-of select="base-uri ($doc)"/>
<xsl:text>
</xsl:text>
<xsl:text>Does document-uri() eq http://colina.demon.co.uk/test.html?:
</xsl:text>
<xsl:value-of select="document-uri($doc) eq
'http://colina.demon.co.uk/test.html'"/>
<xsl:text>
</xsl:text>
<xsl:text>Does document-uri() eq http://colina.demon.co.uk/test/test.html?:
</xsl:text>
<xsl:value-of select="document-uri($doc) eq
'http://colina.demon.co.uk/test/test.html'"/>
<xsl:text>
</xsl:text>
<xsl:text>Does $doc eq document-uri($doc)?:
</xsl:text>
<xsl:value-of select="$doc eq doc(document-uri($doc))"/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Using gestalt, the output I get is:
URI used to call document is:
http://colina.demon.co.uk/test/test.html
Base URI of document is:
http://colina.demon.co.uk/test/test.html
Does document-uri() eq http://colina.demon.co.uk/test.html?:
false
Does document-uri() eq http://colina.demon.co.uk/test/test.html?:
true
Does $doc eq document-uri($doc)?:
true
(I have set up my apache server to do the re-direct for the purposes
of testing this, hence base-uri() is not the same as the original
argument to doc).
The last test is the guarenteed semantics for when document-uri()
returns anything but an empty sequence, so this is OK.
I guess the rest is OK too - I wish I had tested this before proposed
recommendation, but I only thought about it this weekend.
When in doubt, I usually test also with Saxon, but Saxon 8.8B for
Java, on my machine gives:
Error on line 7 of file:/home/colin/gestalt/test_http_redirect.xsl:
FODC0005: Stream closed.
Error on line 7 of file:/home/colin/gestalt/test_http_redirect.xsl:
FODC0005: Failed to load document http://colina.demon.co.uk/test.html
Transformation failed: Run-time errors were reported
Whether this is a problem with Saxon itself, or the JVM I don't know
(it may well be arguable).
What does Saxon.NET give?
--
Colin Adams
Preston Lancashire
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--