<!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.8.0 plan</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE type=text/css>BODY {
	MARGIN: 2em 1em 2em 70px; COLOR: black; FONT-FAMILY: New Times Roman, serif; BACKGROUND-COLOR: white
}
</STYLE>

<META content="MSHTML 6.00.2800.1226" name=GENERATOR></HEAD>
<BODY>
<H1>Xerces 2.8.0 Plan</H1>
<P><B>Features:</B> 
<UL>
  <LI>Start schema assessment from a specific type definition
  <LI>Features for disabling ID/IDREF, unparsed entity and identity constraint checking
  <LI>Enhancements to XML Schema annotation support
  <LI>Support the warn-on-undeclared-elemdef feature which has been missing for many releases
  <LI>Other misc. features, improvements and bug fixes</LI></UL>
<P><B>Target DCUT (code complete) date: February 24th, 2006 </B>
<P><B>Target release date: February 27th, 2006 </B>
<H3>Development line items </H3>
<TABLE border=2>
  <TBODY>
  <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 Level 3 </B></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD>Repair DTD and schema validation behaviour of Document.normalizeDocument()</TD>
    <TD>Michael Glavassevich</TD>
    <TD>2 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>LSSerializer: format-pretty-print [true]</TD>
    <TD>Matej Kraus</TD>
    <TD></TD>
    <TD>November 2005</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD><B>JAXP 1.3 </B></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD>Enhancements to SchemaFactory.newSchema(Source[])</TD>
    <TD>Peter McCracken</TD>
    <TD>1 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Expose current element node from validator when input is DOM.</TD>
    <TD>Michael Glavassevich</TD>
    <TD>0.5 pd</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD><B>DTD</B></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD>Feature: balance-syntax-trees</TD>
    <TD>Michael Glavassevich</TD>
    <TD>1.5 pw</TD>
    <TD>October 2005</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Feature: warn-on-undeclared-elemdef</TD>
    <TD>Michael Glavassevich</TD>
    <TD>2 pd</TD>
    <TD>January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD><B>XML Schema 1.0</B></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD>Expose annotations in XSAttributeUse and XSParticle</TD>
    <TD>Neil Delima</TD>
    <TD>2 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Support lists of annotations for other XSObjects</TD>
    <TD>Neil Delima</TD>
    <TD>2 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Feature: id-idref-checking</TD>
    <TD>Peter McCracken</TD>
    <TD>1 pd</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Feature: identity-constraint-checking</TD>
    <TD>Peter McCracken</TD>
    <TD>2 pd</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Feature: unparsed-entity-checking</TD>
    <TD>Peter McCracken</TD>
    <TD>1 pd</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Feature: ignore-xsi-type-until-elemdecl</TD>
    <TD>Peter McCracken</TD>
    <TD>1 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Property: root-type-definition</TD>
    <TD>Peter McCracken</TD>
    <TD>1 pw</TD>
    <TD>December 2005 / January 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Improve identity constraint error messages</TD>
    <TD>George Cristian Bina</TD>
    <TD></TD>
    <TD>August 2005</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD><B>Miscellaneous </B></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD>Bug fixes in xml-commons and update to latest xml-commons-external </TD>
    <TD>Nathan Beyer, Michael Glavassevich</TD>
    <TD></TD>
    <TD>January/February 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Replace XJavac Ant task with a cleaner solution </TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>Deferred</TD></TR>
  <TR>
    <TD>Fix dtdjars target which was broken in Xerces 2.7.0 </TD>
    <TD>Michael Glavassevich</TD>
    <TD></TD>
    <TD>February 23rd/24th, 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD>Documentation improvements </TD>
    <TD>All</TD>
    <TD></TD>
    <TD>February 2006</TD>
    <TD>Complete</TD></TR>
  <TR>
    <TD><B>DCUT </B></TD>
    <TD></TD>
    <TD></TD>
    <TD>February 24th, 2006 </TD>
    <TD></TD></TR>
  <TR>
    <TD><B>Review and fix severe defects reported in Bugzilla/Jira </B></TD>
    <TD>All</TD>
    <TD>1 pw</TD>
    <TD>February 24th-27th, 2006 </TD>
    <TD></TD></TR>
  <TR>
    <TD><B>Build and publish Xerces 2.8.0</B> </TD>
    <TD></TD>
    <TD></TD>
    <TD>February 27th, 2006 </TD>
    <TD></TD></TR></TBODY></TABLE>
<H3>Candidate features and cleanup items (if time permits) </H3>
<UL> 
  <LI>... </LI></UL></BODY></HTML>
