<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
 * 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.
-->
<html> 
<head>
<title>Xerces 2.1 plan</title>
<style type="text/css">
         BODY {  margin: 2em 1em 2em 70px;  
                 font-family: New Times Roman, serif;    
                 color: black;    
                 background-color: white;}
</style>
</head>

<body>
<h1>Xerces 2.1 Plan</h1>

<p><b>Features:</b>
<ul>
<li>Additional DOM L3 Core and Load and Save function 
<li>Application access to the PSVI          
<li>XML 1.1
<li>Other misc. features (time permitting)
<li>Performance work (TBD) 
</ul>
<p><b>Target DCUT (code complete) date: July 26</b>  
<p><b>Target release date: Week of Aug. 20 </b>               

<h3>Development line items </h3>
<table border="2">
<tr>
<th style="text-align:left">Line item </th>
<th style="text-align:left">Volunteer </th>
<th style="text-align:left">Sizing </th>
<th style="text-align:left">Timeframe </th>
<th style="text-align:left">Status </th></tr>

<tr>
<td><b>DOM L3 </b>                </td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

<tr>
<td>Text </td>
<td> Elena Litani</td>
<td> 1 pw</td>
<td> June 17 - June 21 </td>
<td> </td>
</tr> 

<tr>
<td>Load and Save </td>
<td> Elena Litani</td>
<td> 1 pm</td>
<td> June 24 - July 19 </td>
<td> </td>
</tr>

<tr>
<td><b>PSVI </b>                </td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

<tr>
<td>Provide access from DOM</td>
<td> Sandy Gao</td>
<td> 1 pm </td>
<td> June 17 - July 12</td>
<td> </td>
</tr>

<tr>
<td><b>XML 1.1 </b>                </td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

<tr>
<td>Implement XML 1.1</td>
<td> Neil Graham</td>
<td> 1 pm </td>
<td> June 17 - July 12</td>
<td> </td>
</tr>

<tr>
<td><b>Misc. features and cleanup </b>                </td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

<tr>
<td>Features TBD - see candidate list below </td>
<td>Neil Graham, Lisa Martin, Sandy Gao</td>
<td></td>
<td>July 15 - July 26</td>
<td></td>
</tr>

<tr>
<td><b>Performance enhancements  </b>               </td> 
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

<tr>
<td>Misc. performance-related items (TBD)</td>
<td> Gopal Sharma, Neerja Bajaj, Rahul Srivastava, Pavani Mukthipudi, et. al</td>
<td> TBD</td>
<td> TBD</td>
<td> </td>
</tr>

<tr>
<td><b>DCUT  </b>               </td> 
<td></td>
<td></td>
<td>July 26 </td>
<td></td>
</tr>

<tr>
<td><b>Bug fix, test, etc.  </b>                </td>
<td>all</td>
<td>3 pw</td>
<td>July 29 - Aug. 17</td>
<td></td>
</tr>

<tr>
<td><b>Build and publish Xerces 2.1</b>       </td>
<td></td>
<td></td>
<td>Week of Aug. 20 </td>
<td></td>
</tr>

</table>

<h3>Candidate features and cleanup items</h3>
<ul>
<li>Schema:  support multiple schemas in 1 file
<li>Schema:  support schemas embedded in instance docs
<li>Schema:  fix problem of cascading errors when schema not found
<li>Schema:  provide more informative datatypes errors
<li>Cleanup of validation features and properties
<li>Accepting DOM tree as source of schema
<li>Schema: Cleanup processing of error codes for element/attribute PSVI
<li>Schema: Investigate whether semantics should change when decl not found for alidation root
<li>Schema:  should we keep simple content model?
<li>Revisit severity of namespace-related errors
<li> ... 
</ul>
</body>
</html>
