- From: Bohlmann, Karsten <karsten.bohlmann@sap.com>
- Date: Tue, 16 Apr 2002 12:46:37 +0200
- To: "'Jeni Tennison'" <jeni@jenitennison.com>, "'Michael.Kay@softwareag.com'" <Michael.Kay@softwareag.com>
- Cc: "'xsl-editors@w3.org'" <xsl-editors@w3.org>
Hi Jeni, Michael,
this is a combined reply to both of you, and I promise it'll be my last one
on the matter :)
> -----Original Message-----
> From: Jeni Tennison [mailto:jeni@jenitennison.com]
> Sent: Monday, April 15, 2002 11:38 PM
> To: Bohlmann, Karsten
> Cc: 'xsl-editors@w3.org'
> Subject: Re: XSLT 2.0: function-available() for stylesheet functions
>
> You could still write a
> user-defined function for date:format-date() with completely different
> semantics and as long as you don't use it in a processor that natively
> supports date:format-date() then you'll be just fine.
Not quite. Under my suggestion, the situation would be as follows: Given
that I see a stylesheet using date:format-date(), and I know that this is a
function implemented natively at least by some processors (and I do know
that if I know EXSLT, or if I browse to the exslt.org page), I would be able
to conclude that
- either the stylesheet is using the function exactly as it is specified by
the corresponding standard (EXSLT)
- or it is not portable XSLT.
I could draw that conclusion without even going looking for a nasty
re-definition, because the spec would say it's illegal to
xsl:function-define natively defined functions. It's extremely unlikely that
an XSLT programmer would dream up a vendor namespace, or
http:://exslt.org/..., without bad intentions. (Repeating myself: After all,
what are namespaces for?) My suggested regulation is as far as we can get to
prevent such abuse: A user re-defining date:format-date() would *know* that
the fallaciousness of his program would be revealed at least by some
processors (or by someone finding the re-definition).
> there's nothing stopping me from writing an XSLT processor that works
> completely differently from how XSLT is described in the
> Recommendation.
That processor would be termed non-conformant. The problem I'm talking about
is a loophole in the language definition.
> -----Original Message-----
> From: Kay, Michael [mailto:Michael.Kay@softwareag.com]
> Sent: Monday, April 15, 2002 11:23 PM
> To: Bohlmann, Karsten; 'xsl-editors@w3.org'
> Subject: RE: XSLT 2.0: function-available() for stylesheet functions
>
>
> >
> > (1) function-available-as-part-of-the-language-implementation()
> >
> > while your interpretation is
> >
> > (2) function-call-will-be-successful()
>
> No, there's nothing about function-available that guarantees
> that a function
> call will be successful. It's relevant to test availability
> of functions in
> the core library, in vendor libraries, and in third-party
> libraries such as
> EXSLT.
>
> The important thing is that some of these third-party libraries may be
> implemented using xsl:function. The stylesheet writer
> shouldn't care whether
> the function is written in Java, in Javascript, or in XSLT;
> function-available() should return true for all these cases.
>
> Michael Kay
The important thing, from my viewpoint, is that function-available() with
its single string parameter only makes sense if the set of strings for which
it may return TRUE is clearly defined by a set of documents. It is useless
for program-defined functions, including EXSLT functions pasted into a
program with xsl:function (because the pasting may be erroneous for whatever
reason). That's because nothing is said about the *signature* or *semantics*
of the function name in question. If function-available('foo:bar') gives me
TRUE, this is of absolutely no use to me, *unless* it implies a guarantee
about the signature and semantics of foo:bar(). That guarantee can only come
from a standard or vendor document.
Therefore, it's my conviction that function-available() should return TRUE
only for function names implemented by the processor; and it should be
forbidden to over-define these functions by xsl:function.
Best regards,
Karsten Bohlmann
Received on Tuesday, 16 April 2002 06:47:18 UTC