- From: <bugzilla@jessica.w3.org>
- Date: Tue, 18 Oct 2016 08:00:02 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29939
Bug ID: 29939
Summary: [FO31] fn:transform stylesheet-base-uri options
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: Functions and Operators 3.1
Assignee: mike@saxonica.com
Reporter: tim@cbcl.co.uk
QA Contact: public-qt-comments@w3.org
Target Milestone: ---
I'm rather confused by the stylesheet-base-uri option.
(CASE 1) In combination with "stylesheet-text", it makes sense. Since the
stylesheet-text is a string, there is no associated base URI. The text can be
parsed as if by a call to parse-xml with a static context base URI of
stylesheet-base-uri.
(CASE 2) In combination with "stylesheet-node" it is confusing. Take as
example fn-transform-19.
<test-case name="fn-transform-19">
<description>Transform using options stylesheet-node and
stylesheet-base-uri</description>
<created by="Debbie Lockett" on="2015-03-11"/>
<dependency type="spec" value="XQ31+"/>
<dependency type="feature" value="fn-transform-XSLT" satisfied="true"
/>
<test><![CDATA[
declare variable $xsl as xs:string :="<xsl:stylesheet version='2.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template name='main'>
<x><xsl:value-of select='static-base-uri()'/></x>
</xsl:template>
</xsl:stylesheet>";
fn:transform(map {"stylesheet-node" : parse-xml($xsl),
"initial-template" : QName('','main'), "stylesheet-base-uri":
"http://www.example.com"})?output
]]></test>
<result>
<assert>$result/x = 'http://www.example.com'</assert>
</result>
</test-case>
The static base URI property from the static context of the fn:parse-xml
function call is used both as the base URI used by the XML parser to resolve
relative entity references within the document, and as the base URI of the
document node that is returned. Let's say that's urn:foo.
At the <xsl:value-of /> element, the URI will still be urn:foo. Sicne the
XPath expression static-base-uri() executes with a static context whose base
URI is the base URI of the containing element, the expected result should be
urn:foo. The "stylesheet-base-uri" option can't have an effect.
(CASE 3) Consider "stylesheet-base-uri" In combination with
"stylesheet-location". Suppose the implementation uses the stylesheet-location
to load an XDM instance as if by a call to fn:doc. The base URI of the
document node of the loaded instance would be that of the stylesheet-location.
This is similar to CASE 1 and "stylesheet-base-uri" would have no effect.
Suppose instead that the implementation loaded the stylesheet in as if by a
call to unparsed-text, followed by parsing as if by a call to parse-xml. This
is similar to CASE 2 and "stylesheet-base-uri" would have an effect.
I would expect "stylesheet-base-uri" only to apply in combination with
"stylesheet-text".
It's probably too late in the day, but as an aside, it might have made sense to
give fn:parse-xml an optional base-uri argument.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Tuesday, 18 October 2016 08:00:14 UTC