<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->

<!-- This document is used as source for generating www/dev/todo.html.
     When you change this, please regenerate result document by 'ant todo' in www directory.
  -->

<!--DOCTYPE list PUBLIC "-//NetBeans//DTD ToDo 1.0//EN" "http://xml.netbeans.org/dtds/todo-1_0.dtd" [-->
<!DOCTYPE list [
    <!ENTITY api_todo.xml       SYSTEM "api/TODO.xml">
    <!ENTITY catalog_todo.xml   SYSTEM "catalog/TODO.xml">
    <!ENTITY core_todo.xml      SYSTEM "core/TODO.xml">
    <!ENTITY css_todo.xml       SYSTEM "css/TODO.xml">
    <!ENTITY tax_todo.xml       SYSTEM "tax/TODO.xml">
    <!ENTITY text-edit_todo.xml SYSTEM "text-edit/TODO.xml">
    <!ENTITY tools_todo.xml     SYSTEM "tools/TODO.xml">
    <!ENTITY tree-edit_todo.xml SYSTEM "tree-edit/TODO.xml">
    <!ENTITY xsl_todo.xml       SYSTEM "xsl/TODO.xml">
]>

<list module="xml">
    <item priority="2">
        <summary>XML module API</summary>
        <description>When we will have xml-api module (see core's <a href="#core">TODO</a>), than we can guarantee TAX, XML-API with Looks as API around XML stuff.</description>
    </item>

    <item priority="2">
        <summary>Upgrade modules to use 3.4 implementation.</summary>
        <description>Upgrade modules to use 3.4 implementation, especially mf-layer advantages -- see <a href="http://www.netbeans.org/unbranded-source/browse/~checkout~/openide/api/doc/org/openide/doc-files/upgrade.html">3.2 -> 3.3 -> 3.4 Upgrade Guide</a> for more info.</description>
    </item>

    &api_todo.xml;
    &catalog_todo.xml;
    &core_todo.xml;
    &css_todo.xml;
    &tax_todo.xml;
    &text-edit_todo.xml;
    &tools_todo.xml;
    &tree-edit_todo.xml;    
    &xsl_todo.xml;
</list>
