<html>
  <head>
    <title>Expat 1.95.4 Requirements</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>Expat 1.95.4 Requirements</h2></td>
      </tr>
      <tr>
        <td class="navbar">
        </td>
        <td class="content">

<p>The following are the currently-planned release requirements for
Expat 1.95.4.  Items will not be removed from this page; if a
requirement is dropped or delayed, it will be moved to the appropriate
section at the end and the reason for the change will be noted.</p>


<h3>Expat 1.95.4 Requirements</h3>

<ul>
  <li> The SkippedEntityHandler patch should be checked in and
  thoroughly debugged.<br />
  See <a href=
  "http://sourceforge.net/tracker/index.php?func=detail&amp;aid=559910&amp;group_id=10127&amp;atid=310127" >SF patch #559910</a>.<br />
  <strong>Status: <em>Done.</em></strong>
  </li>
  <li> <a href=
  "http://sourceforge.net/tracker/index.php?func=detail&amp;aid=441449&amp;group_id=10127&amp;atid=110127"
  >SF bug #441449</a> should be resolved.<br />
  <strong>Status: <em>Done.</em></strong>
  </li>
  <li> Hard tab characters will be removed from all source files.
  They will be replaced with spaces.<br />
  See <a href=
  "http://sourceforge.net/tracker/index.php?func=detail&amp;aid=570903&amp;group_id=10127&amp;atid=110127"
  >SF bug #570903</a>.<br />
  <strong>Status: <em>Done.</em></strong>
  </li>
</ul>

<h3>Delayed Requirements</h3>

<ul>
  <li> The InternalEntityRefHandler feature needs to be implemented
  and tested.<br />
  See the comments for  <a href=
  "http://sourceforge.net/tracker/index.php?func=detail&amp;aid=429501&amp;group_id=10127&amp;atid=310127"
  >SF patch #429501</a>.<br />
  <strong>Status: <em>Delayed</em>:</strong>
  This was delayed to a future release to allow urgent bugfixes to be
  released sooner rather than being delayed by this feature.  The
  interface for this feature is proving difficult to design, so this
  deserves more consideration.
  </li>
  <li> The build process on Unix should create both libexpat.{a,so}
  and libexpatw.{a,so} by default.
  <strong>Status: <em>Delayed</em>:</strong>
  Delayed since we don't want the build process changes to hold up
  the release of real bug fixes.  We can have another release later.
  </li>
</ul>

<h3>Dropped Requirements</h3>

<p>There are no dropped requirements at this time.</p>

        </td>
      </tr>
      <tr>
        <td class="corner">
          <a href="http://sourceforge.net/"> 
            <img src="http://cvs.sourceforge.net/sourceforge_whitebg.gif"
                 width="136" height="79" border="0" alt="SourceForge
                 Logo" />
          </a>
        </td>
      </tr>
    </table>
  </body>
</html>
