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

 $Id$
-->
<!--
Skin configuration file. This file contains details of your project,
which will be used to configure the chosen Forrest skin.

Explanation of some elements has been removed from this file.
See main/fresh-site/src/documentation/skinconf.xml for details.
-->
<!DOCTYPE skinconfig PUBLIC "-//APACHE//DTD Skin Configuration V0.8-2//EN" "http://forrest.apache.org/dtd/skinconfig-v08-2.dtd">
<skinconfig>
  <!-- To enable lucene search add provider="lucene" (default is google).
    Add box-location="alt" to move the search box to an alternate location
    (if the skin supports it) and box-location="all" to show it in all
    available locations on the page.  Remove the <search> element to show
    no search box. @domain will enable sitesearch for the specific domain with google.
    In other words google will search the @domain for the query string.
  -->
  <search name="Apache Batik" domain="xmlgraphics.apache.org" provider="google"/>

  <!-- Disable the print link? If enabled, invalid HTML 4.0.1 -->
  <disable-print-link>true</disable-print-link>  
  <!-- Disable the PDF link? -->
  <disable-pdf-link>false</disable-pdf-link>
  <!-- Disable the POD link? -->
  <disable-pod-link>true</disable-pod-link>
  <!-- Disable the Text link? FIXME: NOT YET IMPLEMENETED. -->
  <disable-txt-link>true</disable-txt-link>
  <!-- Disable the xml source link? -->
  <!-- The xml source link makes it possible to access the xml rendition
    of the source from the html page, and to have it generated statically.
    This can be used to enable other sites and services to reuse the
    xml format for their uses. Keep this disabled if you don't want other
    sites to easily reuse your pages.-->
  <disable-xml-link>false</disable-xml-link>

  <!-- Disable navigation icons on all external links? -->
  <disable-external-link-image>false</disable-external-link-image>

  <!-- Disable w3c compliance links? 
    Use e.g. align="center" to move the compliance links logos to 
    an alternate location default is left.
    (if the skin supports it) -->
  <disable-compliance-links>true</disable-compliance-links>

  <!-- Render mailto: links unrecognisable by spam harvesters? -->
  <obfuscate-mail-links>true</obfuscate-mail-links>
  <obfuscate-mail-value>.at.</obfuscate-mail-value>
<!-- Disable the javascript facility to change the font size -->
  <disable-font-script>false</disable-font-script>

  <!-- mandatory project logo
       default skin: renders it at the top -->
  <project-name>Apache Batik</project-name>
  <project-description>Batik is a Java-based toolkit for
  applications or applets that want to use images in the
  Scalable Vector Graphics (SVG) format for various purposes,
  such as display, generation or manipulation.</project-description>
  <project-url>http://xmlgraphics.apache.org/batik/</project-url>
  <project-logo>images/batik.png</project-logo>
  <!-- Alternative static image:
  <project-logo>images/project-logo.gif</project-logo> -->

  <!-- optional group logo
       default skin: renders it at the top-left corner -->
  <group-name>Apache XML Graphics</group-name>
  <group-description>Apache XML Graphics is responsible for the
  creation and maintenance of software for managing the
  conversion of XML formats to graphical output, and the
  creation and maintenance of related software components,
  based on software licensed to the Foundation</group-description>
  <group-url>http://xmlgraphics.apache.org/</group-url>
  <group-logo>images/group-logo.png</group-logo>
  <!-- Alternative static image:
  <group-logo>images/group-logo.gif</group-logo> -->

  <!-- optional host logo (e.g. sourceforge logo)
       default skin: renders it at the bottom-left corner -->
  <host-url></host-url>
  <host-logo></host-logo>

  <!-- relative url of a favicon file, normally favicon.ico -->
  <favicon-url></favicon-url>

  <!-- The following are used to construct a copyright statement -->
  <year inception="true">2000</year>
  <vendor>The Apache Software Foundation. Licensed under Apache License 2.0</vendor>
  <copyright-link>http://www.apache.org/licenses/</copyright-link>
<!-- Optional text trademark statement below the copyright statement -->
  <trademark-statement>
    Apache, Apache Forrest, the Apache feather logo, and the Apache Forrest
    logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
  </trademark-statement>
<!-- Some skins use this to form a 'breadcrumb trail' of links.
    If you don't want these, then set the attributes to blank.
    The DTD purposefully requires them.
    Use location="alt" to move the trail to an alternate location
    (if the skin supports it).
    Omit the location attribute to display the trail in the default location.
    Use location="none" to not display the trail (if the skin supports it).
    For some skins just set the attributes to blank.
    
    NOTE: If a breadcrumb entry points at a local file the href must
    be complete, that is it must point to the file itself, not to a 
    directory.
  -->
  <trail>
    <link1 name="apache" href="http://www.apache.org/"/>
    <link2 name="xml" href="http://xml.apache.org/"/>
    <link3 name="graphics" href="http://xmlgraphics.apache.org/"/>
  </trail>
<!-- Configure the TOC, i.e. the Table of Contents.
  @max-depth
   how many "section" levels need to be included in the
   generated Table of Contents (TOC). 
  @min-sections
   Minimum required to create a TOC.
  @location ("page","menu","page,menu", "none")
   Where to show the TOC.
  -->
  <toc max-depth="2" min-sections="2" location="page"/>

  <!-- Heading types can be clean|underlined|boxed  -->
  <headings type="boxed"/>
  
  <!-- The optional feedback element will be used to construct a
    feedback link in the footer with the page pathname appended:
    <a href="@href">{@to}</a>
  <feedback to="webmaster@foo.com"
    href="mailto:webmaster@foo.com?subject=Feedback&#160;" >
    Send feedback about the website to:
  </feedback>
    -->

  <!-- Optional message of the day (MOTD).
    Note: This is only implemented in the pelt skin.
    If the optional <motd> element is used, then messages will be appended
    depending on the URI string pattern.
    motd-option : Specifies a pattern to match and provides small text content.
    motd-title : This text will be added in brackets after the <html><title>
    motd-page : This text will be added in a panel on the face of the page,
    with the "motd-page-url" being the hyperlink "More".
    Values for the "location" attribute are:
      page : on the face of the page, e.g. in the spare space of the toc
      alt : at the bottom of the left-hand navigation panel
      both : both
    -->
<!--
  <motd>
    <motd-option pattern="docs_0_80">
      <motd-title>v0.8-dev</motd-title>
      <motd-page location="both">
        This is documentation for development version v0.8
      </motd-page>
      <motd-page-url>/versions/index.html</motd-page-url>
    </motd-option>
    <motd-option pattern="docs_0_70">
      <motd-title>v0.7</motd-title>
      <motd-page location="both">
        This is documentation for current version v0.7
      </motd-page>
      <motd-page-url>/versions/index.html</motd-page-url>
    </motd-option>
  </motd>
-->

  <!--
    extra-css - here you can define custom css-elements that are 
    A) overriding the fallback elements or 
    B) adding the css definition from new elements that you may have 
       used in your documentation.
    -->
  <extra-css>
    #content a:link {
      text-decoration: none;
      border-bottom: 1px solid #ccc;
    }
    #content a:visited {
      text-decoration: none;
      border-bottom: 1px solid #ccc;
    }
    #footer a {
      color: navy;
    }
    #content ul.minitoc a:visited {
      color: maroon;
    }
    #content a:hover {
      background-color: #ffffdd;
      border-bottom: 1px solid #aaa;
    }
    body, table, p {
      font-family: Verdana, "Bitstream Vera Sans", Arial, Helvetica, sans-serif;
    }
    body, p, div, dl, ul, ol {
      font-size: 9pt;
    }
    p, #content ul.minitoc, .note .content, .warning .content {
      line-height: 1.5em;
    }
    #main .breadtrail {
      display: none;
    }
    #top .grouplogo {
      position: absolute;
      left: 0;
      float: none;
    }
    #top .projectlogo {
      text-align: center;
      float: none;
      margin: 0 auto;
      width: 256px;
    }
    #menu {
      padding-top: 2em;
    }
    #menu hr {
      border: 0;
      border-top: 1px solid #6f569e;
    }
    #menu .menupage {
      background-position: center left;
      margin-top: 2px;
      margin-bottom: 2px;
      position: relative;
    }
    #menu .menupagetitle {
      border: 0;
      padding-top: 2px;
      padding-bottom: 2px;
      position: relative;
      font-weight: bold;
    }
    #menu .menuitem {
      position: relative;
    }
    #menu .menuitem, #menu .menupagetitle, #menu .menutitle {
      font-size: 8pt;
    }




    #credit2 img {
      margin-top: 1em;
    }
    p.quote {
      margin-left: 2em;
      padding: .5em;
      background-color: #f0f0f0;
      border: 1px solid #ddd;
    }
    #content ul {
      list-style-image: url('images/current.gif');
    }
    .boxed {
      color: white;
      padding: 0.25em;
    }
    #content h1 {
      font-size: 15pt;
    }
    #content h2 {
      clear: right;
      font-size: 12pt;
    }
    #content h3.boxed {
      background: #9f7ae1;
    }
    #content h3, #content h4 {
      font-size: 11pt;
    }
    a.broken {
      background: orange;
    }
    img.floating {
      float: right;
      margin-left: 2em;
      position: relative;
    }
    dl dt {
      font-weight: bold;
    }
    dl.options {
      margin: 0em 3em;
    }
    dl.options dt {
      font-weight: inherit;
      font-family: monospace;
    }
    dl.classes dt {
      font-weight: normal;
    }
    #content {
      margin: 0 1em;
    }
    #content li {
      margin-top: 0.5em;
    }
    #content ul, #content ol, #content dl {
      margin-bottom: 1em;
    }
    #content ul.minitoc {
      margin-bottom: 0;
    }
    #content ul.minitoc li {
      margin-top: 0;
    }
    #content ul.minitoc li ul {
      margin-top: 0.5em;
      margin-bottom: 0.5em;
    }
    pre.code {
      background: #eee;
      border: 1px solid #ccc;
      padding: 0.5em;
      margin: 1em 3em;
    }
    .codefrag {
      font-family: monospace;
      font-size: inherit;
    }
    .expertise td {
      text-align: center;
    }
    .expertise td.area {
      text-align: left;
    }
    .expertise th.tick {
      width: 6em;
    }
    #content td, #content th {
      padding: 0.25em;
    }
    #minitoc-area ul.minitoc {
      margin: 0;
    }
    strong.cont {
      color: maroon;
    }
    a.class {
      font-family: monospace;
    }
    h4 {
      font-weight: bold;
    }
    .figure {
      display: block;
      text-align: center;
      margin-top: 0.5em;
      margin-bottom: 0.5em;
    }
    #tabs {
      font-size: 80%;
    }
    #publishedStrip {
      font-size: 80%;
      height: 1.5em;
    }
    #top .searchbox {
      font-size: 80%;
    }
    #footer {
      border-top: solid 1px #482980;
    }

    <!-- For status tables: -->
    table.elements, table.tests {
      border-collapse: collapse;
      font-size: 10pt;
      width: auto ! important;
      margin-left: 2em;
      margin-right: 2em;
    }
    table.elements td, table.elements th, table.tests td, table.tests th {
      padding: 4px;
    }
    table.elements .attribute-name, table.elements .attribute-note, table.tests .attribute-name, table.tests .attribute-note, div.object {
      background: #eef;
    }
    div.object {
      margin-left: 2em;
      margin-right: 2em;
    }
    div.object-header, div.object-section-header, div.object-property-header, div.object-property-desc {
      padding: 4px;
    }
    .object-property-func-params {
      font-weight: normal;
      padding-left: 0.5em;
      font-style: italic;
    }
    table.elements .elements-header {
      background: navy;
      color: white;
    }
    table.elements .supported, table.elements .yes, table.elements .partial, table.elements .no,
    table.tests .supported, table.tests .yes, table.tests .partial, table.tests .no {
      text-align: center;
    }
    .yes {
      background: #35b92c;
      color: white;
    }
    .partial {
      background: #e29e1f;
      color: white;
    }
    .no {
      background: #cf1f1f;
      color: white;
    }
    table.elements .section-header th, div.object-section-header {
      padding-left: 2em ! important;
      text-align: left;
      font-style: italic;
      font-weight: normal;
      background: #eef;
    }
    table.elements .section-note td {
      padding-left: 2em ! important;
      text-align: left;
      font-weight: normal;
      background: #eef;
    }
    table.elements .attribute th, table.tests .attribute th, div.object-property-header {
      padding-left: 4em ! important;
      padding-right: 2em ! important;
      text-align: left;
      font-weight: normal;
    }
    div.object-property-header {
      font-weight: bold;
    }
    div.object-property-desc {
      padding-left: 6em;
    }
    table.elements .vertical-bar, table.tests .vertical-bar {
      width: 4px;
    }
    table.elements .element-header, table.tests .test-header {
      border-top: 3px solid white;
    }
    table.elements .element-header th, table.tests .tests-header th, div.object-header {
      background: #ccf;
      padding-right: 2em;
      text-align: left;
      font-weight: bold;
    }
    table.elements .attribute-note, table.elements .test-note {
      padding-left: 1em ! important;
      padding-right: 1em ! important;
    }

    <!-- For license page -->
    .license pre {
      width: 85ex;
    }

    <!-- For demo page -->
    #layout #data {
      border-collapse: collapse;
      width: auto;
    }
    #layout #data td, #layout #data th {
      padding: 4px;
      vertical-align: middle;
      text-align: left ! important;
    }
    #layout {
      text-align: center ! important;
      width: inherit ! important;
      border-collapse: collapse;
      border: none ! important;
      background: none ! important;
    }
    table#data tbody {
      border: 1px solid #9f7ae1 ! important;
    }
    #layout td {
      background: none ! important;
      vertical-align: middle;
    }
    #layout #data td {
      background: #f8f5ff ! important;
    }
    #layout td p {
      text-align: center ! important;
    }
  </extra-css>

  <colors>
  <!-- These values are used for the generated CSS files.
    They essentially "override" the default colors defined in the chosen skin.
    There are four duplicate "groups" of colors below, denoted by comments:
      Color group: Forrest, Krysalis, Collabnet, and Lenya using Pelt.
    They are provided for example only. To customize the colors of any skin,
    uncomment one of these groups of color elements and change the values
    of the particular color elements that you wish to change.
    Note that by default, all color groups are commented-out which means that
    the default colors provided by the skin are being used.
  -->

    <!--color name="navstrip" value="#CFDCED" font="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="heading" value="#a5b6c6"/>
    <color name="subheading" value="#CFDCED"/>
    <color name="body"    value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/>
    <color name="footer" value="#cedfef"/>
    <color name="table" value="#a5b6c6"/>    
    <color name="table-cell" value="#ffffff"/>    
    <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/-->

    <color name="heading"      value="#a5b6c6"/>
    <color name="subheading"   value="#482980"/>
    <color name="body"         value="#ffffff" link="maroon" vlink="#400" hlink="maroon"/>
    <color name="published"    value="#482980" font="#DDCCFF"/>
    <color name="footer"       value="#eae3f9"/>
    <color name="table"        value="#9f7ae1"/>
    <color name="table-cell"   value="#f8f5ff"/>
    <color name="menu"         value="#482980" font="#dfceef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/>
    <color name="tab-selected" value="#482980" link="white" vlink="white" hlink="white"/>
    <color name="tab-unselected" value="#eae3f9" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-selected"   value="#482980" link="#DDCCFF" vlink="#DDCCFF" hlink="#AAAAEE"/>
    <color name="subtab-unselected" value="#482980" link="#DDCCFF" vlink="#DDCCFF" hlink="#AAAAEE"/>
    <color name="navstrip"     value="#482980" font="#ffffff" link="#DDCCFF" vlink="#DDCCFF" hlink="#AAAAEE"/>
    <color name="toolbox"      value="#6f569e" font="#ffcf00"/>
    <color name="dialog"       value="#482980"/>
    <color name="searchbox"    value="#482980" font="#000000"/>
    <color name="breadtrail"   value="#eae3f9" link="#482980" vlink="#482980" hlink="#000066"/>

  <!-- Color group: Forrest: example colors similar to forrest.apache.org
    Some of the element names are obscure, so comments are added to show how
    the "pelt" skin uses them, other skins might use these elements in a different way.
    Tip: temporarily change the value of an element to red (#ff0000) and see the effect.
     pelt: breadtrail: the strip at the top of the page and the second strip under the tabs
     pelt: header: top strip containing project and group logos
     pelt: heading|subheading: section headings within the content
     pelt: navstrip: the strip under the tabs which contains the published date
     pelt: menu: the left-hand navigation panel
     pelt: toolbox: the selected menu item
     pelt: searchbox: the background of the searchbox
     pelt: border: line border around selected menu item
     pelt: body: any remaining parts, e.g. the bottom of the page
     pelt: footer: the second from bottom strip containing credit logos and published date
     pelt: feedback: the optional bottom strip containing feedback link
  -->
<!--
    <color name="breadtrail" value="#cedfef" font="#0F3660" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="header" value="#294563"/>
    <color name="tab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="tab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="subtab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="subtab-unselected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="heading" value="#294563"/>
    <color name="subheading" value="#4a6d8c"/>
    <color name="published" value="#4C6C8F" font="#FFFFFF"/>
    <color name="feedback" value="#4C6C8F" font="#FFFFFF" align="center"/>
    <color name="navstrip" value="#4a6d8c" font="#ffffff" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/>    
    <color name="toolbox" value="#4a6d8c"/>
    <color name="border" value="#294563"/>
    <color name="dialog" value="#4a6d8c"/>
    <color name="searchbox" value="#4a6d8c" font="#000000"/>
    <color name="body" value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/>
    <color name="table" value="#7099C5"/>    
    <color name="table-cell" value="#f0f0ff"/>    
    <color name="highlight" value="#ffff00"/>
    <color name="fixme" value="#cc6600"/>
    <color name="note" value="#006699"/>
    <color name="warning" value="#990000"/>
    <color name="code" value="#CFDCED"/>
    <color name="footer" value="#cedfef"/>
-->

  <!-- Color group: Krysalis -->
<!--
    <color name="header"    value="#FFFFFF"/>

    <color name="tab-selected" value="#a5b6c6" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="tab-unselected" value="#F7F7F7"  link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-selected" value="#a5b6c6"  link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-unselected" value="#a5b6c6"  link="#000000" vlink="#000000" hlink="#000000"/>

    <color name="heading" value="#a5b6c6"/>
    <color name="subheading" value="#CFDCED"/>
        
    <color name="navstrip" value="#CFDCED" font="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="toolbox" value="#a5b6c6"/>
    <color name="border" value="#a5b6c6"/>
        
    <color name="menu" value="#F7F7F7" link="#000000" vlink="#000000" hlink="#000000"/>    
    <color name="dialog" value="#F7F7F7"/>
            
    <color name="body"    value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/>
    
    <color name="table" value="#a5b6c6"/>    
    <color name="table-cell" value="#ffffff"/>    
    <color name="highlight" value="#ffff00"/>
    <color name="fixme" value="#cc6600"/>
    <color name="note" value="#006699"/>
    <color name="warning" value="#990000"/>
    <color name="code" value="#a5b6c6"/>
        
    <color name="footer" value="#a5b6c6"/>
-->

  <!-- Color group: Collabnet --> 
<!--
    <color name="header"    value="#003366"/>

    <color name="tab-selected" value="#dddddd" link="#555555" vlink="#555555" hlink="#555555"/>
    <color name="tab-unselected" value="#999999" link="#ffffff" vlink="#ffffff" hlink="#ffffff"/>
    <color name="subtab-selected" value="#cccccc" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-unselected" value="#cccccc" link="#555555" vlink="#555555" hlink="#555555"/>

    <color name="heading" value="#003366"/>
    <color name="subheading" value="#888888"/>
    
    <color name="navstrip" value="#dddddd" font="#555555"/>
    <color name="toolbox" value="#dddddd" font="#555555"/>
    <color name="border" value="#999999"/>
    
    <color name="menu" value="#ffffff"/>    
    <color name="dialog" value="#eeeeee"/>
            
    <color name="body"      value="#ffffff"/>
    
    <color name="table" value="#ccc"/>    
    <color name="table-cell" value="#ffffff"/>   
    <color name="highlight" value="#ffff00"/>
    <color name="fixme" value="#cc6600"/>
    <color name="note" value="#006699"/>
    <color name="warning" value="#990000"/>
    <color name="code" value="#003366"/>
        
    <color name="footer" value="#ffffff"/>
-->
 <!-- Color group: Lenya using pelt-->
<!--

    <color name="header" value="#ffffff"/>

    <color name="tab-selected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="tab-unselected" value="#F5F4E9" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-selected" value="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="subtab-unselected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/>

    <color name="heading" value="#E5E4D9"/>
    <color name="subheading" value="#000000"/>
    <color name="published" value="#000000"/>
    <color name="navstrip" value="#E5E4D9" font="#000000"/>
    <color name="toolbox" value="#CFDCED" font="#000000"/>
    <color name="border" value="#999999"/>

    <color name="menu" value="#E5E4D9" font="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
    <color name="dialog" value="#CFDCED"/>
    <color name="body" value="#ffffff" />

    <color name="table" value="#ccc"/>
    <color name="table-cell" value="#ffffff"/>
    <color name="highlight" value="#ffff00"/>
    <color name="fixme" value="#cc6600"/>
    <color name="note" value="#006699"/>
    <color name="warning" value="#990000"/>
    <color name="code" value="#003366"/>

    <color name="footer" value="#E5E4D9"/>
-->
  </colors>
 
  <!-- Settings specific to PDF output. -->
  <pdf>
    <!-- 
       Supported page sizes are a0, a1, a2, a3, a4, a5, executive,
       folio, legal, ledger, letter, quarto, tabloid (default letter).
       Supported page orientations are portrait, landscape (default
       portrait).
       Supported text alignments are left, right, justify (default left).
    -->
    <page size="letter" orientation="portrait" text-align="left"/>

    <!-- 
       Pattern of the page numbering in the footer - Default is "Page x".
       first occurrence of '1' digit represents the current page number,
       second occurrence of '1' digit represents the total page number,
       anything else is considered as the static part of the numbering pattern.
       Examples : x is the current page number, y the total page number.
       <page-numbering-format>none</page-numbering-format> Do not displays the page numbering
       <page-numbering-format>1</page-numbering-format> Displays "x"
       <page-numbering-format>p1.</page-numbering-format> Displays "px."
       <page-numbering-format>Page 1/1</page-numbering-format> Displays "Page x/y"
       <page-numbering-format>(1-1)</page-numbering-format> Displays "(x-y)"
    -->
    <page-numbering-format>Page 1</page-numbering-format>

    <!--
       Margins can be specified for top, bottom, inner, and outer
       edges. If double-sided="false", the inner edge is always left
       and the outer is always right. If double-sided="true", the
       inner edge will be left on odd pages, right on even pages,
       the outer edge vice versa.
       Specified below are the default settings.
    -->
    <margins double-sided="false">
      <top>0.5in</top>
      <bottom>0.5in</bottom>
      <inner>1in</inner>
      <outer>0.5in</outer>
    </margins>
<!--
      Print the URL text next to all links going outside the file
    -->
    <show-external-urls>false</show-external-urls>

    <!--
      Disable the copyright footer on each page of the PDF.
      A footer is composed for each page. By default, a "credit" with role=pdf
      will be used, as explained below. Otherwise a copyright statement
      will be generated. This latter can be disabled.
    -->
    <disable-copyright-footer>false</disable-copyright-footer>
  </pdf>
<!-- 
    Credits are typically rendered as a set of small clickable
    images in the page footer.
    
    Use box-location="alt" to move the credits to an alternate location
    (if the skin supports it).

    For example, pelt skin:
    - box-location="alt" will place the logo at the end of the
      left-hand coloured menu panel.
    - box-location="alt2" will place them underneath that panel
      in the left-hand whitespace.
    - Otherwise they are placed next to the compatibility icons
      at the bottom of the screen.

    Comment out the whole <credit>-element if you want no credits in the
    web pages 
  -->
  <credits>
    <credit box-location="alt">
      <name>Built with Apache Forrest</name>
      <url>http://forrest.apache.org/</url>
      <image>images/built-with-forrest-button.png</image>
      <width>88</width>
      <height>31</height>
    </credit>
    <credit box-location="alt2">
      <name>ApacheCon</name>
      <url>http://www.apachecon.com/</url>
      <image>http://www.apache.org/events/current-event-125x125.png</image>
      <width>125</width>
      <height>125</height>
    </credit>

    <!-- A credit with @role="pdf" will be used to compose a footer
     for each page in the PDF, using either "name" or "url" or both.
    -->
    <credit role="pdf">
      <name>PDF created by Apache FOP</name>
      <url>http://xmlgraphics.apache.org/fop/</url>
      <image>images/logo.jpg</image>
      <width>138</width>
      <height>31</height>
    </credit>
  </credits>

</skinconfig>
