<?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="647" height="335" border="0" usemap="#Doxia_dependencies" />
        <map name="Doxia_dependencies">
          <area shape="rect" coords="98,303,220,335"  href="./doxia-test-docs/" />
          <area shape="rect" coords="262,303,385,335" href="./doxia-logging-api/" />
          <area shape="rect" coords="262,254,385,285" href="./doxia-sink-api/" />
          <area shape="rect" coords="262,201,385,234" href="./doxia-core/" />
          <area shape="rect" coords="41,12,167,44"    href="./doxia-modules/doxia-module-apt/" />
          <area shape="rect" coords="190,11,315,44"   href="./doxia-modules/doxia-module-xdoc/" />
          <area shape="rect" coords="339,12,462,44"   href="./doxia-modules/doxia-module-xhtml/" />
          <area shape="rect" coords="486,12,609,44"   href="./doxia-modules/doxia-module-fml/" />
          <area shape="rect" coords="68,54,243,85"    href="./doxia-modules/doxia-module-confluence/" />
          <area shape="rect" coords="276,54,399,85"   href="./doxia-modules/doxia-module-twiki/" />
          <area shape="rect" coords="431,53,554,85"   href="./doxia-modules/doxia-module-latex/" />
          <area shape="rect" coords="14,96,232,127"   href="./doxia-modules/doxia-module-docbook-simple/" />
          <area shape="rect" coords="242,96,365,127"  href="./doxia-modules/doxia-module-rtf/" />
          <area shape="rect" coords="378,96,501,127"  href="./doxia-modules/doxia-module-itext" />
          <area shape="rect" coords="512,96,636,127"  href="./doxia-modules/doxia-module-fo/" />
          <area shape="rect" coords="91,136,272,168"  href="./doxia-modules/doxia-module-markdown/" />
          <area shape="rect" coords="0,0,646,175"     href="./doxia-modules/" />
          <area shape="rect" coords="107,199,256,234" href="https://github.com/vsch/flexmark-java" />
          <area shape="rect" coords="407,201,472,233" href="http://www.lowagie.com/iText/" />
          <area shape="rect" coords="551,199,600,232" href="http://xmlgraphics.apache.org/fop/" />
          <area shape="rect" coords="420,303,542,334" href="http://plexus.codehaus.org/" />
        </map>
      </p>

    </section>

  </body>

</document>
