You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by dl...@apache.org on 2001/02/12 22:43:52 UTC

cvs commit: xml-xalan/c/xdocs/sources/xalan DONE STATUS commandline.xml getstarted.xml index.xml readme.xml samples.xml usagepatterns.xml

dleslie     01/02/12 13:43:52

  Modified:    c/xdocs/sources/xalan DONE STATUS commandline.xml
                        getstarted.xml index.xml readme.xml samples.xml
                        usagepatterns.xml
  Log:
  Updates in progress for Xalan-C 1.1.
  
  Revision  Changes    Path
  1.9       +11 -5     xml-xalan/c/xdocs/sources/xalan/DONE
  
  Index: DONE
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/DONE,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DONE	2000/12/13 16:04:29	1.8
  +++ DONE	2001/02/12 21:43:48	1.9
  @@ -1,11 +1,17 @@
   <s3 title="Changes since &xslt4c; version 1.0">
  -<p>In addition to adding a build for HP-UX 11, our focus for this release has been on bug fixes and performance enhancements. Major updates since version 0.40.0 include:</p>
  +<p>In addition to adding to the list of platforms on which &xslt4c; builds, our focus for this release has been on bug fixes, performance enhancements, 
  +and providing a simplified C++ and C API for performing standard transformations. Major updates since version 1.0 include:</p>
   <ul>
  -<li>Added a build for HP-UX 11<br/><br/></li>
  +<li>Added builds for HP-UX 11 and Solaris.<br/><br/></li>
  +<li>Simplified the C++ API and provided a C API for performing standard transformations with the <link idref="usagepatterns" 
  +anchor="xalantransformer">XalanTransformer</link> class and associated header files.<br/><br/></li>
  +<li>Added samples illustrating the new C++ API (<link idref="samples" anchor="xalantransform">XalanTransform</link>) and C API
  +(<link idref="samples" anchor="apachemodulexslt">ApacheModuleXSLT</link>). ApacheModuleXSLT also shows how to run &xslt4c; on an
  +Apache Web server.<br/><br/></li>
   <li>Added the <link idref="samples" anchor="streamtransform">StreamTransform</link> sample.<br/><br/></li>
  -<li><br/><br/></li>
  -<li><br/><br/></li>
  -<li></li>
  +<li>xxxxxxxxxx<br/><br/></li>
  +<li>yyyyyyyyyy<br/><br/></li>
  +<li>zzzzzzzzzzzzzz</li>
   </ul>
   </s3>
   	
  
  
  
  1.12      +1 -1      xml-xalan/c/xdocs/sources/xalan/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/STATUS,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- STATUS	2000/12/12 22:47:31	1.11
  +++ STATUS	2001/02/12 21:43:49	1.12
  @@ -6,7 +6,7 @@
       <ul>
          <li>Add support for extension elements<br/><br/></li>
          <li>Fix any conformance bugs we or our users find<br/><br/></li>
  -       <li>Investigate introducing an API along the lines of the Java TRaX (Transformations for XML) interfaces<br/><br/></li>
  +       <li>Expand the XalanTransformer simplified API.<br/><br/></li>
          <li>Implement a more efficient mechanism for storing and navigating DOM trees, along the lines of the &xslt4j; Document
          Table Model (DTM)</li> 
       </ul>
  
  
  
  1.17      +3 -3      xml-xalan/c/xdocs/sources/xalan/commandline.xml
  
  Index: commandline.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/commandline.xml,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- commandline.xml	2001/02/08 15:54:48	1.16
  +++ commandline.xml	2001/02/12 21:43:49	1.17
  @@ -136,8 +136,8 @@
        </ol>     
        </s3>
        <s3 title="Rebuilding TestXSLT in UNIX">
  -     <p>In Linux, AIX, and HP-UX 11, the ICUBridge is in the core Xalan library (&xml4c-linuxlib; in Linux; &xml4c-aixlib; in
  -     AIX; &xml4c-hplib; in HP-UX 11), so you must rebuild this library along with TestXSLT.</p>
  +     <p>In the Linux, AIX, HP-UX 11, and Solaris builds, the ICUBridge is in the core Xalan library (&xslt4c-linuxlib; in Linux; &xslt4c-aixlib; in
  +     AIX; &xslt4c-hplib; in HP-UX 11; &xslt4c-solarislib; in Solaris), so you must rebuild this library along with TestXSLT.</p>
        <p>Before you do the build, define the XALAN_USE_ICU environment variable.  For information about defining this
        environment variable and doing a build, see <link idref="readme" anchor="unix">Steps for doing a
        UNIX build</link>.</p>
  @@ -145,7 +145,7 @@
        ICUBridge to the list of dependencies for TestXSLT. If you uncomment the <code>#define XALAN_USE_ICU</code>
        statement in process.cpp (which is the right thing to do in Windows), you will get an error in AIX ("The
        macro 'XALAN_USE_ICU' has already been defined"), an error in HP-UX 11 ("Redefinition of macro 'XALAN-USE_ICU' 
  -     differs from previous definition"), or a warning in Linux about duplicate settings when you
  +     differs from previous definition"), or a warning in Linux or Solaris about duplicate settings when you
        run the make, and TestXSLT does not link with ICUBridge.</note>
        </s3>
      </s2>
  
  
  
  1.21      +4 -3      xml-xalan/c/xdocs/sources/xalan/getstarted.xml
  
  Index: getstarted.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/getstarted.xml,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- getstarted.xml	2001/02/09 15:08:03	1.20
  +++ getstarted.xml	2001/02/12 21:43:49	1.21
  @@ -57,8 +57,8 @@
   <p><em>Solaris</em></p>
   <ul>
     <li>The executable: TestXSLT</li>
  -  <li>The Xalan-C++ XXX library: &xslt4c-solarislib;</li>
  -  <li>The Xerces-C++ XXX library: &xml4c-solarislib;</li>
  +  <li>The Xalan-C++ shared library: &xslt4c-solarislib;</li>
  +  <li>The Xerces-C++ shared library: &xml4c-solarislib;</li>
   </ul>
   <p>If you want to enable ICU support for the command-line utility, you must build the ICU and rebuild the Xalan-C++ shared/load library (Linux/AIX/HP-UX 11) and TestXSLT (all platforms) with the ICUBridge. See <link idref="usagepatterns" anchor="icu">Using the ICU</link> and <link idref="commandline" anchor="icu">Enabling ICU support for TestXSLT</link>.</p>
   <p>For information about using the command-line utility, see <link idref="commandline">Command-Line Utility</link>.</p>
  @@ -73,6 +73,7 @@
   <p>In the Linux distribution (built with a make file and the GNU C++ compiler on Red Hat Linux 6.1), the shared object libraries are in the lib subdirectories.</p>
   <p>In the AIX distribution (built with the make file and xlC_r), the load libraries are in the lib subdirectories.</p>
   <p>In the HP-UX 11 distribution (built with the make file and aCC), the shared libraries are in the lib subdirectories.</p>
  +<p>In the Solaris distribution (built with the make file and CC), the shared libraries are in the lib subdirectories.</p>
   <note>For your convenience, both the Xalan and Xerces libraries are placed together in the pertinent xml-xalan directory, whereas the corresponding xml-xerces directory only contains Xerces libraries.</note>
   <p>If you want to enable ICU support in your applications, you must rebuild the Xalan-C++ shared/load library (Linux/AIX) and include the ICUBridge headers (all platforms).</p>
   <p>For the requirements for rebuilding &xslt4c;, see the <link idref="readme" anchor="build">Build notes</link>.</p>
  @@ -83,7 +84,7 @@
   <p>For the Xalan-C++ Linux distribution, place xml-xalan/c/bin and xml-xalan/c/lib on the shared library path (LD_LIBRARY_PATH for Red Hat Linux 6.1), or copy &xslt4c-linuxlib; to /usr/lib.</p>
   <p>For the Xalan-C++ AIX distribution, place xml-xalan/c/bin and xml-xalan/c/lib on the load library path (LIBPATH), or copy &xslt4c-aixlib; to /usr/lib.</p>
   <p>For the Xalan-C++ HP-UX 11 distribution, place xml-xalan/c/bin and xml-xalan/c/lib on the shared library path (SHLIB_PATH), or copy &xslt4c-aixlib; to /usr/lib.</p>
  -
  +<p>For the Xalan-C++ Solaris distribution, place xml-xalan/c/bin and xml-xalan/c/lib on the shared library path (LD_LIBRARY_PATH), or copy &xslt4c-solarislib; to /usr/lib.</p>
   <p>If you do your own Xalan, ICU, and Xerces builds, be sure to include the directories that contain the libraries and the TextXSLT executable on your path.</p>
   </s2><anchor name="samples"/>
   <s2 title="Trying out the samples">
  
  
  
  1.18      +2 -2      xml-xalan/c/xdocs/sources/xalan/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/index.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- index.xml	2001/02/09 15:08:04	1.17
  +++ index.xml	2001/02/12 21:43:49	1.18
  @@ -64,9 +64,9 @@
       <p>Xalan is an XSLT processor for transforming XML documents into HTML, text, or other XML
        document types.</p>
       <p>&xslt4c-current; is a robust implementation of the W3C Recommendations 
  -    for XSL Transformations (XSLT) and the XML Path Language (XPath). It includes a custom release of the 
  +    for XSL Transformations (XSLT) and the XML Path Language (XPath). It includes a compatible release of the 
       &xml4c; XML parser: &xml4c-used;. In addition to adding a build for Solaris, the focus for this release 
  -    is on bug fixes, performance enhancements, and packaging a simpler C++ and C API for performing standard transformations. 
  +    is on bug fixes, performance enhancements, and providing a simpler C++ and C API for performing standard transformations. 
       For the details, see the <link idref="readme">Release Notes</link>.</p>
   	</s2>
     
  
  
  
  1.22      +3 -2      xml-xalan/c/xdocs/sources/xalan/readme.xml
  
  Index: readme.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/readme.xml,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- readme.xml	2001/02/08 15:55:00	1.21
  +++ readme.xml	2001/02/12 21:43:50	1.22
  @@ -143,7 +143,7 @@
         <li>Set the XERCESCROOT environment variable to the root of xml-xerces.<br/><br/></li>    
         <li>Set the XALANCROOT environment variable to the complete path to the root of the &xslt4c;
          distribution.<br/><br/></li>
  -      <li>AIX only: Download <resource-ref idref="stlport"/> and set the STLPORTROOT environment
  +      <li>AIX and Solaris only: Download <resource-ref idref="stlport"/> and set the STLPORTROOT environment
          variable to the complete path to the STLPort distribution. <br/>
          (This step is not required for Linux or HP-UX 11 because The Linux GNU compiler and HP aCC compiler include the STL (Standard Template
           Library.)<br/><br/></li>
  @@ -160,7 +160,8 @@
         <li>Run the runConfigure utility with at least the platform flag (Linux) or the platform, C compilier, and C++ compiler flags (AIX) as indicated below.<br/><br/>
         <ref>Linux:</ref>&nbsp;&nbsp;<code>runConfigure -p linux</code><br/>
         <ref>AIX:</ref>&nbsp;&nbsp;&nbsp;&nbsp;<code>runConfigure -p aix -c xlc_r -x xlC_r</code><br/><br/>
  -      <ref>HP-UX 11:</ref>&nbsp;&nbsp;<code>runConfigure -p hp-11 -c cc -x aCC</code><br/><br/>      
  +      <ref>HP-UX 11:</ref>&nbsp;&nbsp;<code>runConfigure -p hp-11 -c cc -x aCC</code><br/><br/>
  +      <ref>Solaris:</ref>&nbsp;&nbsp;<code>runConfigure -p solaris -c cc -x CC</code><br/><br/>            
         To see the other runConfigure flags you may include, use the help flag:<br/><br/>
         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>runConfigure -h</code><br/><br/></li>
         <li>Purge the previous build:<br/><br/>
  
  
  
  1.20      +57 -2     xml-xalan/c/xdocs/sources/xalan/samples.xml
  
  Index: samples.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/samples.xml,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- samples.xml	2001/02/09 15:08:04	1.19
  +++ samples.xml	2001/02/12 21:43:50	1.20
  @@ -93,7 +93,14 @@
        executable is on the path, and run it from the samples subdirectory that contains the input files.</note>
     </s2><anchor name="xalantransform"/>
     <s2 title="XalanTransform">
  -  
  +    <p>What it does: XalanTransform uses the XalanTransformer class to apply an XSL stylesheet file to an XML document file and write
  +    the transformation output to either an output file or to a stream. XalanTransform takes command-line 
  +    arguments for the XML document to be transformed, the XSL stylesheet to apply, and an optional output file argument. If you omit 
  +    the third argument, XalanTransform writes the transformation output to a stream that is sent to standard out (the screen).</p>
  +    <p>You can run XalanTransform from the XalanTransform subdirectory with</p>
  +    <p><code>XalanTransform foo.xml foo.xsl foo.out</code></p>
  +    <p>Omit the third argument to write the transformation result to a stream. See also: <link idref="usagepatterns" 
  +    anchor="xalantransformer">Using the XalanTransformer class.</link>.</p>
     </s2><anchor name="simpletransform"/>
     <s2 title="SimpleTransform">
       <p>What it does: The SimpleTransform class uses the foo.xsl stylesheet to transform foo.xml, and writes the
  @@ -221,6 +228,54 @@
       <p>See also: <link idref="extensions">Extension Functions</link>.</p>
     </s2><anchor name="apachemodulexslt"/>
     <s2 title="ApacheModuleXSLT">
  -  
  +  <p>What it does: runs as an Apache module on an Apache Web server; performs transformations and returns the output to a Web
  +  browser. You configure Apache to respond to a given URL request for an output file (html or txt file in the configuration below)
  +  by applying an xsl stylesheet file to an xml document file (both with the specified name in a given location) and returning
  +  the transformation outupt to the client.</p> 
  +  <p>This sample also illustrates use of the XalanTransformer class and the C API defined in src/XalanTransformer/XalanCAPI.h. It returns 
  +  transformation output in blocks to a callback function, which enables the browser to start displaying the result before the transformation
  +  has been completed.</p>
  +  <p>In the Windows distribution, this ApacheModuleXSLT is named ApacheModuleXSLT.dll. In the Linux distribution, it is named mod_xslt.so. 
  +  For the other UNIX distributions, assuming you have installed the Apache server on that platform, you can use the makefile to build the
  +  Apache module (mod_xslt with the appropriate library suffix).</p>
  +  <note>You may need to adjust the Visual C++ or makefile settings to locate the required Apache header files. As shipped, the Visual C++ 
  +  project file looks in \Apache Group\Apache\src\include, and the UNIX makefile looks in usr/lib.</note>
  +  <p>To build (or rebuild) the Apache module, follow the instructions in <link idref="readme" anchor="win32">Steps for doing a Windows 
  +  build</link> or <link idref="readme" anchor="unix">Steps for doing a UNIX build</link>. For UNIX platforms, you do the build with<br/> 
  +  <code>make ApacheModuleXSLT</code>.</p>
  +  <s3 title="Seting up and using ApacheModuleXSLT">
  +  <p>To use ApacheModuleXSLT, do the following:</p>
  +  <ol>
  +    <li>Add LoadModule and (UNIX only) AddModule entries to the Apache configuration file: httpd.conf.<br/><br/>
  +    Windows: <code>LoadModule mod_xslt xml-xalan\c\Build\Win32\VC6\Release\ApacheModuleXSLT.dll</code><br/><br/>
  +    UNIX: <code>AddModule mod_xslt.c</code><br/>
  +    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and<br/>
  +    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>LoadModule mod_xslt usr/lib/mod_xslt.<ref>xx</ref></code><br/><br/>
  +    where <ref>xx</ref> is the appropriate library suffix for the UNIX platform.<br/><br/></li>
  +    <li>Add a &lt;Location&gt; entry to httpd.conf that indicates where xml/xsl file pairs are to be found, and what target file extensions
  +    to recognize. We suggest the following:<br/><br/>
  +    <code>&lt;Location /xslt&gt;</code><br/>
  +    &nbsp;&nbsp;<code>AddHandler .html</code><br/>
  +    &nbsp;&nbsp;<code>AddHandler .txt</code><br/>
  +    <code>&lt;/Location&gt;</code><br/><br/>
  +    This &lt;Location&gt; element instructs the module to respond to requests for <ref>xxx</ref>.html and <ref>xxx</ref>.txt files in the 
  +    in the xslt subdirectory (under the document root; see next item) by applying the <ref>xxx</ref>.xsl stylesheet to <ref>xxx</ref>.xml 
  +    (both in that directory) and returning the transformation result to the browser.<br/><br/>
  +    Note: It is up to the stylesheet to apply the appropriate xsl:output method to the output. Whether the user specifies html or txt is, of
  +    itself, immaterial.<br/><br/></li>
  +    <li>Put xml/xsl file pairs in the &lt;Location&gt; subdirectory (xslt in the example)) under the document root directory specified in httpd.conf by the 
  +    DocumentRoot and &lt;Directory&gt; settings. Alternatively, you can modify these settings to point to xml-xalan/c/samples/ApacheModuleXSLT,
  +    which includes an xslt subdirectory with xml/xsl file pairs.<br/><br/></li>
  +    <li>Start the Apache server.<br/><br/></li>
  +    <li>From a Web browser, call the module with a URL as follows:<br/>
  +    <code>http://<ref>serverName</ref>/xslt/<ref>xxx</ref>.html</code><br/>
  +    where <ref>serverName</ref> is the Apache server (such as www.myServer.com) and <ref>xxx</ref> is the name of an xml/xsl pair of files 
  +    (such as foo.xml and foo.xsl) in the xslt subdirectory under the DocumentRoot directory.<br/><br/>
  +    For example,<br/>
  +    <code>http://www.myServer.com/xslt/foo.html</code><br/>
  +    instructs ApacheModuleXSLT to apply the foo.xsl stylesheet to the foo.xml XML document (both files in the xslt directory under the 
  +    Apache DocumentRoot directory) and return the transformation result to the browser.</li>
  +  </ol>
  +  </s3>
     </s2>
   </s1>
  
  
  
  1.16      +94 -4     xml-xalan/c/xdocs/sources/xalan/usagepatterns.xml
  
  Index: usagepatterns.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/usagepatterns.xml,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- usagepatterns.xml	2001/02/09 15:08:05	1.15
  +++ usagepatterns.xml	2001/02/12 21:43:50	1.16
  @@ -78,7 +78,18 @@
   command-line utility, see <link idref="commandline">Command-Line Utility</link>.</p>
   </s2><anchor name="xalantransformer"/>
   <s2 title="Using the XalanTransformer class">
  -<p>&xslt4c; 1.2 introduces a new class designed to take care of configuration and setup under the covers and provide a simpler API for performing standard transformations. Using XalanTransformer, you can perform one or more transformations as follows:</p>
  +<p>&xslt4c; 1.2 introduces XalanTransformer, a new class designed to package the basic Xalan infrastructure and provide a simpler C++ 
  +and C API for performing standard transformations.</p>
  +<note>As we expand the functionality of the XalanTransformer, we will revise the remainder of this chapter and the samples to indicate 
  +how to take advantage of the API it provides.</note>
  +<ul>
  +  <li><link anchor="cpp">Basic XalanTransformer pattern with the C++ API</link></li>
  +  <li><link anchor="cppvar">Variations with the XalanTransformer C++ API</link></li>  
  +  <li><link anchor="c">Basic pattern with the XalanTransformer C API</link></li>
  +  <li><link anchor="cvar">Variations with the XalanTransformer C API</link></li>  
  +</ul><anchor name="cpp"/>
  +<s3 title="Basic XalanTransformer patten with C++ API">
  +<p>Using XalanTransformer and the C++ API, you can perform one or more transformations as follows:</p>
   <ol>
     <li>Include the XalanTransformer header file.<br/>
     <code>#include &lt;XalanTransformer/XalanTransformer.hpp</code><br/><br/></li>
  @@ -95,11 +106,88 @@
     <li>Shut down Xalan and Xerces.<br/>
     <code>XalanTransformer::terminate();</code></li>
   </ol>
  -<p>The XalanTransformer transform() methods also allow you to process and output streams, and to send the output to a callback 
  -function. Each transform() method returns an integer code, 0 for success. For the details, see XalanTransormer/XalanTransformer.hpp in the source tree. For an example, see the <link idref="samples" anchor="xalantransform">XalanTransform</link> sample.</p>
  +</s3><anchor name="cppvar"/>
  +<s3 title="Variations with the XalanTransformer C++ API">
  +<p>The XalanTransformer transform() methods also allow you to process and produce streams, and to send the output in blocks to a callback 
  +function, which means you can begin processing the output while the transformation is still in progress. Each transform() method returns 
  +an integer code, 0 for success. If an error occurs, you can use the getLastError() method to return a pointer to the error message. 
  +For the details, see XalanTransormer/XalanTransformer.hpp in the source tree. For an example, see the 
  +<link idref="samples" anchor="xalantransform">XalanTransform</link> sample.</p>
  +
  +<p>Transform from files to an output stream:</p>
  +<source>int
  +transform(const char* xmlInFile,
  +*          const char* xslFile,
  +          ostream&amp;    resultOutStream);</source>
  +<p>Transform from input streams to an output stream:</p>
  +<source>int
  +transform(istream&amp; xmlInStream,
  +          istream&amp; xslInStram,
  +          ostream&amp; resultOutStream);</source>
  +<p>Transform from files to an output handler that receives the output in blocks. </p>          
  +<source>int
  +transform(const char* xmlInFile
  +          const char* xslFile,
  +          XalanOutputHandlerType theOutputHandler
  +          XalanFlushHanderType theFlushHandler = 0);</source>
  +<p>The transform() method that the other transform() methods all call:</p>
  +<source>int
  +transform( const XSLTInputSource&amp; xmlInput,
  +           const XSLTInputSource&amp; xslStylesheet,
  +           const XSLTResultTarget&amp; transformResult);</source>
  +                                            
  +</s3><anchor name="c"/>
  +<s3 title="Basic XalanTransformer pattern with the C API">
   <p>We also include a simple C interface for using the XalanTransformer class. See XalanTransformer/XalanCAPI.h in the source tree. 
   The <link idref="samples" anchor="apachemodulexslt">ApacheModuleXSLT</link> sample illustrates the use of this C API.</p>
  -<note>As we expand the functionality of the XalanTransformer, we will revise the sections below to indicate how to take advantage of the API it provides.</note>
  +<p>Basic strategy:</p>
  +<ol>
  +  <li>Include the XalanTransformer C API header.<br/>
  +  <code>#include &lt;XalanTransformer/XalanCAPI.h&gt;</code><br/><br/></li>
  +  <li>Initialize Xalan and Xerces<br/>
  +  <code>XalanInitialize();</code><br/><br/></li>  
  +  <li>Create a Xalan transformer<br/>
  +  <code>XalanHandle xalan = NULL;</code><br/>
  +  <code>xalan = CreateXalanTransformer();</code><br/><br/></li>
  +  <li>Perform each transformation. For example:<br/>
  +  <code>char * xmlfilename = "foo.xml";</code><br/>
  +  <code>char xslfilename = "foo.xsl";</code><br/>
  +  <code>char outfilename = "foo.out";</code><br/>  
  +  <code>int theResult = 0;</code><br/>
  +  <code>theResult = XalanTransformToFile(xmlfilename,</code><br/>
  +  <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xslfilename,</code><br/>
  +  <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outfilename,</code><br/>
  +  <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xalan);</code><br/><br/></li>
  +  <li>Shut down Xalan and Xerces<br/>
  +  <code>XalanTerminate();</code></li>
  +</ol>
  +</s3><anchor name="cvar"/>
  +<s3 title="Variations with the XalanTransformer C API">
  +<p>The C API supports basically the same options as the C++ API.</p>
  +<p>Transform from files to a character array:</p>
  +<source>int
  +XalanTransformToData(const char*  xmlInFile,
  +                     const char*  xslFile,
  +                     const char** transformOutput,
  +                     XalanHandle  xalan);</source>
  +<p>Transform from files to a character array:</p>
  +<source>int
  +XalanTransformToData(const char*  xmlInFile,
  +                     const char*  xslFile,
  +                     const char** transformOutput,
  +                     XalanHandle  xalan);</source>
  +<p>After calling XalanTransformToData(), call XalanFreeData() with the address of the pointer to the character array:</p>
  +<p><code>XalanFreeData(transformOutput);</code></p>
  +<p>Transform to a callback function that receives the output in blocks (see the <link idref="samples" 
  +anchor="apachemodulexslt">ApacheModuleXSLT</link> sample).</p>
  +<source>int
  +XalanTransformToHandler(const char*  xmlInFile,
  +                        const char*  xslFile,
  +                        XalanHandle xalan,
  +                        const void* outputHandle,
  +                        XalanOutputHandlerType outputHandler,
  +                        XalanFlushHandlerType flushHandler);</source>
  +</s3>
   </s2><anchor name="basic"/>
   <s2 title="Basic procedure for performing an XSL transformation">
   <p>When you are setting up your application to use XSL stylesheets to transform XML documents, you must do the following:</p>
  @@ -384,6 +472,8 @@
       path (LIBPATH) or copy it to /usr/lib.</p>
       <p>For HP-UX 11, rebuild &xslt4c-hplib; with XALAN_USE_ICU defined, and place it on the shared library
       path (SHLIB_PATH) or copy it to /usr/lib.</p>
  +    <p>For Solaris, rebuild &xslt4c-solarislib; with XALAN_USE_ICU defined, and place it on the shared library
  +    path (LD_LIBRARY_PATH) or copy it to /usr/lib.</p>
       
       <p><em>Number formatting</em></p>
       <p>To enable ICU support for the xsl:number element and the XSLT format-number() function, do