You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Do...@lotus.com on 2000/02/01 14:32:22 UTC

Re: xalan problem

Hans,

I assume you are talking about a JavaScript extension. In order to call a
JavaScript extension, you must declare the xslt namespace and your own
extension namespace, set the stylesheet extension-element-prefixes
attribute, and set up an lxslt:component element with an lxslt:script
subelement with the JavaScript implementation. In the future, you will be
able to use the script src attribute to point to another file with the
JavaScript, but that is not yet supported.

Here is an example:

<?xml version="1.0"?>
<!--Namespaces are global if you set them in the stylesheet element-->
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0"
    xmlns:lxslt="http://xml.apache.org/xslt"
    xmlns:my-ext="ext1"
    extension-element-prefixes="my-ext">

  <!--The component and its script are in the lxslt namespace and define
the implementation-->
  <lxslt:component prefix="my-ext" elements="timelapse" functions
="getdate">
    <lxslt:script lang="javascript">
      var multiplier=1;
      // Extension element implementations always take two arguments. The
first
      // argument is the XSL Processor context; the second argument is the
element.
      function timelapse(xslProcessorContext, elem)
      {
        multiplier=parseInt(elem.getAttribute("multiplier"));
        // The element return value is placed in the result tree.
        // If you do not want a return value, return null.
        // return null;
      }
      function getdate(numdays)
      {
        var d = new Date();
        d.setDate(d.getDate() + parseInt(numdays*multiplier));
        return d.toLocaleString();
      }
    </lxslt:script>
  </lxslt:component>

  <xsl:template match="deadline">
    <p><my-ext:timelapse multiplier="2"/>We have received your enquiry and
will
      respond by <xsl:value-of select="my-ext:getdate(string
(@numdays))"/></p>
  </xsl:template>

</xsl:stylesheet>

This stylesheet transforms <deadline numdays="2"/> in an XML source
document into

     <p>We have received your enquiry and will respond by February 7, 2000
8:07:16 AM EST.</p>;

I hope this example is helpful, but I do not understand what you are doing
with your JavaScript, so I'm not sure I've answered your question. If not,
please give me some more detail.

-- Don




"ROOSE, HANS" <ha...@fortisbank.com> on 02/01/2000 03:25:09 AM

To:   "'donald_leslie@lotus.com'" <do...@lotus.com>
cc:

Subject:  xalan problem


Hi Donald,

I'm a Belgian developer trying to use the Xalan xsl processor

I put all my javascript in a separate .js file and in my XSL a define a
namespace for this file.

But what I don't get is  :
what is the purpose or meaning of the namespace
xmlns:lxslt="http://xml.apache.org.xslt"

Can you tell me that, or anyone overthere at Apache.org ???

Even without this sentence my code seems to work.

Steeds tot uw dienst.
Met vriendelijke groeten,

Hans Roose Extern informaticus
FORTIS BANK NV - Phone & PC-Banking / 1201
*          (02) 228.56.45           *   mailto:hans.roose@fortisbank.com
<ma...@fortisbank.com>