[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: In XSLT 3.0, should the "document" function be av

Subject: Re: In XSLT 3.0, should the "document" function be available in xsl:evaluate?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 16 Jan 2017 19:40:34 -0000
Re:  In XSLT 3.0
Actually, the spec of fn:function-lookup says:

If the arguments to fn:function-lookup identify a function that is present in
the static context of the function call, the function will always return the
same function that a static reference to this function would bind to. If there
is no such function in the static context, then the results depend on what is
present in the dynamic context, which is B7implementation-definedB7.

I seem to recall there was a fair bit of discussion about situations that
might lead to the dynamic context containing functions not present in the
static context, but I don't recall the details - I think a number of people
had different reasons for suggesting this could be useful. For Saxon,
certainly, it's useful not to have to impose what would be a completely
artificial restriction.

Michael Kay

> On 16 Jan 2017, at 14:35, Martin Honnen martin.honnen@xxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Both the latest internal draft of the XSLT 3.0 spec in
th as well as the official https://www.w3.org/TR/xslt-30/#element-evaluate say
about the function signatures in the context of dynamic XPath evaluation using
xsl:evaluate: "Note that this set deliberately excludes XSLT-defined functions
in the standard function namespace".
> Based on that I would expect the XSLT "document" function not to be
available in dynamic XPath evaluation using xsl:evaluate. So I wrote a test
case doing
> <xsl:stylesheet version="3.0"
> 	xmlns:xs="http://www.w3.org/2001/XMLSchema"
> 	xmlns:math="http://www.w3.org/2005/xpath-functions/math"
> 	xmlns:array="http://www.w3.org/2005/xpath-functions/array"
> 	xmlns:map="http://www.w3.org/2005/xpath-functions/map"
> 	exclude-result-prefixes="array fn map math xs">
> 	<xsl:output method="xml"/>
> 	<xsl:template name="main" match="/">
> 		<xsl:sequence
> 			select="
> 			let $f := function-lookup(xs:QName('fn:document'), 1)
> 			return
> 			if (exists($f)) then
> 			$f('')
> 			else
> 			'not found'"/>
> 		<xsl:variable name="path" as="xs:string">
> 			let $f := function-lookup(xs:QName('fn:document'), 1)
> 			return
> 			if (exists($f)) then
> 			$f('')
> 			else
> 			'not found'</xsl:variable>
> 		<xsl:evaluate xpath="$path"/>
> 	</xsl:template>
> </xsl:stylesheet>
> and expected that to return the stylesheet code for the xsl:sequence and
'not found' for the xsl:evaluate.
> However, only Exselt gives me that result, both Saxon 9.7 EE as well as
Altova XMLSpy return the stylesheet code twice which seems to indicate they
make the 'document' function available to xsl:evaluate. Isn't that a bug? Or
does the spec need to allow it if an implementer wants to go beyond pure XPath

Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.