Re: [xsl] xbind:module == xsl:script + an essential layer of indirection

Subject: Re: [xsl] xbind:module == xsl:script + an essential layer of indirection
From: "Steve Muench" <Steve.Muench@xxxxxxxxxx>
Date: Fri, 2 Mar 2001 17:17:09 -0800
| On Fri, 2 Mar 2001, Steve Muench wrote:
| > I don't understand how the "URI-to-ResourceContainingXBindModule"
| > binding takes place. How does the processor "hook up" with
| > its XBindModule definition? From where does it fetch it the
| > first time? Does it periodically ping for updates?
| 
| I listed several levels of "hook-up" in the e-mail, you
| neglected to discuss the first few:  (1) build-in, 
| (2) local-catalogue, (3) stylesheet-provided, (4) 
| ask-the-user, and instead focused only on the RDDL
| based binding mechanism, which I refer you to the
| RDDL discussion for more detail.

Ok. Understand now. But still seems like overkill to
me for the common use case of a few little functions
that your own stylesheet needed to get a job done.
But I'm guessing we'll just have to agree to disagree
on this point.

| > This, I believe, is a red herring. URI's are URI's.
| 
| Where in the xsl:script spec is a URI provided
| to identify the functionality described?

<xsl:script> is a general mechanism. It can bind
any implementation resource to any namespace URI. To save
you typing the namespace URI over and over, it
lets you use the namespace *prefix* in the
implements-prefix="pref" attribute, but this
is defined to mean "implements the library of
functions defined by the namespace URI bound
to the prefix "pref" in scope.

If it's a set of date functions, that URI might be:

   http://datestuff.com/xslt/extensions

If it's a set of number functions, the URI might be:

   http://maths.org/xslt/library/wave-functions

These are just namespace uri's defined anywhere in scope
in the normal mechanism:

  <xsl:stylesheet xmlns:xsl="..."
                  xmlns:date="http://datestuff.com/xslt/extensions";
                  xmlns:maths="http://maths.org/xslt/library/wave-functions";>

| There is a prefix, and this is not a global URI.

It's just a prefix that refers to a namespace
URI in scope. That URI is as globally unique
as you engineer it to be.

| Also there is a "src", and this is not a language 
| independent URI and must be missing when the
| script code is included in the stylesheet.

The src attribute is a *second* URI that points to
the resource to be used as the implementation.

So, via the prefix shortcut as defined above, the
stylesheet fragment:

<xsl:stylesheet xmlns:xsl="..."
                xmlns:date="http://datestuff.com/xslt/extensions/dates";
                xmlns:maths="http://maths.org/xslt/library/wave-functions";
                xmlns:lang="http://langdefs.org/xslt/extension/bindings";>

  <xsl:script implements-prefix="date"
              language="lang:yyyy"
              src="http://datestuff.com/xslt/extension/impl/dates.xyz"/>

Simply makes the processor aware that there
is an implementation of the functionality
identified by the URI:

http://datestuff.com/xslt/extensions/dates

whose implementation can be found at the URI:

http://datestuff.com/xslt/extension/impl/dates.xyz

and which is to be understood to be implemented
in language whose QName is "lang:yyyy"

| What am I missing?  Where is this 
| implementation-independent-uri in the 1.1 Draft?

The draft doesn't impose any particular URI, but
let's you or the community invent your own
globally-unique, implementation independent URI's
to be the identifier for a set of functions that
accomplish a particular body of interesting functionality.

______________________________________________________________
Steve Muench, Lead XML Evangelist & Consulting Product Manager
BC4J & XSQL Servlet Development Teams, Oracle Rep to XSL WG
Author "Building Oracle XML Applications", O'Reilly
http://www.oreilly.com/catalog/orxmlapp/



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread