xsl-list
[Top] [All Lists]

RE: Making extension functions available

2005-09-14 08:11:54
That sorted it out for me. Trying to puzzle out the problem on my own led 
me to learn a bunch more about namespaces (more at the behind-the-scenes 
level than at the how-do-I-manage-multiple-namespaces-in-my-XSL level), 
too, so it was a good exercise.

Thanks, Mike.

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




"Michael Kay" <mike(_at_)saxonica(_dot_)com> 
09/14/2005 02:56 AM
Please respond to
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com


To
<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
cc

Subject
RE: [xsl] Making extension functions available






This is really a Saxon-specific question, not a general XSLT question.

In the namespace used to identify Saxon extension functions, anything 
before
the final "/" is ignored. When you use the namespace "../xsl_extensions",
Saxon looks for a class called xsl_extensions on the classpath. When the
stylesheet is run on another machine, all you have to do is to ensure that
this class is on the classpath.

Saxon does in fact provide a mechanism, <saxon:script> that allows you to
specify the location of a JAR file containing the class you want to load: 
in
this case it doesn't have to be on the classpath, and can in fact be
anywhere on the net. As far as I know this mechanism is rarely used.

Michael Kay
http://www.saxonica.com/ 


-----Original Message-----
From: Jay Bryant [mailto:jay(_at_)bryantcs(_dot_)com] 
Sent: 13 September 2005 23:15
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Making extension functions available

Hi, gang,

I had to write an extension function (in Java for Saxon 8b), 
and it works
fine. I was just calling it locally, thus:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:ext="../xsl_extensions"


  <xsl:template match="/">
    <xsl:value-of select="ext:GetDir('dirname')"/>|
  </xsl:template>

</xsl:stylesheet>

Now a client's customer needs to call it from another location, so a
relative path to another directory on my drive won't work.

How can I set things up such that the following will work?

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:ext="http://www.bryantcs.com/xsl/extensions";


  <xsl:template match="/">
    <xsl:value-of select="ext:GetDir('dirname')"/>|
  </xsl:template>

</xsl:stylesheet>

Thanks in advance.

Jay Bryant
Bryant Communication Services



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>