xml-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dles...@locus.apache.org
Subject cvs commit: xml-site/targets/xalan extensions.html
Date Tue, 18 Jan 2000 21:59:21 GMT
dleslie     00/01/18 13:59:21

  Added:       targets/xalan extensions.html
  Log:
  Added document on support for XSLT extensions.
  
  Revision  Changes    Path
  1.1                  xml-site/targets/xalan/extensions.html
  
  Index: extensions.html
  ===================================================================
  <HTML><HEAD><SCRIPT language="JavaScript" src="resources/script.js" type="text/javascript"></SCRIPT><TITLE>Xalan-Java Extensions</TITLE></HEAD><BODY alink="#ff0000" bgcolor="#ffffff" leftmargin="4" link="#0000ff" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#0000aa"><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" height="60" rowspan="3" valign="top" width="135"><IMG border="0" height="60" hspace="0" src="resources/logo.gif" vspace="0" width="135"></TD><TD align="left" colspan="4" height="5" valign="top" width="456"><IMG border="0" height="5" hspace="0" src="resources/line.gif" vspace="0" width="456"></TD><TD align="left" height="60" rowspan="3" valign="top" width="29"><IMG border="0" height="60" hspace="0" src="resources/right.gif" vspace="0" width="29"></TD></TR><TR><TD align="left" bgcolor="#0086b2" colspan="4" height="35" valign="top" width="456"><IMG alt="" border="0" height="35" hspace="0" src="graphics/extensions-header.jpg" vspace="0" width=
"456"></TD></TR><TR><TD align="left" height="20" valign="top" width="168"><IMG border="0" height="20" hspace="0" src="resources/bottom.gif" vspace="0" width="168"></TD><TD align="left" height="20" valign="top" width="96"><A href="http://xml.apache.org/" onMouseOut="rolloverOff('xml');" onMouseOver="rolloverOn('xml');" target="new"><IMG alt="http://xml.apache.org/" border="0" height="20" hspace="0" name="xml" onLoad="rolloverLoad('xml','resources/button-xml-hi.gif','resources/button-xml-lo.gif');" src="resources/button-xml-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.apache.org/" onMouseOut="rolloverOff('asf');" onMouseOver="rolloverOn('asf');" target="new"><IMG alt="http://www.apache.org/" border="0" height="20" hspace="0" name="asf" onLoad="rolloverLoad('asf','resources/button-asf-hi.gif','resources/button-asf-lo.gif');" src="resources/button-asf-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A h
ref="http://www.w3.org/" onMouseOut="rolloverOff('w3c');" onMouseOver="rolloverOn('w3c');" target="new"><IMG alt="http://www.w3.org/" border="0" height="20" hspace="0" name="w3c" onLoad="rolloverLoad('w3c','resources/button-w3c-hi.gif','resources/button-w3c-lo.gif');" src="resources/button-w3c-lo.gif" vspace="0" width="96"></A></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" valign="top" width="120"><IMG border="0" height="14" hspace="0" src="resources/join.gif" vspace="0" width="120"><BR>
  
    
    
    <A href="../index.html" onMouseOut="rolloverOff('side-ext-4');" onMouseOver="rolloverOn('side-ext-4');"><IMG alt="Home" border="0" height="12" hspace="0" name="side-ext-4" onLoad="rolloverLoad('side-ext-4','graphics/ext-4-label-2.jpg','graphics/ext-4-label-3.jpg');" src="graphics/ext-4-label-3.jpg" vspace="0" width="120"></A><BR>
    
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
    
    <A href="overview.html" onMouseOut="rolloverOff('side-overview');" onMouseOver="rolloverOn('side-overview');"><IMG alt="Overview" border="0" height="12" hspace="0" name="side-overview" onLoad="rolloverLoad('side-overview','graphics/overview-label-2.jpg','graphics/overview-label-3.jpg');" src="graphics/overview-label-3.jpg" vspace="0" width="120"></A><BR>
              
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
  
    <A href="install.html" onMouseOut="rolloverOff('side-install');" onMouseOver="rolloverOn('side-install');"><IMG alt="Installation" border="0" height="12" hspace="0" name="side-install" onLoad="rolloverLoad('side-install','graphics/install-label-2.jpg','graphics/install-label-3.jpg');" src="graphics/install-label-3.jpg" vspace="0" width="120"></A><BR>
  
    <A href="readme.html" onMouseOut="rolloverOff('side-readme');" onMouseOver="rolloverOn('side-readme');"><IMG alt="Release Notes" border="0" height="12" hspace="0" name="side-readme" onLoad="rolloverLoad('side-readme','graphics/readme-label-2.jpg','graphics/readme-label-3.jpg');" src="graphics/readme-label-3.jpg" vspace="0" width="120"></A><BR>
              
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>           
              
    <A href="commandline.html" onMouseOut="rolloverOff('side-commandline');" onMouseOver="rolloverOn('side-commandline');"><IMG alt="Command Line" border="0" height="12" hspace="0" name="side-commandline" onLoad="rolloverLoad('side-commandline','graphics/commandline-label-2.jpg','graphics/commandline-label-3.jpg');" src="graphics/commandline-label-3.jpg" vspace="0" width="120"></A><BR>
  
    <A href="api.html" onMouseOut="rolloverOff('side-api');" onMouseOver="rolloverOn('side-api');"><IMG alt="Xalan API" border="0" height="12" hspace="0" name="side-api" onLoad="rolloverLoad('side-api','graphics/api-label-2.jpg','graphics/api-label-3.jpg');" src="graphics/api-label-3.jpg" vspace="0" width="120"></A><BR>
              
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
  
    <A href="dtm.html" onMouseOut="rolloverOff('side-dtm');" onMouseOver="rolloverOn('side-dtm');"><IMG alt="Xalan DTM" border="0" height="12" hspace="0" name="side-dtm" onLoad="rolloverLoad('side-dtm','graphics/dtm-label-2.jpg','graphics/dtm-label-3.jpg');" src="graphics/dtm-label-3.jpg" vspace="0" width="120"></A><BR>
              
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
    
    <IMG alt="Extensions" border="0" height="12" hspace="0" src="graphics/extensions-label-1.jpg" vspace="0" width="120"><BR>
              
    <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
  
    <A href="xslt4c.html" onMouseOut="rolloverOff('side-xslt4c');" onMouseOver="rolloverOn('side-xslt4c');"><IMG alt="Xalan C++" border="0" height="12" hspace="0" name="side-xslt4c" onLoad="rolloverLoad('side-xslt4c','graphics/xslt4c-label-2.jpg','graphics/xslt4c-label-3.jpg');" src="graphics/xslt4c-label-3.jpg" vspace="0" width="120"></A><BR>             
  <IMG border="0" height="14" hspace="0" src="resources/close.gif" vspace="0" width="120"><BR></TD><TD align="left" valign="top" width="500"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD>
     
  	 <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Introduction</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspa
ce="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  <P>For those situations where you would like to augment the functionality of XSLT with calls to a procedural language, Xalan-Java supports the creation and use of extension elements and extension functions.</P>
  <P>You can set up Xalan-Java components to define extension elements and extension functions that call Java classes and Javascript scripts. In your XSL stylesheets, you can then use extension components to set script properties, for example, and extension functions to return values. Xalan-Java also provides a predefined &quot;java&quot; extension namespace that you can use to interact directly with Java objects.</P>
  <P>Furthermore, Xalan-Java ships with a propriatary extension that you can use to redirect the output of an XSL transformation to multiple files. This extension is implemented in the org.apache.xalan.xslt.extensions.Redirect class. Suggestions for extensions to add in future releases are more than welcome.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Supported languages</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
 vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  <P>Xalan-Java uses he Bean Scripting Framework (BSF), an architecture for incorporating scripting into Java
    applications and applets. Using BSF allows an application to take advantage of scripting while being
    independent of any specific scripting language. </P>
    <P>To use BSF, you must put two JAR files on the classpath: bsf.jar and bsfengine.jar. For JavaScript support, BSF has been tested with Mozilla Rhino 1.4 R3 js.jar, available from http://www.mozilla.org/rhino. We do not ship js.jar.</P>
  <TABLE border="0" cellpadding="2" cellspacing="2" width="100%">
    <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><B>Language</B>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><B>Version</B>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><B>Dependencies</B>&nbsp;
        </FONT></TD>
    </TR>
    <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>Mozilla Rhino</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>1.4 R3</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>js.jar available from 
  				    http://www.mozilla.org/rhino</P>&nbsp;
        </FONT></TD>
    </TR>
    <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>NetRexx</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>1.148 up </P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>NetRexxC.zip available from http://www2.hursley.ibm.com/netrexx</P>&nbsp;
        </FONT></TD>
    </TR>
      <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>BML</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>2.4</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>bmlall.jar available from http://www.alphaWorks.ibm.com/formula/bml</P>&nbsp;
        </FONT></TD>
    </TR>
      <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>JPython</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>1.1-beta3</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>python.jar available from http://www.jpython.org/</P>&nbsp;
        </FONT></TD>
    </TR>
      <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>Jacl</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>1.1.1</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P> jacl.jar and tcljava.jar from http://www.scriptics.com/java</P>&nbsp;
        </FONT></TD>
    </TR>
      <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>Win32 ActiveScript langs
  	JScript, VBScript</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P></P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>MSVCP60.DLL from Microsoft, appropriate language DLLs from Microsoft 
      http://msdn.microsoft.com/scripting</P>&nbsp;
        </FONT></TD>
    </TR>
      <TR>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>PerlScript</P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P></P>&nbsp;
        </FONT></TD>
      <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><P>ActivePerl from http://www.activestate.com/</P>&nbsp;
        </FONT></TD>
    </TR>  
  </TABLE>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Xalan-Java components</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gi
f" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  
  <P>To set up extensions, do the following in an XSL stylesheet:</P>
  <OL>
    <LI>Declare the Xalan-Java xslt namespace</LI>
    <LI>Declare a namespace for at least one extension prefix</LI>
    <LI>Use the extension-element-prefixes attribute on the xsl:stylesheet element, a literal result
    element, or another extension element to declare the extension namespace as an extension</LI>
  </OL>
  <P>Then you can utilize the extension elements and associated extension functions in your stylesheet
  templates.</P>
  <P>To implement the extension, define a Xalan-Java component in the xslt namespace. A Xalan-Java component may be embedded within the stylesheet or maintained separately. The component contains the code that is called when the extension elements and functions are used.</P>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="484"><TR><TD bgcolor="666699" colspan="2" width="484"><TABLE border="0" cellpadding="0" cellspacing="0" width="484"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="482"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="482"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="482"><FONT color="#ffffff" face="arial,helvetica,sanserif"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Xalan-Java Component Syntax</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" v
space="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="482"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="482"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="474"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
                     xmlns:lxslt=&quot;http://xml.apache.org.xslt&quot;
                     xmlns:extn1=&quot;URI of extension namespace1&quot;
                     extension-element-prefixes=&quot;extn1 extn2&quot;&gt;
  
    &lt;xsl:template match=&quot;...&quot;&gt;
      ...
      &lt;extn1:element1 att1=&quot;value1&quot; att2=&quot;value2&quot; ...&gt;
        &lt;whatever-the-contents/&gt;
        &lt;including-xsl-elements/&gt;
      &lt;/extn1&gt;
      ...
      &lt;xsl:value-of select=&quot;extn1:function1(arg1,arg2,...,argn)&quot;/&gt;
      ...
    &lt;/xsl:template&gt;
  
    &lt;lxslt:component prefix=&quot;extn1&quot; elements=&quot;element1&quot; functions=&quot;function1&quot;&gt; 
      &lt;lxslt:script lang=&quot;javascript&quot;&gt;
        function element1 (xslProcContext, exensionElement) {
          code to do element1, including possibly evaluating the
          contents of the element by calling back to the processor
        }
  
        function function1 (arg1, arg2, ..., argn) {
          code to do function1
        }
      &lt;/lxslt:script&gt; 
    &lt;/lxslt:component&gt;
  &lt;/xsl:stylesheet&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  </FONT></TD></TR></TABLE><BR>
  
  <TABLE border="0" cellpadding="0" cellspacing="0" width="484"><TR><TD bgcolor="666699" colspan="2" width="484"><TABLE border="0" cellpadding="0" cellspacing="0" width="484"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="482"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="482"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="482"><FONT color="#ffffff" face="arial,helvetica,sanserif"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>DTD for Xalan-Java Components</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif"
 vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="482"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="482"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="474"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;!ELEMENT lxslt:component (lxslt:script)&gt;
  &lt;!ATTLIST lxslt:component
    prefix CDATA #IMPLIED
    namespace-uri CDATA #IMPLIED
    elements NMTOKENS #REQUIRED
    functions NMTOKENS #REQUIRED&gt;
  
  &lt;!ELEMENT lxslt:script EMPTY)&gt;
  &lt;!ATTLIST lxslt:script
    lang CDATA #REQUIRED
    src CDATA #IMPLIED&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  </FONT></TD></TR></TABLE><BR>
  
  <P>For extension namespaces implemented using Java, a special
  convenience is supported which allows the programmer to skip the
  component specification. This is described later in the semantics
  of how a component description is located and loaded.</P>
  </FONT></TD></TR></TABLE><BR>
  
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Locating Xalan-Java Components</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resource
s/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
     <P>When Xalan-Java encounters the extension-element-prefixes attribute on a stylesheet, it uses the
        following algorithm to find and load the components to handle those extension namespaces:</P>
        <OL>
          <LI> For each extension namespace, search for an &lt;<B>lxslt:component</B>&gt;
                  element with a <B>prefix</B> attribute whose
                  value matches the extension namespace prefix. If none is found, proceed to
                  step 2.</LI>
              <LI>Treat the URI of the namespace as a fully
                  qualified class name and attempt to
                  load that class. If the URI starts with
                  &quot;class:&quot;, strip that prefix
                  before attempting to load the class. If the class
                  loads, assume the following component description:
                  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>  &lt;lxslt:component prefix=&quot;prefix-being-searched-for&quot;&gt; 
      &lt;lxslt:script lang=&quot;javaclass&quot; src=&quot;namespaceURI&quot;/&gt;
    &lt;/lxslt:component&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>  
                  <P>Assume, that is, a component implementation in Java
                  with a source URL value of the namespace URI
                  as the fully qualified class name. No elements and functions are defined -
                  which means that if one were to test this
                  namespace (via extension-element-available or
                  extension-function-available) then the tests
                  would fail. However, if a function or element is
                  invoked on this extension namespace the call
                  succeeds or fails depending on whether or not the
                  requisite functions (as defined below) were
                  defined by the class.</P>
              </LI>
              <LI>Treat the URI of the namespace as a URL and
                  attempt to load the component description
                  from this URL. If found and if the
                  lxslt:component has a &quot;namespace-uri&quot;
                  attribute present, it <B>must</B> match the
                  namespace URI of the extension specified in the
                  stylesheet. If no &quot;namespace-uri&quot;
                  attribute is present, the component is assumed to be the
                  component specification for this namespace. [NOT
                  FULLY IMPLEMENTED YET - NAMESPACE USAGE ISN'T
                  CORRECT.]<BR>
                  </LI>
          </OL>
  
      <P>The component specification identifies the valid local
          parts of the extension namespace. The element and
          function local parts are identified separately using the <B>elements</B>
          and <B>functions</B> attributes, respectively. The
          component specification presents the code that implements
          these local parts using a &lt;<B>lxslt:script</B>&gt;
          element. The script element can inline the code or refer
          to an external source for the code using the <B>src</B>
          attribute.</P>
      <P>The currently supported languages are:
          &quot;javaclass&quot; and &quot;javascript&quot;, where
          &quot;javaclass&quot; is used to work with an
          implementation in Java and &quot;javascript&quot; refers
          to Netscape Rhino.</P>
      <P>Special case for lang=&quot;javaclass&quot;: The <B>src</B>
          attribute is treated as the fully qualified classname of
          the class which handles the extension namespace. If the
          name starts with &quot;<B>class:</B>&quot;,
          then the class is not instantiated and the methods
          invoked to handle various local parts (see below) are
          assumed to be static. Otherwise, a new instance is
          created and used for invoking the appropriate methods as
          defined below.</P>
      <P>The <B>src</B> attribute is not yet implemented for
          languages other than &quot;javaclass&quot;.</P>
      <P>For each extension element within the namespace, a
          function with the following signature must be defined in
          the implementation of the component:</P>
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>Object &lt;localPart&gt; (org.apache.xalan.xslt.XSLProcessorContext,
                        org.w3c.dom.Element extensionElement)</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
          <P>where &lt;localPart&gt; is the local part of the
          extension element name. If the component is implemented
          in a loosely typed scripting language such as JavaScript,
          then these are untyped arguments to the function and the
          return type is unspecified as well. Note that for
          lang==&quot;javaclass&quot;, methods may be static or
          not-static and must be public in order to be accessible.</P>
      <P>When an extension element is invoked, the appropriate
          function (as identified above) is invoked to handle the
          invocation. The entire extension element is given as the
          second argument to the function with content, if any,
          as-is. Thus, if within an extension element one were to
          place elements from the xsl: namespace, then those would
          have to be processed by an explicit evaluation request from
          the extension element handler. Such invocations are done
          via the XSLProcessorContext object. [CALLING BACK INTO
          XSLProcessor.java NOT IMPLEMENTED YET.]</P>
      <P>For each extension function within the namespace, a
          function with the following signature must be defined in
          the implementation of the component:</P>
          <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>  Object &lt;localPart&gt; (Type1 arg1, Type2 arg2, ..., Typen argn)</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1">
</TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
          <P>where &lt;localPart&gt; is the local part of the
          extension function name. The type of each argument
          depends on what was given within XSLT in the invocation
          of the function. Here is the mapping from an XSLT data
          type to the Java data types that are used in invoking the
          methods:</P>
          <TABLE border="0" cellpadding="2" cellspacing="2" width="100%">
              <TR>
                  <TD align="center" bgcolor="#039acc" colspan="1" rowspan="1" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>XSLT Type</B>&nbsp;
        </FONT></TD>
                  <TD align="center" bgcolor="#039acc" colspan="1" rowspan="1" valign="center"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="-1"><B>Java Type</B>&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Node-Set&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">org.w3c.dom.NodeList&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">String&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">java.lang.String&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Boolean&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">boolean or Boolean&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Number&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">double or Double&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">Result Tree Fragment&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">org.w3c.dom.DocumentFragment&nbsp;
        </FONT></TD>
              </TR>
              <TR>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">variable&nbsp;
        </FONT></TD>
                  <TD align="left" bgcolor="#a0ddf0" colspan="1" rowspan="1" valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">one of above based on <BR>
                  type of variable's value&nbsp;
        </FONT></TD>
              </TR>
          </TABLE>
          <P>For boolean and number XSLT types,
          first all such types are converted to the corresponding
          primitive type in Java and the method searched for. If
          the method is not found, then a method with the object
          types is searched for. For example foo:bar('a'='b', 1,
          'Hello', 2) would first look for a method
          bar(boolean,double,String,boolean) and then for
          bar(Boolean,Double,String,Double).</P>
          <P>If the component is implemented in a loosely typed
          scripting language such as JavaScript, then these are
          untyped arguments to the function and the return type is
          unspecified as well.</P>
      <P>When an extension function is invoked, the appropriate
          function (as identified above) is invoked to handle the
          invocation. Any arguments to the function are first
          evaluated and then the resulting values are passed to the
          function by first converting them according to the table
          listed above.</P>
      <P>To control how a stylesheet behaves if an extension is not available, create an xsl:fallback element with 
         xsl:choose or xsl:if instructions and the element-available and extension-available functions.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Special Handling for Extensions into Java</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" sr
c="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  
  <P>When a qualified function name is invoked, if the
  namespace is not already registered as an extension namespace (by
  the above mechanism), Xalan-Java treats the URI of the namespace as a fully qualified class
  name and attempts to load that class. If the URI starts
  with &quot;class:&quot;, Xalan-Java strips that prefix before
  attempting to load the class. If class loading succeeds, then an
  extension namespace implemented in &quot;javaclass&quot; is
  assumed with the URI as the value of the src attribute. Note that
  no functions are defined - which means that if one were to test
  this namespace (via extension-function-available) then the tests
  would fail. However, if a function is invoked on this extension
  namespace, the call succeeds or fails depending on whether or not the
  requisite functions (as defined above) were defined by the class.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Predefined Extension Namespace for Java Access</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="
0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  <P>Xalan-Java supports a special namespace for convenient
  interaction with Java objects. The namespace URI is &quot;http://xsl.lotus.com/java&quot;.
  This namespace allows the stylesheet author to create new
  instances of Java classes and to invoke static and non-static
  methods on them. Assuming, the namespace declaration &quot;<B>xmlns:java='http://xsl.lotus.com/java'</B>&quot;
  is in scope, the following are supported:</P>
  <P>java:<I>FQCN</I>.<B>new</B> (<I>args</I>)</P>
  
  <P>where FQCN is the fully qualified class name of which a new
  instance is to be created with the given constructor arguments
  (if any).</P>
  
  <P>java:<I>FQCN.methodName</I> (<I>args</I>)</P>
  
  <P>where <I>FQCN</I> is the fully qualified class name whose
  static method &quot;<I>methodName</I>&quot; is to be invoked
  using the given arguments. </P>
  
  <P>java:<I>methodName</I> (<I>object</I>, <I>args</I>)</P>
  
  <P>where <I>methodName</I> is the name of the (static or
  non-static) method to invoke on <I>object</I> with the given
  arguments.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Passing Nodes to java</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gi
f" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  <P>If you want to pass one or more Nodes to an extension function, set up a Java method to accept an 
  org.w3c.dom.NodeList (or an org.apache.xalan.xpath.MutableNodeList, which extends NodeList, if you want to modify the Nodes).</P>
  <P>When you call an extension function with an argument that constitutes a pattern match for one or more Nodes, the Xalan-Java extension mechanism evaluates this argument as a NodeList, even if only one Node is involved.</P>
  <P>Suppose, for example, you have a myExtensions.ProcessNodes class with the following doSomething method:</P>
  <P><CODE><FONT face="courier, monospaced">doSomething(org.w3c.dom.NodeList nList)</FONT></CODE></P>
  <P>Any of the following extension calls in a stylesheet are syntatically possible:</P>
  <P><CODE><FONT face="courier, monospaced">java:MyExtensions.ProcessNodes.doSomething(.) &lt;!-- current node --&gt;</FONT></CODE></P>
  <P><CODE><FONT face="courier, monospaced">java:MyExtensions.ProcessNodes.doSomething(*) &lt;!-- all nodes in current context--&gt;</FONT></CODE></P>
  <P><CODE><FONT face="courier, monospaced">java:MyExtensions.ProcessNodes.doSomething(/*) &lt;!-- all nodes --&gt;</FONT></CODE></P>
  <P><CODE><FONT face="courier, monospaced">java:MyExtensions.ProcessNodes.doSomething(foo/baz) &lt;!-- foo/baz nodes in current context --&gt;</FONT></CODE></P>
  <P><CODE><FONT face="courier, monospaced">java:MyExtensions.ProcessNodes.doSomething(/foo/baz | /bar/saz) &lt;!-- /foo/baz and /bar/saz nodes --&gt;</FONT></CODE></P>
  <P>The NodeList is in fact a list of references into the XML document, so keep in mind that getNextSibling(), for example, gets you the next sibling in the document, wich may not be the next Node in the NodeList.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Example 1: Named Counter Component in Java</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" s
rc="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  
  <P>MyCounter.java:</P>
  
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>  import java.util.*;
  
  public class MyCounter {
    Hashtable counters = new Hashtable ();
  
    public MyCounter () {
    }
  
    // the context arg is actually a org.apache.xalan.xslt.XSLProcessorContext
    public void init (Object context, org.w3c.dom.Element elem) {
      String name = elem.getAttribute (&quot;name&quot;);
      String value = elem.getAttribute (&quot;value&quot;);
      int val;
      try {
        val = Integer.parseInt (value);
      } catch (NumberFormatException e) {
        e.printStackTrace ();
        val = 0;
      }
      counters.put (name, new Integer (val));
    }
  
    public int read (String name) {
      Integer cval = (Integer) counters.get (name);
      return (cval == null) ? 0 : cval.intValue ();
    }
  
    public void incr(Object context, org.w3c.dom.Element elem) {
      String name = elem.getAttribute (&quot;name&quot;);
      Integer cval = (Integer) counters.get (name);
      int nval = (cval == null) ? 0 : (cval.intValue () + 1);
      counters.put (name, new Integer (nval));
    }
  }</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  
  <P>MyFamily.xml:</P>
  
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;?xml version=&quot;1.0&quot;?&gt;
  
  &lt;doc&gt;
    &lt;name first=&quot;Sanjiva&quot; last=&quot;Weerawarana&quot;/&gt;
    &lt;name first=&quot;Shahani&quot; last=&quot;Weerawarana&quot;/&gt;
    &lt;name first=&quot;Rukmal&quot; last=&quot;Weerawarana&quot;/&gt;
    &lt;name first=&quot;Sashi&quot; last=&quot;Weerawarana&quot;/&gt;
    &lt;name first=&quot;Kamal&quot; last=&quot;Fernando&quot;/&gt;
    &lt;name first=&quot;Ruby&quot; last=&quot;Fernando&quot;/&gt;
  &lt;/doc&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  
  <P>Counter.xsl:</P>
  
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;?xml version=&quot;1.0&quot;?&gt; 
  
  &lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
                  xmlns:lxslt=&quot;http://xsl.lotus.com/&quot;
                  xmlns:counter=&quot;MyCounter&quot;
                  extension-element-prefixes=&quot;counter&quot;&gt;
  
    &lt;!-- note that the component definition is optional because I
         used the fully qualified class name of the implementation
         as the URI for this namespace. --&gt;
    &lt;lxslt:component prefix=&quot;counter&quot;
                     elements=&quot;init incr&quot; functions=&quot;read&quot;&gt;
      &lt;lxslt:script lang=&quot;javaclass&quot; src=&quot;MyCounter&quot;/&gt;
    &lt;/lxslt:component&gt;
  
    &lt;xsl:template match=&quot;/&quot;&gt;
      &lt;HTML&gt;
        &lt;H1&gt;Test for namespace specified Java extension.&lt;/H1&gt;
        &lt;counter:init name=&quot;index&quot; value=&quot;1&quot;/&gt;
        &lt;p&gt;Here are the names in alphabetical order by last name:&lt;/p&gt;
        &lt;xsl:for-each select=&quot;doc/name&quot;&gt;
          &lt;xsl:sort select=&quot;@last&quot;/&gt;
          &lt;xsl:sort select=&quot;@first&quot;/&gt;
          &lt;p&gt;
          &lt;xsl:text&gt;[&lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;counter:read('index')&quot;/&gt;
          &lt;xsl:text&gt;]. &lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;@last&quot;/&gt;
          &lt;xsl:text&gt;, &lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;@first&quot;/&gt;
          &lt;/p&gt;
          &lt;counter:incr name=&quot;index&quot;/&gt;
        &lt;/xsl:for-each&gt;
      &lt;/HTML&gt;
    &lt;/xsl:template&gt;
   
  &lt;/xsl:stylesheet&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  
  <P>Output:</P>
  
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;HTML&gt;
    &lt;H1&gt;Test for namespace specified Java extension.&lt;/H1&gt;
    &lt;p&gt;Here are the names in alphabetical order by last name, first name:&lt;/p&gt;
    &lt;p&gt;[1]. Fernando, Kamal&lt;/p&gt;
    &lt;p&gt;[2]. Fernando, Ruby&lt;/p&gt;
    &lt;p&gt;[3]. Weerawarana, Rukmal&lt;/p&gt;
    &lt;p&gt;[4]. Weerawarana, Sanjiva&lt;/p&gt;
    &lt;p&gt;[5]. Weerawarana, Sashi&lt;/p&gt;
    &lt;p&gt;[6]. Weerawarana, Shahani&lt;/p&gt;
  &lt;/HTML&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Example 2: Named Counter Component Implemented Using Java XPath Extension Namespace</B></FONT></TD><TD bgcolor="#017299" width="1
"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  
  <P>Counter.xsl:</P>
  
  <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>&lt;?xml version=&quot;1.0&quot;?&gt; 
  
  &lt;!-- named counter functionality done using java: --&gt;
  
  &lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
                  xmlns:java=&quot;http://xsl.lotus.com/java&quot;&gt;
  
    &lt;xsl:template match=&quot;/&quot;&gt;
      &lt;HTML&gt;
        &lt;H1&gt;Test for namespace specified Java extension.&lt;/H1&gt;
        &lt;xsl:variable name=&quot;counter-table&quot; 
                      select=&quot;java:java.util.Hashtable.new ()&quot;/&gt;
        &lt;!-- do following for side-effect --&gt;
        &lt;xsl:if test=&quot;java:put ($counter-table, 'index', 1)&quot;/&gt;
        &lt;p&gt;Here are the names in alphabetical order by last name, first name:&lt;/p&gt;
        &lt;xsl:for-each select=&quot;doc/name&quot;&gt;
          &lt;xsl:sort select=&quot;@last&quot;/&gt;
          &lt;xsl:sort select=&quot;@first&quot;/&gt;
          &lt;p&gt;
          &lt;xsl:text&gt;[&lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;java:get ($counter-table, 'index')&quot;/&gt;
          &lt;xsl:text&gt;]. &lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;@last&quot;/&gt;
          &lt;xsl:text&gt;, &lt;/xsl:text&gt;
          &lt;xsl:value-of select=&quot;@first&quot;/&gt;
          &lt;/p&gt;
          &lt;!-- do following for side-effect --&gt;
          &lt;xsl:if test=&quot;java:put ($counter-table, 'index',
                                  java:get($counter-table,'index')+1)&quot;/&gt;
        &lt;/xsl:for-each&gt;
      &lt;/HTML&gt;
    &lt;/xsl:template&gt;
   
  &lt;/xsl:stylesheet&gt;</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
  
  <P>Produces the same results.</P>
  </FONT></TD></TR></TABLE><BR>
  <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Example 3: Redirecting transformation output to multiple files</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" hei
ght="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
  <P>For information on using the Redirect extension to send output to mulitple files, see <A href="apidocs/org/apache/xalan/xslt/extensions/Redirect.html" target="_top">Redirect class</A>.</P>
  </FONT></TD></TR></TABLE><BR>
  </TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD bgcolor="#0086b2"><IMG height="1" src="images/dot.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#0086b2" size="-1"><I>
                Copyright &copy; 1999 The Apache Software Foundation.
                All Rights Reserved.
              </I></FONT></TD></TR></TABLE></BODY></HTML>
  
  

Mime
View raw message