<!--
  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.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

  <xsl:param name="glossary.sort" select="1"></xsl:param>

  <xsl:param name="generate.section.toc.level" select="1"></xsl:param>

  <xsl:param name="admon.graphics" select="1"></xsl:param>
  <xsl:param name="admon.graphics.path">images/icons/admon/</xsl:param>
  <xsl:param name="admon.graphics.extension">.png</xsl:param>

  <xsl:param name="navig.graphics.path">images/icons/</xsl:param>
  <xsl:param name="navig.graphics" select="0"></xsl:param>

  <xsl:param name="callout.graphics" select="0"/>
  <xsl:param name="callout.unicode" select="1"/>
  <xsl:param name="callout.unicode.number.limit" select="10"/>

  <xsl:param name="generate.legalnotice.link" select="1"/>
  <xsl:param name="legalnotice.filename">legalnotice.html</xsl:param>

  <xsl:param name="generate.revhistory.link" select="1"/>

  <xsl:param name="use.id.as.filename" select="1"></xsl:param>

  <!-- don't generate annoying title attributes all over the place -->
  <xsl:template name="generate.html.title"/>

  <xsl:param name="table.borders.with.css" select="0"></xsl:param>
  <xsl:param name="html.cellspacing">0</xsl:param>
  <xsl:param name="html.cellpadding">0</xsl:param>

  <xsl:param name="html.extra.head.links" select="1"></xsl:param>

</xsl:stylesheet>

