<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>ASF: What's New in this Release</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
</head>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the  "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 -->
<body>
<div id="title">
<table class="HdrTitle">
<tbody>
<tr>
<th rowspan="2">
<a href="../index.html">
<img alt="Trademark Logo" src="resources/XalanC-Logo-tm.png" width="190" height="90" />
</a>
</th>
<th text-align="center" width="75%">
<a href="index.html">Xalan-C/C++ Version 1.11</a>
</th>
</tr>
<tr>
<td valign="middle">What's New in this Release</td>
</tr>
</tbody>
</table>
<table class="HdrButtons" align="center" border="1">
<tbody>
<tr>
<td>
<a href="http://www.apache.org">Apache Foundation</a>
</td>
<td>
<a href="http://xalan.apache.org">Xalan Project</a>
</td>
<td>
<a href="http://xerces.apache.org">Xerces Project</a>
</td>
<td>
<a href="http://www.w3.org/TR">Web Consortium</a>
</td>
<td>
<a href="http://www.oasis-open.org/standards">Oasis Open</a>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navLeft">
<ul>
<li>
<a href="resources.html">Resources</a>
<br />
</li>
<li>
<a href="../index.html">Home</a>
</li></ul><hr /><ul>
<li>
<a href="index.html">Xalan-C++ 1.11</a>
</li>
<li>What's New<br />
</li>
<li>
<a href="license.html">Licenses</a>
</li></ul><hr /><ul>
<li>
<a href="overview.html">Overview</a>
</li>
<li>
<a href="charter.html">Charter</a>
</li></ul><hr /><ul>
<li>
<a href="download.html">Download</a>
</li>
<li>
<a href="buildlibs.html">Build Libraries</a>
</li>
<li>
<a href="install.html">Installation</a>
</li>
<li>
<a href="builddocs.html">Build Documents</a>
</li></ul><hr /><ul>
<li>
<a href="samples.html">Sample Apps</a>
</li>
<li>
<a href="commandline.html">Command Line</a>
</li>
<li>
<a href="usagepatterns.html">Usage Patterns</a>
</li></ul><hr /><ul>
<li>
<a href="programming.html">Programming</a>
</li>
<li>
<a href="extensions.html">Extensions</a>
</li>
<li>
<a href="extensionslib.html">Extensions Library</a>
</li>
<li>
<a href="apiDocs/index.html">API Reference</a>
</li></ul><hr /><ul>
<li>
<a href="faq.html">Xalan-C FAQs</a>
</li></ul><hr /><ul>
<li>
<a href="whatsnew.html#bugs">Bugs</a>
</li>
<li>
<a href="http://xalan.apache.org/old/xalan-j/test/run.html#how-to-run-c">Testing</a>
</li>
<li>
<a href="secureweb.html">Web Security</a>
</li>
</ul>
</div>
<div id="content">
<h2>What's New in this Release</h2>

 <ul>
  <li>
<a href="#status">Status</a>
</li>
  <li>
<a href="#contact">Getting in Touch</a>
</li>
  <li>
<a href="#history">History of Software Changes</a>
</li>
  <li>
<a href="#bugfix11">Bug Fixes in Release 1.11</a>
</li>
  <li>
<a href="#bugfix10">Bug Fixes in Release 1.10</a>
</li>
  <li>
<a href="#bugs">Bug reporting</a>
</li>    
  <li>
<a href="#to-do">To-do tasks for future Xalan-C/C++ releases</a>
</li>
 </ul>

<a name="status">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Status</h3>

<p>
<b>Release notes for Xalan-C/C++ Version 1.11</b>
</p>
<p>This is primarily a bug-fix release of version 1.10.  Support for number and
nodeset types for stylesheet top-level parameters have been added. Xerces-C/C++
versions 3.0 and newer are now supported. Xerces-C/C++ Version 3.1.1 is the
preferred stable release.
</p>
<p>There are few binary releases for Xalan-C/C++.  The current binary releases
are primarily for Windows platforms.  If you are able to successfully create a 
new binary package and wish it to be included, then we welcome your participation 
on the <a href="mailto:dev@xalan.apache.org">xalan-dev</a> mail list.
You may also wish to check our <a href="download.html">download</a> page.
</p>
<p>Xalan-C/C++ no longer supports Microsoft Studio (VC6).  The Microsoft Visual
Studio .NET platforms (2003, 2005, 2008, and 2010) are supported.  This equates
to compilers (VC71, VC8, VC9, and VC10).
</p>



<a name="contact">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Getting in Touch</h3>
<p>Your feedback is more than welcome. Offers of help are even more so! 
Perhaps you would like to contribute to the ongoing development, 
testing, or documentation of Xalan-C++.
</p> 
<p>Please email your comments, questions, suggestions, bug reports, 
and offers to help to <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>.
</p>
<p>Your general user comments on Xalan-C++ usage are also welcome on 
<a href="mailto:c-users@xalan.apache.org">Xalan-C/C++ Users Mailing List</a>.
</p>


<a name="history">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Cumulative history of software changes</h3>
<p>The following sections list the changes in each release since Xalan-C++ version 0.40.0.</p>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.11</h4>
<p>This is a general bug fix release with added stability features.
   Many null pointer references have been fixed.</p>
<p>Major updates since version 1.10 include:</p>
<ul>
  <li>Add support for Xerces-C 3.0 and newer</li>
  <li>Drop support for Microsoft Studio (VC6)</li>
  <li>Fix support issues for AIX 5.3</li>
  <li>Fix support issues for Solaris 2.8</li>
  <li>Fix support issues for Solaris 2.10</li>
  <li>Fix support issues for GCC-4.3</li>
  <li>Add support for Microsoft .NET 2008 (VC9) </li>
  <li>Add support for Microsoft .NET 2010 (VC10)</li>
  <li>Add number and nodeset types as top-level stylesheet parameters</li>
  <li>Allow separation of compiler CFLAGS and CXXFLAGS for UNIX builds</li>
  <li>Xalan-C documentation rewrite and reorganize</li>
  <li>Parent Apache XML Project has been retired</li>
  <li>
<a href="#bugfix11">Bugs fixed in this release</a>.</li>
</ul>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.10</h4>
<p>Major updates since version 1.9 include:</p>
<ul>
  <li>Support for XML 1.1 and Namespaces in XML 1.1.</li>
  <li>Added support for IBM XLC 7.0 compiler on AIX.</li>
  <li>Improved and stabilized C pluggable memory management functionality.</li> 
  <li>Various improvements in Xalan XML serializers for better performance and stability.</li>
  <li>Upgrade from Xerces-C 2.6 to Xerces-C 2.7.</li>
 </ul>  
  

<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.9</h4>
<p>Major updates since version 1.8 include:</p>
<ul>
  <li>Pluggable Memory Management.  This feature allows applications to maintain precise control over memory allocations.  This 
      will allow users, with knowledge of their application's characteristics, to provide a more efficient allocation method 
      than the general purpose procedures provided by the system.  for more information on how to use this feature, please see
      the <a href="programming.html#memory">Pluggable Memory Management</a> section of the Programming page.</li>
  <li>Improved stability on the execution of large stylesheets and XML documents.  Because the current implementation relies on 
      function recursion, certain stylesheets/input documents may cause the program stack to overflow and cause the application 
      to fail.  It also may inhibit executing stylesheets that are heavily dependent on recursive functions.  This feature will 
      prevent these types of failure. </li>
  <li>Provided a global option to pool all text node strings.  This feature allows developers to set a flag to determine if a 
      parsed source tree will pool the values of all of the text nodes in the XML document.  By doing so, this can result in a 
      significant reduction in memory usage, particularly if there are a lot of repeated values in text nodes.  Please see 
      the class descriptions for <a href="apiDocs/classXalanSourceTreeDocument.html">XalanSourceTreeDocument</a>,  
      <a href="apiDocs/classXalanDefaultParsedSource.html">XalanDefaultParsedSource</a>, and
      <a href="apiDocs/classXalanTransformer.html">XalanTransformer</a> in the <a href="apiDocs/index.html">
      API Reference</a> section for more information.</li> 
  <li>Added support for Microsoft Studio .NET V7.1.  Project files for Microsoft Studio .NET V7.1 have been provided under the 
      directory xalan\c\Projects\Win32\VC7.1.</li>
  <li>Upgrade from Xerces-C 2.5 to Xerces-C 2.6. </li>
 </ul>  


   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.8</h4>
     <p>Major updates since version 1.7 include:</p>
     <ul>
      <li>Upgrade from Xerces-C 2.4 to Xerces-C 2.5. </li>
      <li>Provide build support for Cygwin and HP-UX 11.00 on Itanium.  Although binary distributions are not provided for the Cygwin environment and 
          HP-UX 11.00 on Itanium platform, the build configuration files provided in the source distribution can be used to build on these platforms. </li>
      <li>Project files for supporting Microsoft Visual Studio .NET.  Although a binary distribution for the Microsoft Visual Studio .NET 
          is not provided in this release, Visual Studio solution files are provided in the Windows source distribution for those who choose to build
          on this platform.  Please see <a href="buildlibs.html#winbldenv">"Step for doing a Windows Build with Visual Studio .NET"</a> 
          for details.</li>
      <li>Additional changes to Xerces Deprecated DOM support.  This is another step towards phasing out the support for Xerces Deprecated DOM.  Users 
          are encouraged to modify their applications to interface with the new Xerces DOM support.  For more information on the effects of these 
          changes to your build environment.</li>
      
      <li>Implemented optimizations to significantly improve the throughput of the ICU-enabled "format-number" function.</li>
      <li>Changes in the XML Serializer. The serializer will no longer put a newline after the xml header tag unless indent="yes".</li>

     </ul>  
     
   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.7</h4>
     <p>Major updates since version 1.6 include:</p>
     <ul>
      <li>Message Localization Support. This feature enables Xalan-C++ to issue diagnostic messages 
      in languages other than the default language (English). In order to utilize this feature, 
      the user must provide a version of the Xalan-C++ message catalog that has been translated in 
      their language of choice.</li>
      <li>Build, packaging, and installation improvements. Changes to the Xalan-C++ makefiles now 
      allow for a more flexible build, packaging, and install process. Each step in a typical 
      build process can be invoked by specifying the appropriate target, for example to build the 
      executable, and/or samples, or install the build at user-specified location. For more 
      information on building Xalan-C++, please see 
      <a href="buildlibs.html#unixbldenv">Steps for doing a Unix build</a>.</li>
      <li>Deprecated DOM Support. The XercesBridge classes have been marked deprecated and moved 
      into an exclusive directory within the xalanc/XercesParserLiaison directory called 
      'Deprecated'. If your application is dependent on these classes to interface with the 
      deprecated Xerces DOM you must alter your include directive with the 'Deprecated' directory. 
      For example:<br />
<br />
      <code>#include "xalanc/XercesParserLiaison/XercesDocumentBridge.hpp"</code>
<br />
<br />
      should be changed to:<br />
<br />
      <code>#include "xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp"</code>
<br />
<br />
</li>
      <li>Upgrade from Xerces-C 2.3 to Xerces-C 2.4. </li>
      <li>Porting of ThreadSafe example to UNIX platform.</li>
      <li>Implementation of EXSLT string extension functions encode-uri() and decode-uri(). </li>
      <li>Implementation of EXSLT dynamic extension function evaluate(). </li>
      <li>Implementation of EXSLT date-time extension function date-time().</li>
     </ul>  
     

   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.6</h4>
     <p>Major updates since version 1.5 include:</p>
     <ul>
	<li>Directory "sane include" reorganization.  A new sub-directory called 'xalanc' has been added to the src directory (for source distribution packages) and include directory (for binary distribution packages).  New source files which include Xalan headers will need to be modified to include the 'xalanc' prefix in the header path.  
            For example: <br />
<br />
            <code>#include &lt;XPath/XObject.hpp&gt;</code>
<br />
<br />
            will need to be changed to <br />
<br />
            <code>#include &lt;xalanc/XPath/XObject.hpp&gt;</code>
<br />
<br />
            For Windows users, all project files have been modified to reflect this change.  
            For UNIX users, please see 
            <a href="buildlibs.html#unixbldenv">Steps for doing a UNIX build</a> 
            for migration considerations.</li>
     </ul>  
     

   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.5</h4>
     <p>Major updates since version 1.4 include:</p>
     <ul>
	<li>For Windows, Xalan-C++ is now packaged as a single DLL.  The project files to build separate DLLs are now deprecated and will not be maintained.</li>
	<li>Support for Xerces-C++ DOMNode classes.</li>
	<li>New sample <b>TransformToXercesDOM</b> that illustrates how to perform a transform resulting in a Xerces-C++ DOMDocument</li>
	<li>Usage of the Xerces-C++ C++ namespace and creation of Xalan-C++ namespace.</li>
     </ul>  
     
   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.4</h4>
     <p>Major updates since version 1.3 include:</p>
     <ul>
       <li>The Xalan-C++ distributions no longer include the Xerces-C++ headers and libraries. 
           Accordingly, you must download the appropriate Xerces-C++ distribution 
           (see <a href="download.html">Downloading what you need</a>.</li>
       <li>64-bit build for HP-11; untested 64-bit support for Solaris and AIX.</li>
       <li>New Linux platform and compiler: Redhat 7.2 with gcc 3.1.</li>
       <li>
<a href="http://www.stlport.org/">STLport</a> is no longer required on any of our supported platforms.</li> 
       <li>
<a href="extensionslib.html#exslt">Alpha support for a number of EXSLT functions</a>.</li>       
       <li>
<a href="samples.html#parsedsourcewrappers">ParsedSourceWrappers</a>, a sample that
       illustrates how to perform transformations with input in the form of a pre-built
       XalanDOM or XalanSourceTree.</li>
     </ul>  
     
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.3</h4>
    <p>Major updates since version 1.2 include:</p>
     <ul>
       <li>A new and simplified command-line utility: <a href="commandline.html#xalanexe">the Xalan executable</a>
</li>
       <li>New XPath samples exploiting the XPathEvaluator C API and illustrating serialization of an XPath result set: <a href="samples.html#simplexpathcapi">SimpleXPathCAPI</a> and <a href="samples.html#serializenodeset">SerializeNodeSet</a>
</li>
       <li>A new <a href="usagepatterns.html#xercesdomwrapperparsedsource">wrapper class</a> that lets you pass in a Xerces DOM as input for a transformation</li>
       <li>Bug fixes.</li>
       <li>Changed XPathException to XalanXPathException because of a clash with a new Xerces class of the same name.</li>
      </ul>
     
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.2</h4>
    <p>Major updates since version 1.1 include:</p>
     <ul>
      <li>
<a href="extensionslib.html">Introduction of a library of extension functions</a>
</li>
      <li>Support for pre-parsed source documents and pre-compiled stylesheets in 
      <a href="apiDocs/classXalanTransformer.html">XalanTransformer</a> and the C API.</li>
      <li>Support for stylesheet params in <a href="apiDocs/classXalanTransformer.html">XalanTransformer</a> 
      and the C API</li>
      <li>Support for extension functions in <a href="apiDocs/classXalanTransformer.html">XalanTransformer</a>
</li>
      <li>Performance enhancements</li>
      </ul>
     
   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.1</h4>
   <p>In addition to adding to the list of platforms on which Xalan-C++ 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 HP-UX 11 build.</li>
     <li>Added Solaris build.</li>
     <li>Greatly improved performance.</li>
     <li>Improved conformance to the XSLT specification.</li>
     <li>Simplified the C++ API and provided a C API for performing standard transformations with the <a href="usagepatterns.html#xalantransformer">XalanTransformer</a> class and associated header files.</li>
     <li>Added sample illustrating use of XalanTransformer and the new C++ API: 
         <a href="samples.html#xalantransform">XalanTransform</a>.</li> 
     <li>Added sample illustrating use of XalanTransformer, the new C API, and how to run Xalan-C++ and perform transformations on an 
         Apache Web server: <a href="samples.html#apachemodulexslt">ApacheModuleXSLT</a>.</li>
     <li>Added the <a href="samples.html#streamtransform">StreamTransform</a> sample.</li>
     <li>Eliminated dependencies on non-public Xerces headers; accordingly can now build with the Xerces distribution.</li>
     <li>Fixed namespace mapping and inheritance problems.</li>
     <li>Fixed failure of &lt;copy-of ...&gt; to include CRLFs (if any) in the result.</li>
     <li>Fixed bug sorting in reverse document order based on position. </li>
     <li>Fixed &lt;xsl:number&gt; bug with use of letter-value="traditional" for "classical" Greek numbering.</li>
     <li>Fixed use of &lt;xsl:fallback&gt; within a top-level extension function.</li>
     <li>Fixed HTML output method bug. The &lt;HEAD&gt; element was not including a &lt;META&gt; tag with the encoding.</li>
     <li>Fixed bug using key() in match patterns to find descendants.</li>
     <li>Fixed bug using the id() function in complex match patterns.</li>
     <li>Fixed problem outputting multiple single-character CDATA sections.</li>
     <li>Fixed problem outputting whitespace characters.</li>
     <li>Fixed problem transforming from a stream on UNIX platforms.</li>
     <li>Fixed a bug with the document() function, which was generating a syntax error if called in the following manner: document(<b>
<i>string</i>
</b>,/).</li>
     <li>Fixed named templates bug accepting global parameter when called with a parameter of the same name that the named template does not 
         recognize.</li>
   </ul> 
   
   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 1.0</h4>
   <p>Major updates since version 0.40.0 include:</p>
   <ul>
     <li>Full support for namespace handling</li>
     <li>Full implementation of the format-number() function and support for the decimal-format element</li>
     <li>Integration with the <a href="http://oss.software.ibm.com/icu/index.html">International Components for Unicode (ICU)</a> for number formatting, sorting, and output encoding</li>
     <li>Support for the exclude-result-prefixes attribute</li>
     <li>Support for the output encoding attribute</li>
   </ul>
   
   <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Changes for Xalan-C++ version 0.40.0</h4>
   <p>Major updates since version 0.30.0 include:</p>
   <ul>
     <li>Permitting OS file names (as well as URLs) as command-line arguments with TestXSLT</li>
     <li>Stricter compliance for HTML and XML output</li>
     <li>Improved handling of relative URI's</li>
     <li>Improved handling of Import and Include</li>
     <li>Better namespace handling (although there are still problems here)</li>
     <li>Support for Document() function</li>
     <li>Support for XPath predicates</li>
     <li>ProblemListener with a different output stream and call 
         XalanTransformer::setProblemListener() before calling XalanTransformer::transform().</li>
   </ul>
   

 


<a name="bugfix11">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Bug Fixes in Release 1.11</h3>
<p>The bugs fixed in Xalan-C++ Version 1.11 include:</p>
<ul>
<li>XALANC-734: Allow runConfigure CFLAGS and CXXFLAGS to inherit environment</li>
<li>XALANC-732: Fix makefile errors for AIX builds</li>
<li>XALANC-730: Fixed XalanTransformer memory leaks</li>
<li>XALANC-723: Add Top-Level parameter support for XalanCAPI and UseStylesheetParams samples</li>
<li>XALANC-723: The XalanTransformer Top-Level parameters now include nodeset and number types</li>
<li>XALANC-721: Upgrade support for MS VS 2010 (VC10)</li>
<li>XALANC-719: Xerces Parser Liaison - errors on elements with no attributes</li>
<li>XALANC-716: incorrect buffer-size calculation in XalanUTF16Writer.hpp</li>
<li>XALANC-715: NULL pointer access crash</li>
<li>XALANC-713: Build Xalan-C/C++ API Reference Manual using Doxygen 1.7 or newer</li>
<li>XALANC-712: Rewrite of Xalan-C++ V1.11 User Guide Web Pages</li>
<li>XALANC-710: MS-Studio 2008 Debug Build sends Xalan-C_1D.lib to wrong directory</li>
<li>XALANC-709: Doxygen bug in XalanQName.hpp</li>
<li>XALANC-708: Including XalanCAPI.hpp does not import Xerces typedef XMLch</li>
<li>XALANC-705:	Crash with pure virtual function call</li>
<li>XALANC-703:	Compiler errors while building on AIX 5.3</li>
<li>XALANC-700:	Broken output when serializing UTF16 surrogates</li>
<li>XALANC-699:	Compile using Visual C++ 2010 (VC10)</li>
<li>XALANC-698:	Buffer overflow from XalanMessageLoader::load()</li>
<li>XALANC-690:	The document function does not handle fragment IDs in URLs correctly</li>
<li>XALANC-689:	XalanC transformation of a 600 kb file takes 43 seconds</li>
<li>XALANC-684:	XPath single quate-comma bug</li>
<li>XALANC-683:	xsl:number with level any does not always count all of the preceeding nodes in the document</li>
<li>XALANC-681:	NamedNodeMapAttributeList constructor asserts when the provided NamedNodeMap is empty</li>
<li>XALANC-680:	Error in match pattern with // and abbreviated attribute node test</li>
<li>XALANC-679:	Possible wrong evaluation of abbreviated XPath in template match</li>
<li>XALANC-677:	Debug assertion switching to HTML mode when the outputter is producing a DOM</li>
<li>XALANC-675:	No error is reported for an unknown key</li>
<li>XALANC-675:	GCC-4.3 cleanup</li>
<li>XALANC-673:	Assertion failed with XalanDOMString::substr</li>
<li>XALANC-671:	Incorrect handling of default namespace in xsl:element</li>
<li>XALANC-669:	XalanOtherEncodingWriter reports an incorrect error message</li>
<li>XALANC-667:	setUseValidation doesn't work</li>
<li>XALANC-664:	Testing harness writes strings to the output XML in the local code page.</li>
<li>XALANC-661:	PlatformSupport/DoubleSupport.cpp compile error on AIX 5.3</li>
<li>XALANC-660:	Compilation errors in Tests/Performance/TestHarness.hpp on some platforms</li>
<li>XALANC-659:	Unnecessary casting in ReusableArenaBlock</li>
<li>XALANC-658:	Misplaced assert in ReusableArenaAllocator::destroyObject()</li>
<li>XALANC-657:	Add Windows x64 targets to the project files</li>
<li>XALANC-655:	Boolean value incorrectly converted ot string in attribute value templates</li>
<li>XALANC-653:	Xalan-C not including namespace declaration in output</li>
<li>XALANC-650:	XPathProcessorImpl uses XalanDOMString copy constructor instead of referring to an existing instance</li>
<li>XALANC-648:	XalanUTF8Writer::write(const XalanDOMChar*, XalanDOMString::size_type) does not handle surrogates properly</li>
<li>XALANC-647:	XalanOtherEncodingWriter::writeNumericCharacterReference() is inefficient</li>
<li>XALANC-646:	During transcoding XalanC fails to append '0' to the transcoded string </li>
<li>XALANC-645:	Pluggin of DOMStringPrintWriter into FormatterToXML leads to assert</li>
<li>XALANC-641:	Class used as exception needs accessible copy constructor</li>
<li>XALANC-640:	Path problem in Makefile under cygwin</li>
<li>XALANC-638:	Performance test program does not build on HP-UX</li>
<li>XALANC-635:	Build fails on Solaris 2.8</li>
<li>XALANC-634:	Build fails with VC6</li>
<li>XALANC-633:	The processor should ignore xsl:fallback element in LRE </li>
<li>XALANC-632:	@use-attribute-sets attribute has to have no effect on xsl:copy when the context item is a documen node.</li>
<li>XALANC-631:	The next stylesheet crashes XalanC</li>
<li>XALANC-630:	Incorrect cast in XalanUTF16Writer</li>
<li>XALANC-629:	Performance improvements for text node stripping</li>
<li>XALANC-628:	Inconsistent flusing of serializers</li>
<li>XALANC-627:	Broken cast in ElemTemplateElement::findTemplateToTransformChild()</li>
<li>XALANC-626:	Fix copyrights in Apache XalanC source</li>
<li>XALANC-625:	Spurious (though harmless) assert failure in XPath::findNodeSet() when an expression contains an empty node-set enclosed in parenthesis</li>
<li>XALANC-624:	The key() function does not work when the context node is the root node of a result tree fragment obtained through exsl:node-set()</li>
<li>XALANC-623:	Compatibility issues with Xerces-C 3.0</li>
<li>XALANC-621:	Selection of compiler definitions file fails on Linux PPC in client code</li>
<li>XALANC-618:	uninstallExternalFunction can run past the end of the array</li>
<li>XALANC-617:	Leak in XalanTransformer</li>
<li>XALANC-616:	xsl:strip-space element doesn't work proprely</li>
<li>XALANC-615:	Xalan resolves a namespace prefix when it should report an error</li>
<li>XALANC-614:	MsgCreator Makefile needs link option</li>
<li>XALANC-613:	Cannot pass value to stylesheet parameter if parameter name is namespace-qualified</li>
<li>XALANC-609:	Template with built-in template rules for namespaces gives and assert</li>
<li>XALANC-604:	ConstructWithNoMemoryManager has a bug which prevents proper default initialization of built-in types.</li>
<li>XALANC-603:	Source does not compile properly on HP-UX with newer versions of the HP compiler</li>
<li>XALANC-595:	EXSLT date-time function missing + or - before timezone offset</li>
<li>XALANC-588:	Floating point exceptions in DoubleSupport::initialize() on Solaris 10 (x86)</li>
<li>XALANC-570: Removal of compiler warnings from STLHelper.hpp</li>
<li>XALANC-535:	If an error/warning message contains not-displayable character for the local encoding , no message is shown at all</li>
<li>XALANC-527: Compiling on Xerces-3.0</li>
<li>XALANC-480:	XML1.1 and Namespaces for XML1.1 support</li>
<li>XALANC-478:	Add support for XMLEntityResolver</li>
<li>XALANC-432:	Minor spelling problems in XalanMsg_en_US.xlf</li>
<li>XALANC-430:	"StylesheetExecutionContext::getVariable(name)" crahes if variable "name" was not found.</li>
<li>XALANC-421:	omit-xml-declaration ignored</li>
<li>XALANC-416:	Wrong access to out-of-scope xsl:variable not detected in certain circumstances</li>
<li>XALANC-415:	Encoding attribute is not returning properly in output XML header</li>
<li>XALANC-413:	Crash while using transform method on MacOSX</li>
<li>XALANC-412:	XalanEXSLTDateTime not threadsafe, crashing application</li>
<li>XALANC-409:	compilation error on g++ on SunOS 2.8</li>
<li>XALANC-408:	runConfigure help does not include new HP platform</li>
<li>XALANC-407:	XalanC output format is not suitable as a document entity</li>
<li>XALANC-376:	Result tree fragment attributes are created without proper namespace and local name </li>
</ul>


<a name="bugfix10">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Bugs Fixed in Release 1.10</h3>
<p>The bugs fixed in the 1.10 release include:</p>
<ul>
  <li>XALANC-572: Compile failure on SuSE80AMD_64b_GCC322 </li>
  <li>XALANC-569: Compile-time assert on 32-bit Solaris and HPUX due to IEEE754 issue </li>
  <li>XALANC-568: Pattern "/" does not match the pseudo root document of a node-set obtained from a result-tree fragment via exsl:node-set </li>
  <li>XALANC-511: Crash during XalanTransformer::initialize on AIX </li>
  <li>XALANC-554: Xalan-C does not implement erratum 25 </li>
  <li>XALANC-552: Problems with the new serializers with CDATA and unrepresentable or special characters </li>
  <li>XALANC-558: Latest source code does not build with the Intel compiler on Windows </li>
  <li>XALANC-555: XalanEXSLTDateTime.cpp has too many platform-specifc ifdefs </li>
  <li>XALANC-421: omit-xml-declaration ignored </li>
  <li>XALANC-529: Xalan-C sometimes creates empty text nodes in RTFs or sends empty characters() events to FormatterListeners </li>
  <li>XALANC-530: Serializers filter attributes unnecessarily </li>
  <li>XALANC-245: substring-before and substring-after </li>
  <li>XALANC-115: Need to catch use of variables in xsl:key attributes </li>
  <li>XALANC-540: XPath absolute location path does not work when the context node was obtained from a result tree fragment through exsl:node-set() </li>
  <li>XALANC-544: Assert failure, then crash, during "variable undefined" error recovery in certain circumstances. </li>
  <li>XALANC-543: Crash when calling a template that wrongly uses xsl:with-param instead of xsl:param to declare its parameter. </li>
  <li>XALANC-539: XalanMap needs to compact buckets to prevent long search times and ever-increasing memory usage. </li>
  <li>XALANC-542: XalanDocumentFragmentXNodeSetBaseProxy::dereferenced() is not implemented properly </li>
  <li>XALANC-538: Better handling for non-existent node test </li>
  <li>XALANC-541: Fixes for zOS build </li>
  <li>XALANC-455: Problem when releasing InputSource obtained through an EntityResolver </li>
  <li>XALANC-535: If an error/warning message contains not-displayable character for the local encoding , no message is shown at all </li>
  <li>XALANC-532: FormatterToXMLUnicode does not serialize UTF-8 </li>
  <li>XALANC-536: ElemNumber uses extra temporary strings </li>
  <li>XALANC-537: XalanC source code quotes incorrectly license protected documents </li>
  <li>XALANC-526: Use of undefined stricmp breaks compilation on Linux </li>
  <li>XALANC-513: ICUFormatNumberFunctor has some MemoryManager issues </li>
  <li>XALANC-507: Safety improvements for XalanVector::insert() </li>
  <li>XALANC-506: Remove references to stlport directory in Makefile.incl.in </li>
  <li>XALANC-505: DirectoryEnumerator.hpp will not build on Solaris 10 with Sun Workshop 10 </li>
  <li>XALANC-502: XalanDOMStringCache has initializer list out of order </li>
  <li>XALANC-501: Creation of comments and PIs needs to detect illegal values </li>
  <li>XALANC-500: Remove old "diagnostic" output from StylesheetRoot and XSLTEngineImpl </li>
  <li>XALANC-497: Local variables or parameters in EXSLT-functions are interpreted as global </li>
  <li>XALANC-496: Glitches in header files </li>
  <li>XALANC-493: Problem with XALAN_STATIC_CHECK on HP-UX IA64 </li>
  <li>XALANC-492: Various pluggable memory management bugs. </li>
  <li>XALANC-490: XalanFileReporter is inconsistent in its usage of pluggable memory management </li>
  <li>XALANC-489: XalanMemMgrs has a thread-safety issue </li>
  <li>XALANC-488: XSLTInputSource does not support pluggable memory management </li>
  <li>XALANC-487: URISupport does not provide explicit MemoryManager </li>
  <li>XALANC-485: GCC warns about order of members in initializer list </li>
  <li>XALANC-484: Remove compiler warnings about placement delete for HP's aCC compiler </li>
  <li>XALANC-483: XercesParserLiaison does not create Xerces-C DOM instances with namespaces support enabled. </li>
  <li>XALANC-482: Remove compiler warnings </li>
  <li>XALANC-470: runConfigure does not pass link options to Makefile for AIX platform </li>
  <li>XALANC-465: Add alt tag to footer.html page under html/apiDocs tree. </li>
  <li>XALANC-463: Transforming an XML DOM document encapsulated within an XercesDOMWrapperParsedSource object triggers an invalid heap pointer exception if XSL opens other XML document with 'document()' function. </li>
  <li>XALANC-460: Linux/xlC port </li>
  <li>XALANC-448: TestXSLT/process.cpp compilation fails, interface broken in FormatterToText.hpp </li>
  <li>XALANC-445: generate-id() inserts periods into name which limits usage </li>
</ul>



<a name="bugs">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Bug reporting</h3>
<p>All known Xalan-C++ bugs are listed in <a href="https://issues.apache.org/jira/browse/XALANC">JIRA (the Apache bug database)</a>. For a list of open bugs with links to each bug
   report, see <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;jqlQuery=project+%3D+XALANC+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC">XalanC open bugs</a>. If you find a new bug, please enter a XalanC bug report in this
   database.</p>
<table class="note">
<tr>
<td class="noteImg">
<img src="resources/note.gif" alt="note" />
</td>
<td class="noteTxt">Before you can enter your first bug report, 
  you must submit your email address to 
  <a href="https://issues.apache.org/jira">JIRA</a> 
  and receive a password.
</td>
</tr>
</table> 
<p>We strongly encourage you write patches for problems you find and 
  submit them to JIRA and the
  <a href="mailto:dev@xalan.apache.org">xalan-dev</a> mailing list. 
  We review the patches we receive to make sure they do not break   something else, and (assuming they do not) 
  include them in our next release. 
  In the interest of fixing bugs, adding enhancements, and 
  addressing outstanding design issues, we sincerely want
  (and need!) your active participation in the ongoing development of Xalan.
</p>


<a name="to-do">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>To-do tasks for future Xalan-C/C++ releases</h3>
<p>Open bugs:</p>
<ul>
<li>The namespace axis does not return the default "xml" namespace.</li>
<li>Does not support case-order and lang attributes in xsl:sort.</li>
</ul>
<p>Items to do:</p>
<ul>
<li>Add support for new specifications (XPath-20, XSLT-2.0)</li>
<li>Add transcoding support using Xerces-C modules</li>
<li>Add XSLT extension elements</li>
<li>Add more EXSLT extension functions</li>
<li>Add the EXSLT document extension function</li>
<li>Add support for user-defined extension modules</li>
<li>Retire runConfigure script, use GNU AutoTools for platform maintenance</li>
<li>Add number and nodeset top-level parameters to the Xalan command-line</li>
<li>Add noNamespace file schema capability to the Xalan command-line</li>
</ul>

<p align="right" size="2">
<a href="#content">(top)</a>
</p>
</div>
<div id="footer">Copyright © 1999-2012 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Sun 2012-10-07</div>
</div>
</body>
</html>
