Re: [xsl] xsl:import and use-when

Subject: Re: [xsl] xsl:import and use-when
From: "Rushforth, Peter peter.rushforth@xxxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 16 May 2014 11:54:30 -0000
Cheers,
Peter

> -----Original Message-----
> From: Michael Kay mike@xxxxxxxxxxxx [mailto:xsl-list-
> service@xxxxxxxxxxxxxxxxxxxxxx]
> Sent: May 16, 2014 03:59
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] xsl:import and use-when
>
>
> On 16 May 2014, at 03:09, Abel Braaksma (Exselt) abel@xxxxxxxxxx <xsl-list-
> service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> >
> > On 16-5-2014 2:49, Rushforth, Peter peter.rushforth@xxxxxxxxxxxxxxxxx
> wrote:
> >> With regard to statically known available documents [2], the spec says
> that statically known documents [3] in the static context [4] are used to
> provide static type information, not to determine which documents are
> available.  But if a document is statically known, it is potentially
available using
> the doc() function, hence I think the use of doc-available() in use-when
> should be legal, although if it isn't it isn't.
> >
> > You are quoting the XPath spec here, which allows enough breath for host
> > languages to provide a list of statically available documents. However,
> > in the section that you also refered to,
> > http://www.w3.org/TR/xslt20/#conditional-inclusion, you should scroll
> > down until the bottom of the first table, there is says:
> >
> > Statically known documents     None
> > Statically known collections     None

I see that now, thanks.

> >
>
> Actually and rather confusingly, it's the "available documents" in the
dynamic
> context that matters, not "statically known documents" in the static
context.
> Use-when expressions (and in XSLT 3.0, other static expressions) are
> evaluated during stylesheet analysis, so their dynamic execution occurs
> during the XSLT static analysis (compilation) phase; their dynamic
execution
> has a dynamic context, and it is this that determines the results of doc()
and
> doc-available().

I see, thanks.

>
> Saxon still implements the 2.0 restriction on using doc() in use-when
> expressions, despite the relaxation in the spec. I can't see any particular
> reason not to lift the restriction (which can be done by removing one line
of
> code and adding a load of test cases....). Oh, looking at it more carefully,
I see
> that there would be no document pool maintained across a compilation, so
> multiple calls on doc() to fetch the same document would be grossly
> inefficient.

But useful!


I guess I will try an extension function.

Thanks
Peter

Current Thread