<?xml version="1.0"?>
<!--
 * 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.
-->

<!DOCTYPE book SYSTEM "sbk:/style/dtd/book.dtd">

<book title="&XercesCName; &XercesC3Version; Documentation" copyright="1999-2008 The Apache Software Foundation">

  <section label="&XercesCName; &XercesC3Version;"/>

     <document id="index"       label="Readme"             source="readme.xml"/>
     <document id="install-&XercesC3Series;" label="Installation" source="install.xml"/>
     <document id="build-&XercesC3Series;" label="Build Instructions" source="build.xml"/>

  <separator-space/>

     <document id="program-&XercesC3Series;" label="Programming"  source="program.xml"/>
     <hidden   id="program-sax-&XercesC3Series;"           source="program-sax.xml"/>
     <hidden   id="program-sax2-&XercesC3Series;"          source="program-sax2.xml"/>
     <hidden   id="program-dom-&XercesC3Series;"           source="program-dom.xml"/>
     <hidden   id="schema-&XercesC3Series;"                source="schema.xml"/>
     <hidden   id="program-others-&XercesC3Series;"        source="program-others.xml"/>

     <document id="samples-&XercesC3Series;"     label="Samples" source="samples.xml"/>
     <hidden   id="saxcount-&XercesC3Series;"    source="saxcount.xml"/>
     <hidden   id="saxprint-&XercesC3Series;"    source="saxprint.xml"/>
     <hidden   id="domcount-&XercesC3Series;"    source="domcount.xml"/>
     <hidden   id="domprint-&XercesC3Series;"    source="domprint.xml"/>
     <hidden   id="memparse-&XercesC3Series;"    source="memparse.xml"/>
     <hidden   id="redirect-&XercesC3Series;"    source="redirect.xml"/>
     <hidden   id="pparse-&XercesC3Series;"      source="pparse.xml"/>
     <hidden   id="stdinparse-&XercesC3Series;"  source="stdinparse.xml"/>
     <hidden   id="enumval-&XercesC3Series;"     source="enumval.xml"/>
     <hidden   id="createdoc-&XercesC3Series;"   source="createdoc.xml"/>
     <hidden   id="sax2count-&XercesC3Series;"   source="sax2count.xml"/>
     <hidden   id="sax2print-&XercesC3Series;"   source="sax2print.xml"/>
     <hidden   id="senumval-&XercesC3Series;"    source="senumval.xml"/>
     <hidden   id="psviwriter-&XercesC3Series;"  source="psviwriter.xml"/>
     <hidden   id="scmprint-&XercesC3Series;"    source="scmprint.xml"/>
     <hidden   id="xinclude-&XercesC3Series;"    source="xinclude.xml"/>

     <group    id="faqs-&XercesC3Series;"        label="FAQs">
        <entry id="faq-distrib-&XercesC3Series;" source="faq-distrib.xml"/>
        <entry id="faq-build-&XercesC3Series;"   source="faq-build.xml"/>
        <entry id="faq-parse-&XercesC3Series;"   source="faq-parse.xml"/>
        <entry id="faq-other-&XercesC3Series;"   source="faq-other.xml"/>
	<entry id="faq-contributing-&XercesC3Series;" source="faq-contributing.xml"/>
     </group>

  <separator-space/>

     <document id="api-&XercesC3Series;" label="API Reference" source="apidocs.xml"/>
     <external label="DOM C++ Binding" href="ApacheDOMC++Binding.html"/>
     <document id="migrate-&XercesC3Series;" label="Migration Guide" source="migration.xml"/>
     <hidden   id="migrate-archive-&XercesC3Series;" source="migration_archive.xml"/>

</book>
