<!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 id="htmlroot">
<head>
<title>Xerces-2 Schema beta</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 Schema beta</h1>

<p><b>Features:</b>
<ul>
<li>Full xerces-1 schema support 
<li>New datatype validator design
<li>PSVI support 
<li>Grammar caching
<li>Misc. DOM L3 features  
</ul>
<p><b>Target DCUT (code complete) date: </b> Nov. 30 
<p><b>Target release date:</b> late December  

<p><b>Open Issues:</b>
<ul>
<li>How do we pass PSVI info thru XNI?  (see Andy Clark's proposal)
<li>Do we need to change our content model representation to include model group components?  
<li>How do we expose the PSVI info to the application? 
</ul>

<p><b>Clean-up work.   Needs volunteers. </b>
<ul>
<li>Use reference comparison for schema element names in traversers.   Needs some investigative work. 
<li>Error messages:  get rid of all calls to reportGenericSchemaError and ensure there are appropriate messages in the properties file. 
<li>General performance work:  revisit use of Hashtable, Vector, string concat, QName lookup, etc. 
<li>Complete work in the decl pool, and change the traversers to use it. 
<li>Revisit our validation options and their semantics.   
<li>Potentially revisit ENTITY validation - See Schema Rec Issue R-66. 
</ul>

<p><b>Features to be implemented if time permits</b>
<ul>
<li>Improved simple content model support
<li>Support for content models containing large minOccurs/maxOccurs values
<li>Improved error detection for XML Schema errors:  try to emit errors using line numbers from the Schema itself, and not the instance. 
</ul>

<h3>Development line items </h3>
<table border="2" align="right">
<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">Target start </th>
<th style="text-align:left">Target completion </th>
<th style="text-align:left">Status </th></tr>

<tr>
<td>New simpleType design 
<td>Neeraj Bajaj (Sandy Gao)
<td>2 pm </td>
<td>Sept. 15</td>
<td>Nov. 16</td>
<td> </td>
</tr>

<tr>
<td>Particle Derivation restriction checking </td>  
<td> Lisa Martin</td>
<td> 2-3 pw</td>
<td> Nov. 1</td>
<td> Nov. 23</td>
<td> </td>
</tr> 

<tr>
<td>cos-element-consistent checking </td>  
<td> Lisa Martin</td>
<td> 1 pw</td>
<td> Nov. 26</td>
<td> Nov. 30</td>
<td> </td>
</tr>

<tr>
<td>UPA checking and subsitution group handling</td>
<td>Sandy Gao </td>
<td>2 pw </td>
<td>Nov. 1 </td>
<td>Nov. 16 </td>
</tr>

<tr>
<td>PSVI support 
<ul>
<li>XNI changes
<li>gather information and pass thru XNI 
<li>expose PSVI to app
</ul>
<td>Elena Litani, Sandy Gao, Arun Yadav </td>
<td> 4 pw (elapsed) </td>
<td> Nov. 1 </td>
<td> Nov. 30 </td>
<td> </td>
<tr>

<tr>
<td>DOM L3 serialization 
<td>Rahul Srivastava </td>
<td>3 pw</td>
<td>Nov. 1</td>
<td>Nov. 23</td>
<td> </td>
</tr>

<tr>
<td>Misc. DOM L3 features: 
<ul>
<li>Load (2 pw)
<li>Pre-parsing schemas (1 pw)
<li>Misc. DOM L3 Core features - TBD
</ul>
</td> 
<td>Gopal Sharma, Pavani Mukhtipudi </td>
<td> </td>
<td>Nov. 1 </td>
<td>Nov. 30 </td>
</tr>

<tr>
<td>Grammar caching
<ul>
<li>grammar resolution
<li>schemaLocation feature?
</ul>
</td>
<td>Neil Graham </td>
<td>3-4 pw </td>
<td>Nov. 1 </td>
<td>Nov. 30 </td>
<td> </td>
</tr>

<tr>
<td>Testing 
<td>all </td>
<td>2 weeks (elapsed)  </td>
<td>Dec. 3 </td>
<td>Dec. 14 </td>
<td> </td>
</tr>

<tr>
<td>Build 
<td>all </td>
<td>  </td>
<td>Week of Dec. 17 </td>
<td>Week of Dec. 17 </td>
<td> </td>
</table>

</body>
</html>
