<?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>

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

  <body>

    <section name="Doxia">

      <p>Doxia is a content generation framework that provides powerful techniques for generating static and dynamic content,
       supporting <a href="/doxia/references/index.html">a variety of markup languages</a>.</p>

      <p>The actual component is the base component from the whole Doxia suite, with the core parser and sink APIs and
      their implementation in supported markup languages.</p>
      
      <p>It is used by the <a href="../doxia-sitetools">Doxia Sitetools</a> extension,
      that adds site and documents support.</p>

      <p>
        <img src="images/doxia-deps.png" width="805" height="403" border="0" usemap="#Doxia_dependencies" />
        <map name="Doxia_dependencies">
          <area shape="rect" coords="121,365,276,403"  href="./doxia-test-docs/" />
          <area shape="rect" coords="324,363,481,403" href="./doxia-logging-api/" />
          <area shape="rect" coords="324,305,479,345" href="./doxia-sink-api/" />
          <area shape="rect" coords="323,242,481,283" href="./doxia-core/" />
          <area shape="rect" coords="32,13,128,53"    href="./doxia-modules/doxia-module-apt/" />
          <area shape="rect" coords="217,12,316,52"   href="./doxia-modules/doxia-module-xdoc/" />
          <area shape="rect" coords="542,12,646,53"   href="./doxia-modules/doxia-module-xhtml/" />
          <area shape="rect" coords="664,13,768,52"   href="./doxia-modules/doxia-module-xhtml5/" />
          <area shape="rect" coords="347,13,444,53"   href="./doxia-modules/doxia-module-fml/" />
          <area shape="rect" coords="32,62,194,102"   href="./doxia-modules/doxia-module-confluence/" />
          <area shape="rect" coords="211,63,293,102"  href="./doxia-modules/doxia-module-twiki/" />
          <area shape="rect" coords="662,63,768,103"  href="./doxia-modules/doxia-module-latex/" />
          <area shape="rect" coords="314,62,505,103"  href="./doxia-modules/doxia-module-docbook-simple/" />
          <area shape="rect" coords="554,63,633,102"  href="./doxia-modules/doxia-module-rtf/" />
          <area shape="rect" coords="544,113,640,153" href="./doxia-modules/doxia-module-itext" />
          <area shape="rect" coords="667,113,764,153" href="./doxia-modules/doxia-module-fo/" />
          <area shape="rect" coords="87,112,259,153"  href="./doxia-modules/doxia-module-markdown/" />
          <area shape="rect" coords="0,0,803,210"     href="./doxia-modules/" />
          <area shape="rect" coords="90,240,257,280"  href="https://github.com/vsch/flexmark-java" />
          <area shape="rect" coords="551,240,634,281" href="http://www.lowagie.com/iText/" />
          <area shape="rect" coords="684,241,747,280" href="http://xmlgraphics.apache.org/fop/" />
          <area shape="rect" coords="521,364,676,403" href="https://codehaus-plexus.github.io/" />
        </map>
      </p>

    </section>

  </body>

</document>
