<?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; Documentation" copyright="1999-2017 The Apache Software Foundation">

  <external href="../index.html"  label="Xerces Project"/>

  <separator/>

     <document id="index"       label="Overview"         source="readme.xml"/>
     <document id="charter"     label="Charter"          source="charter.xml"/>
     <document id="releases"    label="Release Info"     source="releases.xml"/>
     <document id="secadv"      label="Advisories"       source="secadv.xml"/>
     <hidden id="releases_archive"                   source="releases_archive.xml"/>
     <hidden id="releases_plan" source="releases_plan.xml"/>
     <external href="http://&XercesDistDir;"              label="Download"/>
     <hidden id="download" source="download.xml"/>

  <separator/>

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

     <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"/>

  <separator/>

  <document id="feedback"    label="Feedback"     source="feedback.xml"/>
  <document id="bug-report"  label="Bug-Reporting" source="bug-report.xml"/>
  <document id="mailing-lists"  label="Mailing Lists" source="mailing-lists.xml"/>

  <separator/>

   <document id="source-repository"  label="Source Repository" source="source-repository.xml"/>
   <document id="applications"  label="Applications" source="applications.xml"/>

</book>
