<!DOCTYPE html>
<html lang="en">
  <head>
    {% block head %}
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />
    <link rel="stylesheet" type="text/css" media="screen" href="https://www.apache.org/css/code.css">
    <link href="/css/profile.css" rel="stylesheet" type="text/css" />
    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css" />
    <link href="/css/print.css" rel="stylesheet" type="text/css" media="print" />

    <script src="https://code.jquery.com/jquery.min.js"></script>
	<script type="text/javascript" src="/js/jquery.stoc.js"></script>
    <script>
    $(document).ready(function(){
        $('ul#navigation a').each(function() {
		    if (this.href === window.location.href)
			    { $(this). attr('id', 'forefront');} 
        });
        $('ul#navigation a#forefront').each(function() {
        	
        });
    })
	$(function(){
		$("#items").stoc({ search: "#content", stocTitle: "<h3>Page Contents</h3>" });
	});
    </script>



	<style>
	.highlight {color: red;}
	</style>
    {% endblock head %}
  </head>

  <body>

{% if "batik" in output_file %}
    {% include 'batik-top.html' %}
{% elif "fop" in output_file %}
    {% include 'fop-top.html' %}
{% else %}
    {% include 'xgc-top.html' %}
{% endif %}  

      <div id="content" class="grid_16">
        <div id="items">
        </div>
      	<div class="section-content"><style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>        
      {% block content %}
      {% endblock %}
        </div>
      </div>
      <div class="clear"></div>

      {% include 'bottom.html' %}

  </body>
</html>
