<?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.
 */
-->

<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>Doxia Sitetools</title>
    <author email="hboutemy_AT_apache_DOT_org">Hervé Boutemy</author>
  </properties>

  <body>

    <section name="Doxia Sitetools">

      <p>Doxia Sitetools is an extension of <a href="../doxia">base Doxia component</a> that generates:</p>
      <ul>
      <li>either <b>HTML sites</b>, adding decoration (header, footer, navigation bar, menu, ...) to content that was generated by Doxia:
      a decoration is defined in a <b>site skin</b>,</li>
      <li>or <b>documents</b> like RTF or PDF.</li>
      </ul>
      <p>In addition, Doxia Sitetools processes files with extra <code>.vm</code> extension with <a href="http://velocity.apache.org/">Velocity</a>.</p>

      <p>
        <img src="images/doxia-sitetools-deps.png" width="670" height="370" border="0" usemap="#Doxia_sitetools_dependencies" alt="Doxia Sitetools Dependencies"/>
        <map name="Doxia_sitetools_dependencies" id="Doxia_sitetools_dependencies">
          <area shape="rect" coords="133,63,274,97"   href="doxia-site-renderer/index.html"       alt="Doxia Site Renderer"/>
          <area shape="rect" coords="2,119,162,153"   href="doxia-integration-tools/index.html"   alt="Doxia Integration Tools"/>
          <area shape="rect" coords="32,232,199,267"  href="doxia-decoration-model/index.html"    alt="Doxia Decoration Model"/>
          <area shape="rect" coords="207,232,324,267" href="doxia-skin-model/index.html"          alt="Doxia Skin Model"/>
          <area shape="rect" coords="459,63,596,97"   href="doxia-doc-renderer/index.html"        alt="Doxia Document Renderer"/>
          <area shape="rect" coords="288,123,444,159" href="http://codehaus-plexus.github.io/plexus-velocity/"        alt="Plexus Velocity"/>
          <area shape="rect" coords="318,180,414,214" href="http://velocity.apache.org"                               alt="Velocity"/>
          <area shape="rect" coords="134,301,274,337" href="/doxia/doxia/doxia-modules/doxia-module-xhtml/index.html" alt="Doxia Module XHTML"/>
          <area shape="rect" coords="409,301,524,336" href="/doxia/doxia/doxia-modules/doxia-module-fo/index.html"    alt="Doxia Module FO"/>
          <area shape="rect" coords="527,302,663,337" href="/doxia/doxia/doxia-modules/doxia-module-itext/index.html" alt="Doxia Module iText"/>
          <area shape="rect" coords="126,297,669,369" href="/doxia/doxia/doxia-modules/index.html" alt="Doxia Modules"/>
        </map>
      </p>

    </section>

  </body>

</document>
