You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general-cvs@xml.apache.org by dl...@apache.org on 2001/07/27 16:34:05 UTC

cvs commit: xml-site/targets/xalan-j xsltc_usage.html

dleslie     01/07/27 07:34:05

  Modified:    targets/xalan-j xsltc_usage.html
  Log:
  filled in section on using native xstlc api.
  
  Revision  Changes    Path
  1.3       +272 -12   xml-site/targets/xalan-j/xsltc_usage.html
  
  Index: xsltc_usage.html
  ===================================================================
  RCS file: /home/cvs/xml-site/targets/xalan-j/xsltc_usage.html,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- xsltc_usage.html	2001/07/03 18:44:13	1.2
  +++ xsltc_usage.html	2001/07/27 14:34:05	1.3
  @@ -1,10 +1,7 @@
   <HTML><HEAD><SCRIPT language="JavaScript" src="resources/script.js" type="text/javascript"></SCRIPT><TITLE>Using XSLTC</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/xsltc_usage-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 href="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="index.html" onMouseOut="rolloverOff('side-index');" onMouseOver="rolloverOn('side-index');"><IMG alt="Xalan-J 2.2.D6" border="0" height="12" hspace="0" name="side-index" onLoad="rolloverLoad('side-index','graphics/index-label-2.jpg','graphics/index-label-3.jpg');" src="graphics/index-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="whatsnew.html" onMouseOut="rolloverOff('side-whatsnew');" onMouseOver="rolloverOn('side-whatsnew');"><IMG alt="What's New" border="0" height="12" hspace="0" name="side-whatsnew" onLoad="rolloverLoad('side-whatsnew','graphics/whatsnew-label-2.jpg','graphics/whatsnew-label-3.jpg');" src="graphics/whatsnew-label-3.jpg" vspace="0" width="120"></A><BR>
  -  <A href="dtm.html" onMouseOut="rolloverOff('side-dtm');" onMouseOver="rolloverOn('side-dtm');"><IMG alt="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>  
  +  <A href="dtm.html" onMouseOut="rolloverOff('side-dtm');" onMouseOver="rolloverOn('side-dtm');"><IMG alt="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 alt="XSLTC Translets" border="0" height="12" hspace="0" src="graphics/xsltc_usage-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="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>
  @@ -18,21 +15,21 @@
     <A href="usagepatterns.html" onMouseOut="rolloverOff('side-usagepatterns');" onMouseOver="rolloverOn('side-usagepatterns');"><IMG alt="Usage Patterns" border="0" height="12" hspace="0" name="side-usagepatterns" onLoad="rolloverLoad('side-usagepatterns','graphics/usagepatterns-label-2.jpg','graphics/usagepatterns-label-3.jpg');" src="graphics/usagepatterns-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="trax.html" onMouseOut="rolloverOff('side-trax');" onMouseOver="rolloverOn('side-trax');"><IMG alt="TrAX" border="0" height="12" hspace="0" name="side-trax" onLoad="rolloverLoad('side-trax','graphics/trax-label-2.jpg','graphics/trax-label-3.jpg');" src="graphics/trax-label-3.jpg" vspace="0" width="120"></A><BR>
  -  <A href="apidocs/index.html" onMouseOut="rolloverOff('side-ext-40');" onMouseOver="rolloverOn('side-ext-40');"><IMG alt="API (Javadoc)" border="0" height="12" hspace="0" name="side-ext-40" onLoad="rolloverLoad('side-ext-40','graphics/ext-40-label-2.jpg','graphics/ext-40-label-3.jpg');" src="graphics/ext-40-label-3.jpg" vspace="0" width="120"></A><BR>
  +  <A href="apidocs/index.html" onMouseOut="rolloverOff('side-ext-34');" onMouseOver="rolloverOn('side-ext-34');"><IMG alt="API (Javadoc)" border="0" height="12" hspace="0" name="side-ext-34" onLoad="rolloverLoad('side-ext-34','graphics/ext-34-label-2.jpg','graphics/ext-34-label-3.jpg');" src="graphics/ext-34-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="extensions.html" onMouseOut="rolloverOff('side-extensions');" onMouseOver="rolloverOn('side-extensions');"><IMG alt="Extensions" border="0" height="12" hspace="0" name="side-extensions" onLoad="rolloverLoad('side-extensions','graphics/extensions-label-2.jpg','graphics/extensions-label-3.jpg');" src="graphics/extensions-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="extensionslib.html" onMouseOut="rolloverOff('side-extensionslib');" onMouseOver="rolloverOn('side-extensionslib');"><IMG alt="Extensions Library" border="0" height="12" hspace="0" name="side-extensionslib" onLoad="rolloverLoad('side-extensionslib','graphics/extensionslib-label-2.jpg','graphics/extensionslib-label-3.jpg');" src="graphics/extensionslib-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="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="design/design2_0_0.html" onMouseOut="rolloverOff('side-ext-54');" onMouseOver="rolloverOn('side-ext-54');"><IMG alt="Xalan 2 Design" border="0" height="12" hspace="0" name="side-ext-54" onLoad="rolloverLoad('side-ext-54','graphics/ext-54-label-2.jpg','graphics/ext-54-label-3.jpg');" src="graphics/ext-54-label-3.jpg" vspace="0" width="120"></A><BR>
  -  <A href="xsltc/index.html" onMouseOut="rolloverOff('side-ext-56');" onMouseOver="rolloverOn('side-ext-56');"><IMG alt="XSLTC Design" border="0" height="12" hspace="0" name="side-ext-56" onLoad="rolloverLoad('side-ext-56','graphics/ext-56-label-2.jpg','graphics/ext-56-label-3.jpg');" src="graphics/ext-56-label-3.jpg" vspace="0" width="120"></A><BR>  
  +  <A href="design/design2_0_0.html" onMouseOut="rolloverOff('side-ext-48');" onMouseOver="rolloverOn('side-ext-48');"><IMG alt="Xalan 2 Design" border="0" height="12" hspace="0" name="side-ext-48" onLoad="rolloverLoad('side-ext-48','graphics/ext-48-label-2.jpg','graphics/ext-48-label-3.jpg');" src="graphics/ext-48-label-3.jpg" vspace="0" width="120"></A><BR>
  +  <A href="xsltc/index.html" onMouseOut="rolloverOff('side-ext-50');" onMouseOver="rolloverOn('side-ext-50');"><IMG alt="XSLTC Design" border="0" height="12" hspace="0" name="side-ext-50" onLoad="rolloverLoad('side-ext-50','graphics/ext-50-label-2.jpg','graphics/ext-50-label-3.jpg');" src="graphics/ext-50-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="readme.html#bugs" onMouseOut="rolloverOff('side-ext-60');" onMouseOver="rolloverOn('side-ext-60');"><IMG alt="Bugs" border="0" height="12" hspace="0" name="side-ext-60" onLoad="rolloverLoad('side-ext-60','graphics/ext-60-label-2.jpg','graphics/ext-60-label-3.jpg');" src="graphics/ext-60-label-3.jpg" vspace="0" width="120"></A><BR>  
  -  <A href="http://xml.apache.org/xalan-j/test/overview.html" onMouseOut="rolloverOff('side-ext-62');" onMouseOver="rolloverOn('side-ext-62');"><IMG alt="Testing" border="0" height="12" hspace="0" name="side-ext-62" onLoad="rolloverLoad('side-ext-62','graphics/ext-62-label-2.jpg','graphics/ext-62-label-3.jpg');" src="graphics/ext-62-label-3.jpg" vspace="0" width="120"></A><BR>
  +  <A href="readme.html#bugs" onMouseOut="rolloverOff('side-ext-54');" onMouseOver="rolloverOn('side-ext-54');"><IMG alt="Bugs" border="0" height="12" hspace="0" name="side-ext-54" onLoad="rolloverLoad('side-ext-54','graphics/ext-54-label-2.jpg','graphics/ext-54-label-3.jpg');" src="graphics/ext-54-label-3.jpg" vspace="0" width="120"></A><BR>
  +  <A href="http://xml.apache.org/xalan-j/test/overview.html" onMouseOut="rolloverOff('side-ext-56');" onMouseOver="rolloverOn('side-ext-56');"><IMG alt="Testing" border="0" height="12" hspace="0" name="side-ext-56" onLoad="rolloverLoad('side-ext-56','graphics/ext-56-label-2.jpg','graphics/ext-56-label-3.jpg');" src="graphics/ext-56-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="todo.html#developer-list" onMouseOut="rolloverOff('side-ext-66');" onMouseOver="rolloverOn('side-ext-66');"><IMG alt="Credits" border="0" height="12" hspace="0" name="side-ext-66" onLoad="rolloverLoad('side-ext-66','graphics/ext-66-label-2.jpg','graphics/ext-66-label-3.jpg');" src="graphics/ext-66-label-3.jpg" vspace="0" width="120"></A><BR>
  -  <A href="xsltc/todo.html#developer-list" onMouseOut="rolloverOff('side-ext-68');" onMouseOver="rolloverOn('side-ext-68');"><IMG alt="XSLTC Credits" border="0" height="12" hspace="0" name="side-ext-68" onLoad="rolloverLoad('side-ext-68','graphics/ext-68-label-2.jpg','graphics/ext-68-label-3.jpg');" src="graphics/ext-68-label-3.jpg" vspace="0" width="120"></A><BR>      
  +  <A href="todo.html#developer-list" onMouseOut="rolloverOff('side-ext-60');" onMouseOver="rolloverOn('side-ext-60');"><IMG alt="Credits" border="0" height="12" hspace="0" name="side-ext-60" onLoad="rolloverLoad('side-ext-60','graphics/ext-60-label-2.jpg','graphics/ext-60-label-3.jpg');" src="graphics/ext-60-label-3.jpg" vspace="0" width="120"></A><BR>
  +  <A href="xsltc/todo.html#developer-list" onMouseOut="rolloverOff('side-ext-62');" onMouseOver="rolloverOn('side-ext-62');"><IMG alt="XSLTC Credits" border="0" height="12" hspace="0" name="side-ext-62" onLoad="rolloverLoad('side-ext-62','graphics/ext-62-label-2.jpg','graphics/ext-62-label-3.jpg');" src="graphics/ext-62-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>
   
   <UL>
  @@ -41,6 +38,7 @@
     <LI><A href="#compile">Compiling translets from the command line</A></LI>
     <LI><A href="#run">Running translets from the command line</A></LI>
     <LI><A href="#api">Calling XSLTC with the TrAX/JAXP API</A></LI>
  +  <LI><A href="#native_api">Calling XSLTC with the native API</A></LI>
     <LI><A href="#constraints">XSLTC usage constraints</A></LI>  
   </UL>
   <P>See also: <A href="xsltc/index.html">XSLTC Design</A></P>
  @@ -382,7 +380,269 @@
                         new StreamResult(new FileOutputStream(htmlOutURI)));</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>For a working sample that illustrates this usage pattern, see <A href="samples.html#xsltc2">JAXPTransletMultipleTransformations</A>.</P>
   </FONT></TD></TR></TABLE><BR>
  -</FONT></TD></TR></TABLE><BR><A name="constraints"><!--anchor--></A>
  +</FONT></TD></TR></TABLE><BR><A name="native_api"><!--anchor--></A>
  +<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>Calling XSLTC with the native API</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>This section demonstrates how to use the native XSLTC API in a standalone Java application.</P> 
  +<P>Processing an XML document with a translet involves three main steps:</P>
  +<OL> 
  +  <LI><A href="#native_compile">Compile the stylesheet to a translet</A>.</LI>
  +  <LI><A href="#native_parse">Parse the input XML document</A>.</LI> 
  +  <LI><A href="#native_transform">Use the translet to transform the XML document</A>.</LI>
  +</OL><A name="native_overview"><!--anchor--></A>
  +<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>Code overview</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">
  +<P>XsltApp.java illustrates the basic structure for coding a transformation with the native XSLTC API. In the following listing, the method for performing each of the three steps is an empty shell. The methods are filled in the listings in subsequent sections.</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 org.apache.xalan.xsltc.Translet;
  +import org.apache.xalan.xsltc.dom.DOMImpl;
  +
  +public class XsltApp {
  +  public static void main(String[] args) {
  +    XsltApp proc = new XsltApp();
  +    proc.run(args);
  +  }
  +
  +  public void run(String[] args) {
  +    if (args.length != 2) {
  +      System.err.println(&quot;Usage:\n\tprocessor &lt;xmlfile&gt; &lt;xslfile&gt;&quot; +
  +            &quot;\n\n\twhere &lt;xmlfile&gt; = xml input filename, and&quot; +
  +            &quot;\n\t      &lt;xslfile&gt; = stylesheet filename.&quot;);
  +      System.exit(1);
  +    }
  +    String xmldocFilename     = args[0];
  +    String stylesheetFilename = args[1];
  +
  +    // Compile the stylesheet to a translet
  +    Translet translet = compileStylesheet(stylesheetFilename);
  +
  +    // Parse the input XML document
  +    DOMImpl dom = getDOM(xmldocFilename);
  +
  +    // Transform the XML document against the translet
  +    doTransform(translet, dom);
  +    System.exit(0);
  +  }
  +  
  +  // compile the stylesheet [Empty shell: see below]
  +  private Translet compileStylesheet(String stylesheetName) { return null; }
  +
  +  // parse the input XML document [Empty shell: see below]
  +  private DOMImpl getDOM(String xmldocname) { return null; }
  +
  +  // transform the XML document [Empty shell: see below]
  +  private void doTransform(Translet translet, DOMImpl dom) { }
  +}</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>XsltApp takes two command line arguments: the input XML document filename, and the
  +XSL stylesheet filename. The public run() method processes the commandline args,
  +and then carries out the three steps.</P> 
  +<P>The first step is accomplished by calling the compileStylesheet() method. This method
  +takes the stylesheet filename as input (String), and returns an instance
  +of the translet, as type org.apache.xalan.xsltc.Translet.</P>
  +
  +<P>The input XML document now needs to be parsed. This is accomplished by the getDOM() method. This method takes the XML document's filename (String)
  +and returns the Document Object Model for the document, as an object of
  +type org.apache.xalan.xsltc.dom.DOMImpl. </P>
  +
  +<P>Finally, the transformation prescribed by the stylesheet is carried out by
  +calling the doTransform() method. This method takes the translet (compiled
  +stylesheet) and the dom (Document Object Model for the XML document) as
  +input parameters. In this example, the results of the transformation are
  +output to standard output, so this method returns nothing. </P>
  +
  +<P>If all three steps are carried out successfully, the application exits with
  +a successful (zero) value.</P>
  +
  +<P>The following sections examine each of the three steps in detail.</P>
  +</FONT></TD></TR></TABLE><BR><A name="native_compile"><!--anchor--></A>
  +<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>1. Compiling the Stylesheet to a Translet</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">
  +<P>The 'compileStylesheet' method:</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.io.File;
  +import java.net.MalformedURLException; 
  +import org.apache.xalan.xsltc.compiler.XSLTC;
  +...
  +  private Translet compileStylesheet(String stylesheetName) {
  +    Translet retval = null;
  +    String transletName = stylesheetName.substring(0,
  +                              stylesheetName.indexOf('.'));
  +    try {
  +      XSLTC xsltc = new XSLTC();
  +      xsltc.init();
  +      File stylesheet = new File(stylesheetName);
  +      xsltc.compile(stylesheet.toURL());
  +      Class clazz = Class.forName(transletName);
  +      retval = (Translet)clazz.newInstance();
  +    } 
  +    catch (MalformedURLException e) {
  +      System.err.println(&quot;Could not create URL to stylesheet file: &quot; +
  +                          stylesheetName + &quot;.\n&quot; + e.getMessage());
  +      System.exit(1);
  +    } 
  +    catch (ClassNotFoundException e) {
  +      System.err.println(&quot;Could not find class file: &quot; +
  +                          transletName + &quot;.class .\n&quot; + e.getMessage());
  +      System.exit(1);
  +    } 
  +    catch (InstantiationException e) {
  +      System.err.println(&quot;Could not instantiate class file: &quot; +
  +                          transletName + &quot;.class .\n&quot; + e.getMessage());
  +      System.exit(1);
  +    } 
  +    catch (IllegalAccessException e) {
  +      System.err.println(&quot;Could not instantiate class file: &quot; +
  +            transletName + &quot;.class, illegal access.\n&quot; + e.getMessage());
  +      System.exit(1);
  +    }
  +    return retval;
  +  }</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>This method reads in the stylesheet file, compiles it to Java bytecodes 
  +(the translet), and then writes the bytecodes to the filesystem, as a 
  +series of .class files. Their base name is derived from the name of the 
  +stylesheet. </P>
  +
  +<P>The XSLT compiler object (org.apache.xalan.xsltc.compiler.XSLTC), is created,
  +initialized and then its compile() method is called passing in a URL
  +to the stylesheet itself. Once the .class files have been written,
  +the translet is instantiated using Java reflection to create the Class
  +and then a new instance of the Class as 'retval' of type 
  +org.apache.xalan.xsltc.Translet. </P>
  +
  +<P>Notice all of the various exceptions that could be thrown in the process
  +have been handled with explicit warning messages and a System.exit with a non-zero return value. 
  +In your applications, you may want to handle these exceptions differently.</P>
  +
  +</FONT></TD></TR></TABLE><BR><A name="native_parse"><!--anchor--></A>
  +<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>2. Parsing the XML Document</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">
  +
  +<P>Parsing the input XML document is handled in the getDOM() method:</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.io.IOException;
  +import javax.xml.parsers.SAXParserFactory;
  +import javax.xml.parsers.SAXParser;
  +import javax.xml.parsers.ParserConfigurationException;
  +import org.apache.xalan.xsltc.compiler.Constants;
  +import org.apache.xalan.xsltc.dom.DTDMonitor;
  +import org.xml.sax.XMLReader;
  +import org.xml.sax.SAXException;
  +...
  +  private DTDMonitor _dtdMonitor = null;
  +
  +  private DOMImpl getDOM(String xmldocname) {
  +    final SAXParserFactory factory = SAXParserFactory.newInstance();
  +    try {
  +      factory.setFeature(Constants.NAMESPACE_FEATURE, true);
  +    } 
  +    catch (Exception e) {
  +      factory.setNamespaceAware(true);
  +    }
  +    final DOMImpl dom = new DOMImpl();
  +    dom.setDocumentURI(xmldocname);
  +    XMLReader reader = null;
  +    SAXParser parser = null;
  +    _dtdMonitor = new DTDMonitor();
  +    try {
  +      parser = factory.newSAXParser();
  +      reader = parser.getXMLReader();
  +      reader.setContentHandler(dom.getBuilder());
  +      _dtdMonitor.handleDTD(reader);
  +      reader.parse(xmldocname);
  +    } 
  +    catch (ParserConfigurationException e) {
  +      System.err.println(&quot;SAX Parser is not configured properly.\n&quot;+
  +                          e.getMessage());
  +      System.exit(1);
  +    } 
  +    catch (SAXException e ) {
  +      System.err.println(&quot;SAX Parser could not be created.\n&quot;+
  +                          e.getMessage());
  +      System.exit(1);
  +    } 
  +    catch (IOException e ) {
  +      System.err.println(&quot;XML Reader could not read xml document '&quot;+
  +                          xmldocname + &quot;',&quot; + e.getMessage());
  +      System.exit(1);
  +    }
  +    return dom;
  +  }</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>The method parses the input XML document and creates a Document
  +Object Model to return to the run() method for later use. To parse the 
  +document we use a javax.xml.parsers.SAXParser, from the JAXP.  The JAXP
  +model uses a factory method; accordingly we first create the factory,
  +which is of type javax.xml.parsers.SAXParserFactory. After configuring 
  +the factory to handle namespaces, the procedure gets an org.xml.sax.XMLReader
  +from the SAXParser. The reader is registered
  +with the class DTDMonitor, and then the reader is instructed to parse
  +the XML document. The DOMImpl object is returned to the main() method.</P> 
  +
  +<TABLE border="0" cellpadding="0" cellspacing="3" width="100%"><TR><TD valign="top" width="20"><IMG alt="Note" border="0" height="24" hspace="0" src="resources/note.gif" vspace="0" width="20"></TD><TD valign="top"><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"><I>Before the document is parsed, the DOMImpl is configured with the
  +XML document's URI with a call to the setDocumentURI() method. This
  +is necessary to define the origin of the document from which the DOM tree
  +is built. This information is needed for xsl:import, xsl:include, and
  +the document() function.</I></FONT></TD></TR></TABLE>
  +</FONT></TD></TR></TABLE><BR><A name="native_transform"><!--anchor--></A>
  +<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>3. Doing the Transformation</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">
  +
  +<P>Now everything is set to carry out the XSL transformation. The doTransform()
  +method takes a reference to the Translet object generated 
  +from the stylesheet, and the DOMImpl object created from the XML document.</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.io.IOException;
  +import org.apache.xalan.xsltc.runtime.DefaultSAXOutputHandler;
  +import org.apache.xalan.xsltc.runtime.TextOutput;
  +import org.apache.xalan.xsltc.runtime.AbstractTranslet;
  +import org.apache.xalan.xsltc.TransletException;
  +...
  +  private void doTransform(Translet translet, DOMImpl dom) {
  +    DefaultSAXOutputHandler outputhandlr = null;
  +    TextOutput textoutput = null;
  +    try {
  +      outputhandlr= new DefaultSAXOutputHandler(System.out, &quot;utf-8&quot;);
  +      textoutput = new TextOutput(outputhandlr, &quot;utf-8&quot;);
  +    } 
  +    catch (IOException e) {
  +      System.err.println(&quot;Could not create SAX Output Handler.&quot;+
  +                          e.getMessage());
  +      System.exit(1);
  +    }
  +  
  +    // for XSL keys
  +    AbstractTranslet absTranslet = (AbstractTranslet)translet;
  +    absTranslet.setIndexSize(dom.getSize());
  +    _dtdMonitor.buildIdIndex(dom, 0, absTranslet);
  +
  +    try {
  +      absTranslet.transform(dom, textoutput);
  +    } 
  +    catch (TransletException e) {
  +      System.err.println(&quot;Could not transform XML document.&quot;+
  +                          e.getMessage());
  +      System.exit(1);
  +    }
  +  }</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>The Translet's transform() method takes two arguments: the DOMImpl
  +reference created in the getDOM() method, and an xsltc.runtime.TextOutput
  +object. TextOutput is a ContentHandler wrapper class that implements the
  +xsltc.TransletOutputHandler interface. In this example, the content
  +handler (DefaultSAXOutputHandler) is wrapped.</P>     
  +
  +<P>Translet is an interface. AbstractTranslet is a class that implements that
  +interface. Before the transform() method is called, setIndexSize(int)
  +is called to pass in the maximum DOM size to the translet and the DTDMonitor
  +is called to build the node index that the Key (xsl:key implementation)
  +class uses. This is a general case, if you are not using keys, then you
  +do not need to set the index size, consequently you would not need to
  +work with the AbstractTranslet either. In that case, you can  use the
  +Translet directly by calling translet.transform(dom, textoutput). </P>
  +</FONT></TD></TR></TABLE><BR><A name="native_conclusion"><!--anchor--></A>
  +<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>Conclusion</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">
  +<P>The native XSLT compiler API provides a way to compile an XSL stylesheet
  +into a translet. The translet can then be used to transform the DOMImpl
  +of an input XML document.   This example demonstrated how to compile a
  +stylesheet into a translet, parse an input XML document, and then transform
  +the XML document using the translet.</P>
  +</FONT></TD></TR></TABLE><BR></FONT></TD></TR></TABLE><BR><A name="constraints"><!--anchor--></A>
   <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>XSLTC usage constraints</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>See <A href="readme.html#xsltcconf">Conformance issues</A> and <A href="readme.html#xsltcknownproblems">Known problems</A>.</P>
   </FONT></TD></TR></TABLE><BR>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: general-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: general-cvs-help@xml.apache.org