<html>
  <head>
    <title>Changes in Expat 3</title>
    <link rel="STYLESHEET" href="../style.css" type="text/css" />
  </head>
  <body marginwidth="0" marginheight="0">
    <table cellspacing="0" cellpadding="0" width="100%">
      <tr>
        <td class="corner"><a href="../"><img src="../expat.png"
                                              border="0"/></a></td>
        <td class="banner"><h2>Changes in Expat 3</h2></td>
      </tr>
      <tr>
        <td class="navbar">
        </td>
        <td class="content">

<p> This page describes some of the changes which should be expected
in Expat 3.  These are intended as notes made by the developers as
things get thought through; these can change at any time.  This is
<em>not</em> a projected feature list for Expat 3; to learn about the
target features, please read the <cite><a href="roadmap.html">Expat
Development Roadmap</a></cite>.  The changes described here are much
more focused on the details of Expat 3, and no attempt has been made
to balance the description of small changes with major new feature
development. </p>

<p> This list is not complete; we'll add to this as we think of things
and have time to write about them. </p>

<ul>
  <li> Support for XML 1.1 and the corresponding namespaces updates. </li>

  <li> The signature of the <code>XML_ParserReset()</code> method will
  grow an additional argument allowing specification of what should be
  reset.  See <a href=
  "http://sourceforge.net/tracker/index.php?func=detail&aid=1109116&group_id=10127&atid=110127"
  >bug report 1109116: <em>Optimize implementation of
  XML_ParserReset</em></a> for more information. </li>

  <li> All structural event callback functions will return an
  <code>XML_Status</code> value that the parser will check.  This will
  allow an application to stop or suspend processing without having to
  call <code>XML_StopParser</code>, which will therefore become obsolete. </li>
  
  <li> The memory management function signatures will gain an additional
  userData-like parameter, so that memory usage can be associated
  with a context, allowing usage of memory pools and tracking of memory
  usage per parser.  The latter could be used to prevent the so-called
  "million laughs" DoS attack. </li>
  
  <li> Change how qualified names are reported.  Instead of passing one
  string where the name parts are separated by a special character, we
  are going to use <code>QName</code> structs with members for local name,
  namespace URI and prefix. This will apply to element names and attribute
  names passed to <code>XML_StartElementHandler</code> and  
  <code>XML_EndElementHandler</code>.  </li>
  
  <li> We will try to add a way of setting additional encodings
  by name, using the existing framework built around
  <code>XML_UnknownEncodingHandler</code>. </li>
  
  <li> Create different link symbols for different XML_Char sizes.
  This would make it possible for different shared libraries making up an
  application on linux, to link against expat shared libraries that have
  been compiled with different definitions for XML_Char.</li>
  
</ul>

        </td>
      </tr>
      <tr>
        <td class="corner">
          <a href="http://sourceforge.net">
            <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=10127&amp;type=2"
              width="125" height="37" border="0" alt="SourceForge.net Logo" />
          </a>
        </td>
      </tr>
    </table>
  </body>
</html>@
