Re: Congrats on the latest WD ::: http://www.w3.org/TR/2001/WD-xs lt20 -20011220/

Hi Mike,

> A common <xsl:script> element to define mappings to external
> implementations only makes sense if the external implementations are
> likely to work with any processor. If different implementations are
> needed for different processors, an implementation-dependant binding
> mechanism is more appropriate.

Sure. But I think this will lead to more trouble than it's worth when
(and I mean *when*!) two implementations *do* adopt the same language
binding.

What I imagined was that xsl:script would have a language attribute
that takes a qualified name that indicates the language binding for
the relevant implementation. Taking the example you gave, I'd like it
to be:

<xsl:script namespace="some" language="saxon:java"
            class="my.extension.class.SaxonWrapper" />
            
<xsl:script namespace="some" language="xalan:java"
            class="my.extension.class.XalanWrapper" />

<xsl:script namespace="some" language="msxsl:jscript">
  function extension {
    do it!
  }
</xsl:script>

In other words, let the language attribute determine what language
binding is used, not the name of the element that's used to point to
the implementation.

Then, say that EXSLT defines a Java language binding. Then you can
simply have:

<xsl:script namespace="some" language="exsl:java"
            class="my.extension.class.Function" />

and whatever processors support that language binding would be able to
use the implementation.

This has three advantages for me as the author:

  - I don't have to worry about whether I've added the correct
    extension elements for all the processors that I know support the
    exsl:java language binding.

  - I don't have to worry about updating the stylesheet every time a
    new processor comes out that supports the exsl:java language
    binding.

  - I don't have to worry about what happens if someone tries to run
    this stylesheet with an older version of Saxon (say) that doesn't
    support the exsl:java language binding, because the older version
    of Saxon will just use the implementation indicated by the
    saxon:java language binding instead.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Friday, 18 January 2002 07:23:36 UTC