<?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 PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "../dtd/book-cocoon-v10.dtd">

<book software="POI Project"
    title="HSSF+XSSF"
    copyright="@year@ POI Project">

    <menu label="Apache POI">
        <menu-item label="Top" href="../index.html"/>
    </menu>

    <menu label="HSSF+XSSF">
        <menu-item label="Overview" href="index.html"/>
        <menu-item label="Quick Guide" href="quick-guide.html"/>
        <menu-item label="HOWTO" href="how-to.html"/>
        <menu-item label="HSSF to SS Converting" href="converting.html"/>
        <menu-item label="Formula Support" href="formula.html" />
        <menu-item label="Formula Evaluation" href="eval.html" />
		<menu-item label="Eval Dev Guide" href="eval-devguide.html" />
        <menu-item label="Use Case" href="use-case.html"/>
        <menu-item label="Pictorial Docs" href="diagrams.html"/>
        <menu-item label="Limitations" href="limitations.html"/>
    </menu>

    <menu label="Contributer's Guide">
        <menu-item label="Hacking HSSF" href="hacking-hssf.html"/>
        <menu-item label="Record Generator" href="record-generator.html"/>
        <menu-item label="Charts" href="chart.html"/>
    </menu>


</book>
