forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stev...@apache.org
Subject cvs commit: xml-forrest/tools/targets interactive.xtarget project.xtarget
Date Tue, 26 Feb 2002 23:50:30 GMT
stevenn     02/02/26 15:50:30

  Added:       .        build.bat build.sh build.xml project-info.xml
               legal    LICENSE.ant LICENSE.apache LICENSE.avalon
                        LICENSE.batik LICENSE.izpress
                        LICENSE.jakarta-commons LICENSE.jakarta-regexp
                        LICENSE.jisp LICENSE.jtidy LICENSE.junit
                        LICENSE.krysalis LICENSE.logkit LICENSE.resolver
                        LICENSE.servlet LICENSE.xalan LICENSE.xerces
                        LICENSE.xml-apis
               lib/core placeholder
               lib/optional placeholder
               src/contrib/lib placeholder
               src/contrib/src placeholder
               src/contrib/targets contrib.xtarget
               src/documentation sitemap.xmap
               src/documentation/images add.jpg avalon-compatible.png
                        build-with-with-cocoon.png fix.jpg
                        forrest-draft-logo.png gug1.gif
                        krysalis-compatible.png krysalis-logo-big.png
                        krysalis-logo.png logo.png made-with-cocoon.png
                        remove.jpg update.jpg
               src/documentation/stylesheets book2menu.xsl
                        changes2document.xsl copyover.xsl docbook2body.xsl
                        docbook2fo.xsl document2docbook.xsl
                        faq2document.xsl filterlinks.xsl
                        projectinfo2announcement.xsl projectinfo2todo.xsl
                        projectinfo2txt.xsl site2xhtml.xsl
                        todo2document.xsl
               src/documentation/stylesheets/printer_skin book2menu.xsl
                        copyover.xsl document2html.xsl simple.css
                        site2xhtml.xsl
               src/documentation/xdocs book.xml index.xml license.xml
               src/documentation/xdocs/dtd XMLSchema.dtd
                        book-cocoon-v10.dtd changes-v10.dtd characters.ent
                        datatypes.dtd document-v10.dtd faq-v10.dtd
                        javadoc-v04draft.dtd sitemap-v02.dtd
                        specification-v10.dtd svg-cocoon-v11.dtd svg10.dtd
                        todo-v10.dtd
               src/java Manifest.mf
               src/resources javadoc.css
               src/resources/entities CatalogManager.properties ISOdia.pen
                        ISOgrk1.pen ISOlat1.pen ISOnum.pen ISOpub.pen
                        ISOtech.pen README XMLSchema.dtd
                        book-cocoon-v10.dtd catalog changes-v10.dtd
                        characters.ent datatypes.dtd document-v10.dtd
                        faq-v10.dtd javadoc-v04draft.dtd sitemap-v02.dtd
                        specification-v10.dtd svg-cocoon-v11.dtd svg10.dtd
                        todo-v10.dtd
               src/resources/entities/catalog-demo catalog-demo-v10.dtd
                        override.xml testpub.xml testsys.xml
               src/scratchpad/lib placeholder
               src/scratchpad/src Manifest.mf
               src/scratchpad/targets scratchpad.xtarget
               src/targets interactive.xtarget project.xtarget try.xml
               src/testcases placeholder
               tools/ant/bin ant ant.bat antRun antRun.bat fix-packages.py
                        lcp.bat runant.pl
               tools/ant/lib ant-1.4.1-optional.jar ant-1.4.1.jar
               tools/centipede/lib IzPress.jar VERSIONS jtidy.jar junit.jar
                        xalan.jar xerces.jar xml-apis.jar
               tools/centipede/src/java ClassAvailableTask.java
                        IZPressHtmlCompressTask.java JTidyTask.java
                        UserInputTask.java XmlPropertyTask.java
               tools/centipede/src/resources Release-Checklist.txt
               tools/centipede/src/resources/stylesheets
                        announcement2readme.xsl announcement2txt.xsl
                        bugzilla2patchqueue.xsl changelog.xsl
                        patchqueue2text4dev.xsl patchqueue2xdocs.xsl
               tools/centipede/targets compile.xtarget dev.xtarget
                        docs.xtarget init.xtarget preinit.xtarget
                        robot.xtarget test.xtarget util.xtarget
               tools/cocoon/conf cocoon.xconf
               tools/cocoon/lib avalon-excalibur-4.1.jar
                        avalon-framework-4.1.2.jar
                        avalon-scratchpad-20020212.jar batik-libs-1.1.1.jar
                        cocoon-scratchpad-part.jar cocoon.jar
                        commons-collections-1.0.jar
                        commons-httpclient-20011012.jar
                        jakarta-regexp-1.2.jar jisp_1_0_2.jar
                        logkit-1.0.1.jar resolver-20020130.jar
               tools/targets interactive.xtarget project.xtarget
  Log:
  initial import of centipede v0.2 adapted to forrest
  
  Revision  Changes    Path
  1.1                  xml-forrest/build.bat
  
  Index: build.bat
  ===================================================================
  @echo off
  
  set OLD_ANT_HOME=%ANT_HOME%
  set ANT_HOME=tools\ant
  
  set OLD_CLASSPATH=%CLASSPATH%
  set CLASSPATH=tools\centipede\lib\xml-apis.jar;tools\centipede\lib\xerces.jar;tools\centipede\lib\xalan.jar;tools\centipede\lib\junit.jar;tools\centipede\lib\jIzPress.jar;tools\centipede\lib\jtidy.jar
  
  call %ANT_HOME%\bin\ant -listener org.apache.tools.ant.XmlLogger %1 %2 %3 %4 %5 %6 %7 %8 %9
  
  set ANT_HOME=%OLD_ANT_HOME%
  set CLASSPATH=%OLD_CLASSPATH%
  
  
  
  
  1.1                  xml-forrest/build.sh
  
  Index: build.sh
  ===================================================================
  #!/bin/sh
  
  chmod u+x ./tools/ant/bin/antRun
  chmod u+x ./tools/ant/bin/ant
  
  
  OLD_ANT_HOME=$ANT_HOME
  unset ANT_HOME
  
  CP=$CLASSPATH
  export CP
  unset CLASSPATH
  
  CLASSPATH="./tools/centipede/lib/xml-apis.jar:./tools/centipede/lib/xerces.jar:./tools/centipede/lib/xalan.jar:./tools/centipede/lib/junit.jar:./tools/centipede/lib/jIzPress.jar:./tools/centipede/lib/jtidy.jar"
  export CLASSPATH
  
  $PWD/./tools/ant/bin/ant -listener org.apache.tools.ant.XmlLogger $@ 
  
  unset CLASSPATH
  
  CLASSPATH=$CP
  export CLASSPATH
  ANT_HOME=OLD_ANT_HOME
  export ANT_HOME
  
  
  
  1.1                  xml-forrest/build.xml
  
  Index: build.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE project [
  <!-- ===========================================================================
  
  
                     * ===================================== *
                     |   Krysalis Centipede Build System     |
                     * ===================================== *      
                                       by               
                                               
                     Nicola Ken Barozzi <barozzi@nicolaken.com>
  		   Marc Johnson <mjohnson at apache dot org>       
                       
                     extends the Apache Cocoon Build System 
                         (http://xml.apache.org/cocoon/)
                                       by
                     Stefano Mazzocchi <stefano@apache.org>
                     Carsten Ziegeler <cziegeler@apache.org>
                     
  -->    
  <!-- =================  Main project targets and info =================  -->
  <!ENTITY project-target     SYSTEM "./src/targets/project.xtarget"> 
  <!ENTITY interactive-target SYSTEM "./src/targets/interactive.xtarget"> 
  <!-- =================================================================== -->
  
  <!-- ======================  Scratchpad targets =======================  -->
  <!ENTITY scratchpad-target SYSTEM "./src/scratchpad/targets/scratchpad.xtarget"> 
  <!-- =================================================================== -->
  
  <!-- ========================  Contrib targets ========================  --> 
  <!ENTITY contrib-target SYSTEM "./src/contrib/targets/contrib.xtarget">
  <!-- =================================================================== -->
  
  <!-- ==================  Krysalis Centipede targets ===================  --> 
  <!ENTITY preinit-target SYSTEM "./tools/centipede/targets/preinit.xtarget"> 
  <!ENTITY init-target    SYSTEM "./tools/centipede/targets/init.xtarget"> 
  <!ENTITY compile-target SYSTEM "./tools/centipede/targets/compile.xtarget"> 
  <!ENTITY util-target    SYSTEM "./tools/centipede/targets/util.xtarget"> 
  <!ENTITY dev-target     SYSTEM "./tools/centipede/targets/dev.xtarget"> 
  <!ENTITY test-target    SYSTEM "./tools/centipede/targets/test.xtarget"> 
  <!ENTITY robot-target   SYSTEM "./tools/centipede/targets/robot.xtarget"> 
  <!ENTITY docs-target    SYSTEM "./tools/centipede/targets/docs.xtarget"> 
  <!-- =================================================================== -->
  ]>
  
  <project default="interactive" basedir="." name="krysalis">
  <!--
  
  Installing the build tools
  ==========================
  
  The Krysalis build system is based on Apache Ant, which is a Java building tool
  originally developed for the Tomcat project but now used in many other
  Apache projects and extended by many developers.
  
  Ant is a little but very handy tool that uses a build file written in XML
  (this file) as building instructions. For more information refer to
  "http://jakarta.apache.org/ant/".
  
  To make things easier for you, this distribution contains a precompiled
  version of Ant and the build scripts take care of running it.
  
  The only thing that you have to make sure, is the "JAVA_HOME" environment
  property should be set to match the JVM you want to use.
  
  That's all you have to do to be ready to go.
  
  
  Building instructions
  =====================
  
  First, make sure your current working directory is where this very file 
  is located. Then type
  
    ./build.sh (unix)
    .\build.bat (win32)
  
  if everything is right and all the required packages are visible, this action
  will start the build and prompt you with options.
  Note, that if you do further development, compilation time is reduced since
  Ant is able of detecting which files have changed and to recompile them at need.
  
  Also, you'll note that reusing a single JVM instance for each task, increases
  tremendously the performance of the whole build system, compared to other
  tools (i.e. make or shell scripts) where a new JVM is started for each task.
  
  
  Building on another directory
  =============================
  
  Sometimes you might want to build on an external directory to keep the
  distribution clean: no worries, this is just an environment property away.
  Suppose you want to use the "../build" directory instead, you simply tipe
  
   [unix]  ./build.sh  -Dbuild.root=../build
   [win32] .\build.bat -Dbuild.root=..\build
  
  By using the -Dxxx=yyy argument, you are setting environments in the JVM: Ant
  is designed to give higher priority to system environments to allow you to
  modify _any_ <property> that you can find in the building instructions below,
  so it's just a matter of understanding what property you want to change
  and you don't have to touch this file (which you shouldn't need to do).
  
  
  Build targets
  =============
  
  The build system is not only responsible of compiling the project into a jar 
  file, but is also responsible for creating the HTML documentation, javadocs,
  distributions and web site. In fact, the file you have here is _exactly_ what
  is used by project maintainers to take care of everything in the project,
  no less and no more.
  
  To know more about the available targets take a look at this file, which is
  pretty self-explanatory.
  To see al list of all targets, type
  
   [unix]  ./build.sh  -projecthelp
   [win32] .\build.bat -projecthelp
  
  
  Build Dependencies
  ==================
  Some components are optional and require special jar files to be compiled
  and added to the application. Some of these jars are already included
  in the distribution while others not.
  For each optional package which is not available, a warning can be
  printed. If you don't like these warnings, specify the property "omit.opt.warnings"
  (build -Domit.opt.warnings).
  
  Distribution Version
  ====================
  When preparing a distribution for release, specify the version ID on
  the command line: -Dversion="dev-1.2.1", for example.
  
  Specifying a subset of unit tests to be executed
  ================================================
  Specify the package on the command line:
  -Dtest.specific="org.krysalis.p.testme" will select only the testme
  tests to be run. If you've run any other unit tests in a prior
  session, you'll need to specify the 'clean' target to remove
  extraneous test classes from execution:
  
  ./build.sh clean test -Dtest.specific="org/krysalis/p/testme"
  
  or
  
  .\build.bat clean test -Dtest.specific="org/krysalis/p/testme"
  
  
                                Happy hacking from the Dev Team :)
  
  ============================================================================ -->
  
   
    <!-- =================================================================== -->
    <!-- external reference are relative to to **/*.xtarget;                 -->
    <!-- see entity decalrations at the start of this file                   -->
    <!-- =================================================================== -->  
    <!-- Pre Initialization      -->  &preinit-target;  
    <!-- =================================================================== -->  
    <!-- Project targets         -->  &project-target;    
    <!-- =================================================================== -->
    <!-- Initialization targets  -->  &init-target;  
    <!-- =================================================================== -->
    <!-- Compile targets         -->  &compile-target;  
    <!-- =================================================================== -->  
    <!-- Interactive targets     -->  &interactive-target;  
    <!-- =================================================================== -->
    <!-- Scratchpad targets      -->  &scratchpad-target;
    <!-- =================================================================== -->
    <!-- Contrib targets         -->  &contrib-target;
    <!-- =================================================================== -->
    <!-- Utility  targets        -->  &util-target;  
    <!-- =================================================================== -->
    <!-- Developer targets       -->  &dev-target;  
    <!-- =================================================================== -->
    <!-- Testcases targets       -->  &test-target;
    <!-- =================================================================== -->
    <!-- "Scripts" targets       -->  &robot-target;
    <!-- =================================================================== -->
    <!-- Documentation targets   -->  &docs-target;  
    <!-- =================================================================== -->
    
  </project>
  
  <!-- End of file -->
  
  
  
  1.1                  xml-forrest/project-info.xml
  
  Index: project-info.xml
  ===================================================================
  <?xml version="1.0"?>
  <project name="Apache Forrest">
    <info module="xml-forrest" packages="org.apache.forrest.*" version="0.1" tag="dev" year="2002" web="http://xml.apache.org/forrest/"/>
    <description>
      <short>Forrest wants to provide a good technological infrastructure for open software development for the Apache Software Foundation based on ASF software, ASF practices and experience and modern software design principles.</short>
      <detailed/>
      <where>The home page for the xml-forrest project will be found on the web site (http://xml.apache.org/forrest) "when it's ready". There you also find information on how to download the latest release as well as all the other information you might need regarding this project.</where>
      <requirements>Ant, Cocoon</requirements>
      <howto>The documentation available as of the date of this release is included in the "docs/" directory. The documentation sources are in the "src/documentation" directory. Look for the most updated documentation on the web site.</howto>
      <licence>For legal and licensing issues, please read the LICENSE.* files in the /legal directory.</licence>
    </description>
    <developers>
      <!-- in strict alphabetical order -->
      <person name="David Crossley" email="crossley@apache.org" id="DC"/>
      <person name="Stefano Mazzocchi" email="stefano@apache.org" id="SM"/>
      <person name="John Morrison" email="morrijr@apache.org" id="JM"/>
      <person name="Steven Noels" email="stevenn@apache.org" id="SN"/>
      <person name="Sam Ruby" email="rubys@apache.org" id="RS"/>
    </developers>
    <todo/>
    <credits>
      <credit>This product includes software developed by the Apache Software Foundation (http://www.apache.org/).</credit>
    </credits>
  </project>
  
  
  
  1.1                  xml-forrest/legal/LICENSE.ant
  
  Index: LICENSE.ant
  ===================================================================
  /*
   * ============================================================================
   *                   The Apache Software License, Version 1.1
   * ============================================================================
   * 
   *    Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of  source code must  retain the above copyright  notice,
   *    this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include  the following  acknowledgment:  "This product includes  software
   *    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
   *    Alternately, this  acknowledgment may  appear in the software itself,  if
   *    and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Ant" and  "Apache Software Foundation"  must not be used to
   *    endorse  or promote  products derived  from this  software without  prior
   *    written permission. For written permission, please contact
   *    apache@apache.org.
   * 
   * 5. Products  derived from this software may not  be called "Apache", nor may
   *    "Apache" appear  in their name,  without prior written permission  of the
   *    Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   * APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   * ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   * (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * 
   * This software  consists of voluntary contributions made  by many individuals
   * on behalf of the  Apache Software Foundation.  For more  information  on the 
   * Apache Software Foundation, please see <http://www.apache.org/>.
   *
   */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.apache
  
  Index: LICENSE.apache
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
   
   Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
   
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
   
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
   
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
   
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
   
   4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
      used to  endorse or promote  products derived from  this software without
      prior written permission. For written permission, please contact
      apache@apache.org.
   
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
   
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation and was  originally created by
   Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
   Software Foundation, please see <http://www.apache.org/>.
   
  */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.avalon
  
  Index: LICENSE.avalon
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
   
   Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
   
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
   
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
   
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
   
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
   
   4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
      Framework" and "Apache Software Foundation"  must not be used to endorse
      or promote products derived  from this  software without  prior written
      permission. For written permission, please contact apache@apache.org.
   
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
   
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation and was  originally created by
   Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
   Software Foundation, please see <http://www.apache.org/>.
   
  */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.batik
  
  Index: LICENSE.batik
  ===================================================================
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
   
   Copyright (C) 2000 The Apache Software Foundation. All rights reserved.
   
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
   
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
   
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
   
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
   
   4. The names "Batik" and  "Apache Software Foundation"  must not be  used to
      endorse  or promote  products derived  from this  software without  prior
      written permission. For written permission, please contact
      apache@apache.org.
   
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
   
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   This software  consists of voluntary contributions made  by many individuals
   on  behalf  of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  
  
  1.1                  xml-forrest/legal/LICENSE.izpress
  
  Index: LICENSE.izpress
  ===================================================================
  The "Artistic License"
  Preamble
  The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. 
  
  Definitions
  "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. 
  
  "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder as specified below. 
  
  "Copyright Holder" is whoever is named in the copyright or copyrights for the package. 
  
  "You" is you, if you're thinking about copying or distributing this Package. 
  
  "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) 
  
  "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 
  
  
  You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 
  
  
  You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 
  
  
  You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: 
  
  
  place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. 
  use the modified Package only within your corporation or organization. 
  rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. 
  make other distribution arrangements with the Copyright Holder. 
  
  
  You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: 
  
  
  distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. 
  accompany the distribution with the machine-readable source of the Package with your modifications. 
  give non-standard executables non-standard names, and clearly document the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. 
  make other distribution arrangements with the Copyright Holder. 
  
  
  You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded. 
  
  
  The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package. 
  
  
  C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language. 
  
  
  Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package. 
  
  
  The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 
  
  
  THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
  
  The End 
  
  
  
  1.1                  xml-forrest/legal/LICENSE.jakarta-commons
  
  Index: LICENSE.jakarta-commons
  ===================================================================
  /*
   * ====================================================================
   * 
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Velocity" nor may "Apache" appear in their names without prior 
   *    written permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   */ 
  
  
  
  1.1                  xml-forrest/legal/LICENSE.jakarta-regexp
  
  Index: LICENSE.jakarta-regexp
  ===================================================================
  /*
   * ====================================================================
   * 
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   */ 
  
  
  
  1.1                  xml-forrest/legal/LICENSE.jisp
  
  Index: LICENSE.jisp
  ===================================================================
  ------------------------------------------------------------------------------------------------
  JISP - Java Index Serialization Package
  
  version 1.0.2
  5 August 2001
  ------------------------------------------------------------------------------------------------
  
  COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
  
  If you modify this file, you may insert additional notices immediately following this sentence.
  
  Copyright 2001 Scott Robert Ladd. All rights reserved, except as noted herein.
  
  This computer program source file is supplied "AS IS". Scott Robert Ladd (hereinafter referred to 
  as "Author") disclaims all warranties, expressed or implied, including, without limitation, the 
  warranties of merchantability and of fitness for any purpose. The Author assumes no liability for 
  direct, indirect, incidental, special, exemplary, or consequential damages, which may result from 
  the use of the PNG Reference Library, even if advised of the possibility of such damage.
  
  The Author hereby grants anyone permission to use, copy, modify, and distribute this source code, 
  or portions hereof, for any purpose, without fee, subject to the following restrictions:
  
  1. The origin of this source code must not be misrepresented.
  
  2. Altered versions must be plainly marked as such and must not be misrepresented as being the 
  original source.
  
  3. This Copyright notice may not be removed or altered from any source or altered source 
  distribution.
  
  The Author specifically permits (without fee) and encourages the use of this source code for 
  entertainment, education, or decoration. If you use this source code in a product, acknowledgment 
  is not required but would be appreciated.
  
  The Author's contact information is:
  
  Scott Robert Ladd 
  scott@coyotegulch.com
  http://www.coyotegulch.com
  
  Acknowledgement: 
  This document is based on the wonderful simple license that accompanies libpng.
  
  
  
  1.1                  xml-forrest/legal/LICENSE.jtidy
  
  Index: LICENSE.jtidy
  ===================================================================
    Java HTML Tidy - JTidy
    HTML parser and pretty printer
  
    Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
    Institute of Technology, Institut National de Recherche en
    Informatique et en Automatique, Keio University). All Rights
    Reserved.
  
    Contributing Author(s):
  
       Dave Raggett <dsr@w3.org>
       Andy Quick <ac.quick@sympatico.ca> (translation to Java)
       Gary L Peskin <garyp@firstech.com> (Java development)
       Sami Lempinen <sami@lempinen.net>  (release management)
  
    The contributing author(s) would like to thank all those who
    helped with testing, bug fixes, and patience.  This wouldn't
    have been possible without all of you.
  
    COPYRIGHT NOTICE:
   
    This software and documentation is provided "as is," and
    the copyright holders and contributing author(s) make no
    representations or warranties, express or implied, including
    but not limited to, warranties of merchantability or fitness
    for any particular purpose or that the use of the software or
    documentation will not infringe any third party patents,
    copyrights, trademarks or other rights. 
  
    The copyright holders and contributing author(s) will not be
    liable for any direct, indirect, special or consequential damages
    arising out of any use of the software or documentation, even if
    advised of the possibility of such damage.
  
    Permission is hereby granted to use, copy, modify, and distribute
    this source code, or portions hereof, documentation and executables,
    for any purpose, without fee, subject to the following restrictions:
  
    1. The origin of this source code must not be misrepresented.
    2. Altered versions must be plainly marked as such and must
       not be misrepresented as being the original source.
    3. This Copyright notice may not be removed or altered from any
       source or altered source distribution.
   
    The copyright holders and contributing author(s) specifically
    permit, without fee, and encourage the use of this source code
    as a component for supporting the Hypertext Markup Language in
    commercial products. If you use this source code in a product,
    acknowledgment is not required but would be appreciated.
  
  
  
  1.1                  xml-forrest/legal/LICENSE.junit
  
  Index: LICENSE.junit
  ===================================================================
  
  IBM Public License Version 1.0
  THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM PUBLIC
  LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE
  PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
  1. DEFINITIONS
  
  "Contribution" means:
    a) in the case of International Business Machines Corporation ("IBM"),
    the Original Program, and
    b) in the case of each Contributor,
    i) changes to the Program, and
    ii) additions to the Program;
    where such changes and/or additions to the Program originate from and
    are distributed by that particular Contributor. A Contribution
    'originates' from a Contributor if it was added to the Program by such
    Contributor itself or anyone acting on such Contributor's behalf.
    Contributions do not include additions to the Program which: (i) are
    separate modules of software distributed in conjunction with the Program
    under their own license agreement, and (ii) are not derivative works of
    the Program.
  "Contributor" means IBM and any other entity that distributes the Program.
  
  "Licensed Patents " mean patent claims licensable by a Contributor which
  are necessarily infringed by the use or sale of its Contribution alone or
  when combined with the Program.
  "Original Program" means the original version of the software accompanying
  this Agreement as released by IBM, including source code, object code and
  documentation, if any.
  "Program" means the Original Program and Contributions.
  "Recipient" means anyone who receives the Program under this Agreement,
  including all Contributors.
  2. GRANT OF RIGHTS
    a) Subject to the terms of this Agreement, each Contributor hereby
    grants Recipient a non-exclusive, worldwide, royalty-free copyright
    license to reproduce, prepare derivative works of, publicly display,
    publicly perform, distribute and sublicense the Contribution of such
    Contributor, if any, and such derivative works, in source code and
    object code form.
    b) Subject to the terms of this Agreement, each Contributor hereby
    grants Recipient a non-exclusive, worldwide, royalty-free patent license
    under Licensed Patents to make, use, sell, offer to sell, import and
    otherwise transfer the Contribution of such Contributor, if any, in
    source code and object code form. This patent license shall apply to the
    combination of the Contribution and the Program if, at the time the
    Contribution is added by the Contributor, such addition of the
    Contribution causes such combination to be covered by the Licensed
    Patents. The patent license shall not apply to any other combinations
    which include the Contribution. No hardware per se is licensed
    hereunder.
    c) Recipient understands that although each Contributor grants the
    licenses to its Contributions set forth herein, no assurances are
    provided by any Contributor that the Program does not infringe the
    patent or other intellectual property rights of any other entity. Each
    Contributor disclaims any liability to Recipient for claims brought by
    any other entity based on infringement of intellectual property rights
    or otherwise. As a condition to exercising the rights and licenses
    granted hereunder, each Recipient hereby assumes sole responsibility to
    secure any other intellectual property rights needed, if any. For
    example, if a third party patent license is required to allow Recipient
    to distribute the Program, it is Recipient's responsibility to acquire
    that license before distributing the Program.
    d) Each Contributor represents that to its knowledge it has sufficient
    copyright rights in its Contribution, if any, to grant the copyright
    license set forth in this Agreement.
  3. REQUIREMENTS
  A Contributor may choose to distribute the Program in object code form
  under its own license agreement, provided that:
    a) it complies with the terms and conditions of this Agreement; and
    b) its license agreement:
    i) effectively disclaims on behalf of all Contributors all warranties
    and conditions, express and implied, including warranties or conditions
    of title and non-infringement, and implied warranties or conditions of
    merchantability and fitness for a particular purpose;
    ii) effectively excludes on behalf of all Contributors all liability for
    damages, including direct, indirect, special, incidental and
    consequential damages, such as lost profits;
    iii) states that any provisions which differ from this Agreement are
    offered by that Contributor alone and not by any other party; and
    iv) states that source code for the Program is available from such
    Contributor, and informs licensees how to obtain it in a reasonable
    manner on or through a medium customarily used for software exchange.
  When the Program is made available in source code form:
    a) it must be made available under this Agreement; and
    b) a copy of this Agreement must be included with each copy of the
    Program.
  Each Contributor must include the following in a conspicuous location in
  the Program:
    Copyright {date here}, International Business Machines Corporation and
    others. All Rights Reserved.
  In addition, each Contributor must identify itself as the originator of
  its Contribution, if any, in a manner that reasonably allows subsequent
  Recipients to identify the originator of the Contribution.
  4. COMMERCIAL DISTRIBUTION
  Commercial distributors of software may accept certain responsibilities
  with respect to end users, business partners and the like. While this
  license is intended to facilitate the commercial use of the Program, the
  Contributor who includes the Program in a commercial product offering
  should do so in a manner which does not create potential liability for
  other Contributors. Therefore, if a Contributor includes the Program in a
  commercial product offering, such Contributor ("Commercial Contributor")
  hereby agrees to defend and indemnify every other Contributor
  ("Indemnified Contributor") against any losses, damages and costs
  (collectively "Losses") arising from claims, lawsuits and other legal
  actions brought by a third party against the Indemnified Contributor to
  the extent caused by the acts or omissions of such Commercial Contributor
  in connection with its distribution of the Program in a commercial product
  offering. The obligations in this section do not apply to any claims or
  Losses relating to any actual or alleged intellectual property
  infringement. In order to qualify, an Indemnified Contributor must: a)
  promptly notify the Commercial Contributor in writing of such claim, and
  b) allow the Commercial Contributor to control, and cooperate with the
  Commercial Contributor in, the defense and any related settlement
  negotiations. The Indemnified Contributor may participate in any such
  claim at its own expense.
  For example, a Contributor might include the Program in a commercial
  product offering, Product X. That Contributor is then a Commercial
  Contributor. If that Commercial Contributor then makes performance claims,
  or offers warranties related to Product X, those performance claims and
  warranties are such Commercial Contributor's responsibility alone. Under
  this section, the Commercial Contributor would have to defend claims
  against the other Contributors related to those performance claims and
  warranties, and if a court requires any other Contributor to pay any
  damages as a result, the Commercial Contributor must pay those damages.
  5. NO WARRANTY
  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
  ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
  EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
  CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
  PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
  the appropriateness of using and distributing the Program and assumes all
  risks associated with its exercise of rights under this Agreement,
  including but not limited to the risks and costs of program errors,
  compliance with applicable laws, damage to or loss of data, programs or
  equipment, and unavailability or interruption of operations.
  6. DISCLAIMER OF LIABILITY
  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
  CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
  WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION
  OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  7. GENERAL
  If any provision of this Agreement is invalid or unenforceable under
  applicable law, it shall not affect the validity or enforceability of the
  remainder of the terms of this Agreement, and without further action by
  the parties hereto, such provision shall be reformed to the minimum extent
  necessary to make such provision valid and enforceable.
  If Recipient institutes patent litigation against a Contributor with
  respect to a patent applicable to software (including a cross-claim or
  counterclaim in a lawsuit), then any patent licenses granted by that
  Contributor to such Recipient under this Agreement shall terminate as of
  the date such litigation is filed. In addition, If Recipient institutes
  patent litigation against any entity (including a cross-claim or
  counterclaim in a lawsuit) alleging that the Program itself (excluding
  combinations of the Program with other software or hardware) infringes
  such Recipient's patent(s), then such Recipient's rights granted under
  Section 2(b) shall terminate as of the date such litigation is filed.
  All Recipient's rights under this Agreement shall terminate if it fails to
  comply with any of the material terms or conditions of this Agreement and
  does not cure such failure in a reasonable period of time after becoming
  aware of such noncompliance. If all Recipient's rights under this
  Agreement terminate, Recipient agrees to cease use and distribution of the
  Program as soon as reasonably practicable. However, Recipient's
  obligations under this Agreement and any licenses granted by Recipient
  relating to the Program shall continue and survive.
  IBM may publish new versions (including revisions) of this Agreement from
  time to time. Each new version of the Agreement will be given a
  distinguishing version number. The Program (including Contributions) may
  always be distributed subject to the version of the Agreement under which
  it was received. In addition, after a new version of the Agreement is
  published, Contributor may elect to distribute the Program (including its
  Contributions) under the new version. No one other than IBM has the right
  to modify this Agreement. Except as expressly stated in Sections 2(a) and
  2(b) above, Recipient receives no rights or licenses to the intellectual
  property of any Contributor under this Agreement, whether expressly, by
  implication, estoppel or otherwise. All rights in the Program not
  expressly granted under this Agreement are reserved.
  This Agreement is governed by the laws of the State of New York and the
  intellectual property laws of the United States of America. No party to
  this Agreement will bring a legal action under this Agreement more than
  one year after the cause of action arose. Each party waives its rights to
  a jury trial in any resulting litigation.
  
  
  
  1.1                  xml-forrest/legal/LICENSE.krysalis
  
  Index: LICENSE.krysalis
  ===================================================================
  The Krysalis Patchy Software License, Version 1.1_01
  Copyright (c) 2002 Nicola Ken Barozzi.  All rights reserved.
  
  This Licence is compatible with the BSD licence as described and 
  approved by http://www.opensource.org/, and is based on the
  Apache Software Licence Version 1.1.
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
  
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
  
  3. The end-user documentation included with the redistribution,
     if any, must include the following acknowledgment:
        "This product includes software developed for project 
         Krysalis (http://www.krysalis.org/)."
     Alternately, this acknowledgment may appear in the software itself,
     if and wherever such third-party acknowledgments normally appear.
  
  4. The names "Krysalis" and "Nicola Ken Barozzi" and
     "Krysalis Centipede" must not be used to endorse or promote products
     derived from this software without prior written permission. For
     written permission, please contact krysalis@nicolaken.org.
     
  5. Products derived from this software may not be called "Krysalis",
     "Krysalis Centipede", nor may "Krysalis" appear in their name,
     without prior written permission of Nicola Ken Barozzi.
  
  6. This software may contain voluntary contributions made by many 
     individuals, who decided to donate the code to this project in
     respect of this licence.
  
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL THE KRYSALIS PROJECT OR
  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  ====================================================================
  
  
  
  1.1                  xml-forrest/legal/LICENSE.logkit
  
  Index: LICENSE.logkit
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
   
   Copyright (C) 1999-2001 The Apache Software Foundation. All rights reserved.
   
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
   
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
   
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
   
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
   
   4. The names "LogKit", "Jakarta" and "Apache Software Foundation"  must not 
      be used to endorse or promote products derived from this software without
      prior written permission. For written permission, please contact 
      apache@apache.org.
   
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
   
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation and was  originally created by
   Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
   Software Foundation, please see <http://www.apache.org/>.
   
  */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.resolver
  
  Index: LICENSE.resolver
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2001, International
   * Business Machines Corporation., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  	
  
  
  1.1                  xml-forrest/legal/LICENSE.servlet
  
  Index: LICENSE.servlet
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   *
   * This source code implements specifications defined by the Java
   * Community Process. In order to remain compliant with the specification
   * DO NOT add / change / or delete method signatures!
   */ 
  
  
  
  1.1                  xml-forrest/legal/LICENSE.xalan
  
  Index: LICENSE.xalan
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, Lotus
   * Development Corporation., http://www.lotus.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.xerces
  
  Index: LICENSE.xerces
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  
  
  1.1                  xml-forrest/legal/LICENSE.xml-apis
  
  Index: LICENSE.xml-apis
  ===================================================================
  
  xml-apis is covered by The Apache Software License, Version 1.1
  
  FIXME: Put license text in here once it is available at
         http://cvs.apache.org/viewcvs.cgi/xml-commons/
  
  
  
  1.1                  xml-forrest/lib/core/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/lib/optional/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/src/contrib/lib/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/src/contrib/src/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/src/contrib/targets/contrib.xtarget
  
  Index: contrib.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Interactive contrib builds                                       -->
    <!-- =================================================================== -->
    <target name="contrib" depends="init" description="Interactive Contributors' Build">
      <echo message="--------------------------------------------------------------"/>
      <echo message=" "/>    
      <echo message="          ${fullname} ${version} CONTRIB"/>
      <echo message=" "/>    
      <echo message="--------------------------------------------------------------"/>
      <echo message="Building with ${ant.version}"/>  
      <echo message="using build file ${ant.file}"/>  
      <echo message="--------------------------------------------------------------"/>   
      <echo message=" "/>        
      <echo message=" These are CONTRIB BUILDS. They are not guaranteed to work."/>
      <echo message=" You have been warned. "/>
      <echo message=" "/>
      <echo message=" -"/>
      <echo message=" -"/>
      <echo message=" -"/>
      <echo message=" -"/>
      <echo message=" -"/>
      <echo message=" -"/>
      <echo message=" "/>
  
      <property name="input.selection" value=""/>
      <user-input name="input.selection">Please select a target </user-input>
  
      <ant antfile="src/contrib/targets/${input.selection}.xml"/>
  
    </target>
  
  
  
  1.1                  xml-forrest/src/documentation/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  
  <!-- =========================== Components ================================ -->
  
   <map:components>
    <!-- Components used are declared in the cocoon tool section -->
     
    <map:generators   default="file"/>      <!-- available: file, serverpages -->
    <map:transformers default="xslt"/>      <!-- available: xslt              -->
    <map:readers      default="resource"/>  <!-- available: resource          -->
    <map:serializers  default="html"/>      <!-- available: html, xml, links  -->
    <map:matchers     default="wildcard">
     <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
    </map:matchers>
    
   </map:components>
  
  <!-- =========================== Views =================================== -->
  
   <map:views>
    <map:view name="content" from-label="content">
     <map:serialize type="xml"/>
    </map:view>
  
    <map:view name="links" from-position="last">
     <map:transform src="stylesheets/filterlinks.xsl"/>
     <map:serialize type="links"/>
    </map:view>
  
   </map:views>
  
  <!-- =========================== Pipelines ================================= -->
  
   <map:pipelines>
  
    <!-- Documentation pipeline -->
    <map:pipeline>
     <map:match pattern="">
      <map:redirect-to uri="index.html"/>
     </map:match>
  
     <map:match pattern="**book-**.xml">
       <map:generate src="xdocs/{1}book.xml"/>
         <map:transform src="stylesheets/book2menu.xsl">
           <map:parameter name="use-request-parameters" value="true"/>
           <map:parameter name="resource" value="{2}.html"/>
         </map:transform>
       <map:serialize type="xml"/>
     </map:match>
  
     <map:match pattern="body-todo.xml">
       <map:generate type="file" src="xdocs/todo.xml"/>
       <map:transform src="stylesheets/todo2document.xsl" label="content"/>     
       <map:transform src="stylesheets/document2docbook.xsl"/>
       <map:transform src="stylesheets/docbook2body.xsl"/>
       <map:serialize/>
     </map:match>
  
     <map:match pattern="body-changes.xml">
       <map:generate type="file" src="xdocs/changes.xml"/>
       <map:transform src="stylesheets/changes2document.xsl" label="content"/>
       <map:transform src="stylesheets/document2docbook.xsl"/>
       <map:transform src="stylesheets/docbook2body.xsl"/>
       <map:serialize/>
     </map:match>
  
     <map:match pattern="body-faq.xml">
       <map:generate type="file" src="xdocs/faq.xml"/>
       <map:transform src="stylesheets/faq2document.xsl" label="content"/>
       <map:transform src="stylesheets/document2docbook.xsl"/>
       <map:transform src="stylesheets/docbook2body.xsl"/>
       <map:serialize/>
     </map:match>
  
     <map:match pattern="body-**.xml">
       <map:generate src="xdocs/{1}.xml"/>
       <map:transform src="stylesheets/document2docbook.xsl"/>
       <map:transform src="stylesheets/docbook2body.xsl"/>
       <map:serialize/>
     </map:match>
  
     <map:match pattern="*.xml">
      <map:aggregate element="site">
       <map:part src="cocoon:/book-{1}.xml"/>
       <map:part src="cocoon:/body-{1}.xml" label="content"/>
      </map:aggregate>
      <map:transform src="stylesheets/site2xhtml.xsl">
         <map:parameter name="use-request-parameters" value="true"/>
         <map:parameter name="header" value="graphics/{1}-header.jpg"/>
       </map:transform>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="*.html">
      <map:aggregate element="site">
       <map:part src="cocoon:/book-{1}.xml"/>
       <map:part src="cocoon:/body-{1}.xml" label="content"/>
      </map:aggregate>
      <map:transform src="stylesheets/site2xhtml.xsl">
         <map:parameter name="use-request-parameters" value="true"/>
         <map:parameter name="header" value="graphics/{1}-header.jpg"/>
       </map:transform>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="**/*.html">
      <map:aggregate element="site">
       <map:part src="cocoon:/{1}/book-{1}/{2}.xml"/>
       <map:part src="cocoon:/body-{1}/{2}.xml" label="content"/>
      </map:aggregate>
      <map:transform src="stylesheets/site2xhtml.xsl">
         <map:parameter name="use-request-parameters" value="true"/>
         <map:parameter name="header" value="graphics/{2}-header.jpg"/>
       </map:transform>
      <map:serialize/>
     </map:match>
  
     <!-- ================  Static  =========================== -->
  
     <map:match pattern="**.txt">
      <map:read src="xdocs/{1}.txt" mime-type="text/plain"/>
     </map:match>
  
     <map:match pattern="**resources/**.js">
       <map:read src="stylesheets/{2}.js" mime-type="application/javascript"/>
     </map:match>
  
     <map:match pattern="**.css">
      <map:read src="{1}.css" mime-type="text/css"/>
     </map:match>
  
     <map:match pattern="**images/*.png">
      <map:read src="images/{2}.png" mime-type="image/png"/>
     </map:match>
  
     <map:match pattern="**images/*.jpg">
      <map:read src="images/{2}.jpg" mime-type="image/jpeg"/>
     </map:match>
  
     <map:match pattern="**images/*.gif">
      <map:read src="images/{2}.gif" mime-type="image/gif"/>
     </map:match>
  
    </map:pipeline>
   </map:pipelines>
  
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/documentation/images/add.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/avalon-compatible.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/build-with-with-cocoon.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/fix.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/forrest-draft-logo.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/gug1.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/krysalis-compatible.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/krysalis-logo-big.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/krysalis-logo.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/logo.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/made-with-cocoon.png
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/remove.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/images/update.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/book2menu.xsl
  
  Index: book2menu.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="1.0">
  
    <xsl:template match="book">
      <menu>
        <xsl:apply-templates/>
      </menu>
    </xsl:template>
  
    <xsl:template match="project">
      <br/><a href="{@href}"><font color="#F3510C" size="+1"><xsl:value-of select="@label"/></font></a><br/>
    </xsl:template>
  
    <xsl:template match="menu">
      <hr/>
      <span class="s1"><xsl:value-of select="@label"/></span><br/>
          <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="menu-item">
      <xsl:if test="not(@type) or @type!='hidden'">
        <a href="{@href}" class="s1"><xsl:value-of select="@label"/></a><br/>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="node()|@*" priority="-1"/>
  </xsl:stylesheet>
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/changes2document.xsl
  
  Index: changes2document.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
   <xsl:import href="copyover.xsl"/>
  
   <xsl:param name="name"/>
  
   <xsl:variable name="bugzilla">http://nagoya.apache.org/bugzilla/show_bug.cgi?id=</xsl:variable>
  
   <xsl:template match="changes">
    <document>
     <header>
      <title><xsl:value-of select="@title"/></title>
     </header>
     <body>
      <xsl:apply-templates/>
     </body>
    </document>
   </xsl:template>
  
   <xsl:template match="release">
    <s2 title="{$name} {@version} ({@date})">
     <sl>
      <xsl:apply-templates/>
     </sl>
    </s2>
   </xsl:template>
  
   <xsl:template match="action">
    <li>
     <icon src="images/{@type}.jpg" alt="{@type}"/>
     <xsl:apply-templates/>
     <xsl:text>(</xsl:text><xsl:value-of select="@dev"/><xsl:text>)</xsl:text>
  
     <xsl:if test="@due-to">
      <xsl:text> Thanks to </xsl:text>
      <link href="mailto:{@due-to-email}"><xsl:value-of select="@due-to"/></link>
      <xsl:text>.</xsl:text>
     </xsl:if>
  
     <xsl:if test="@fixes-bug">
      <xsl:text> Fixes </xsl:text>
      <link href="{$bugzilla}{@fixes-bug}">
       <xsl:text>bug </xsl:text><xsl:value-of select="@fixes-bug"/>
      </link>
      <xsl:text>.</xsl:text>
     </xsl:if>
    </li>
   </xsl:template>
  
   <xsl:template match="devs">
    <!-- remove -->
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/copyover.xsl
  
  Index: copyover.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
    <xsl:template match="@*|*|text()|processing-instruction()">
      <xsl:copy>
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
      </xsl:copy>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/docbook2body.xsl
  
  Index: docbook2body.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="1.0">
  
    <xsl:template match="book">
      <body>
        <title><xsl:value-of select="title"/></title>
              <table class="centered" align="center" width="100%">
                <tbody>
                  <tr>
                    <td align="center">
                      <table class="title" cellspacing="0" cellpadding="1" border="0">
                        <tbody>
                          <tr>
                            <td bgcolor="#525d76">
                              <table class="centered" cellspacing="0" cellpadding="2" border="0" width="100%">
                                <tbody>
                                  <tr>
                                    <td bgcolor="#f3dd61">
                                      <span class="title"><xsl:value-of select="title"/><xsl:if test="subtitle"><xsl:text>: </xsl:text><xsl:value-of select="subtitle"/></xsl:if></span>
                                    </td>
                                  </tr>
                                </tbody>
                              </table>
                            </td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                </tbody>
              </table>
        <xsl:apply-templates select="dedication"/>
        <xsl:apply-templates select="bookinfo"/>
      </body>
    </xsl:template>
  
    <xsl:template match="chapter|article|appendix">
      <body>
      <xsl:if test="normalize-space(title)!=''">
        <title><xsl:value-of select="title"/></title>
              <table class="centered" align="center" width="100%">
                <tbody>
                  <tr>
                    <td align="center">
                      <table class="title" cellspacing="0" cellpadding="1" border="0">
                        <tbody>
                          <tr>
                            <td bgcolor="#525d76">
                              <table class="centered" cellspacing="0" cellpadding="2" border="0" width="100%">
                                <tbody>
                                  <tr>
                                    <td bgcolor="#f3dd61">
                                      <span class="title"><xsl:value-of select="title"/></span>
                                    </td>
                                  </tr>
                                </tbody>
                              </table>
                            </td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                </tbody>
              </table>
        </xsl:if>
        
        <xsl:if test="subtitle">
          <font color="#525D76"><i><xsl:value-of select="subtitle"/></i></font><br/>
        </xsl:if>
  
        <font color="#000000" size="-2">
          <p>
            <xsl:for-each select="//authorgroup/author">
              <xsl:choose>
                <xsl:when test="position()=1">by</xsl:when>
                <xsl:otherwise>, </xsl:otherwise>
              </xsl:choose>
            </xsl:for-each>
            <a href="mailto:{address/email}">
              <xsl:if test="honorific"><xsl:value-of select="honorific"/>. </xsl:if>
              <xsl:if test="firstname"><xsl:value-of select="firstname"/> </xsl:if>
              <xsl:value-of select="surname"/>
            </a>
          </p>
        </font>
  
        
          <xsl:apply-templates select="para"/>
  
  
        <xsl:apply-templates select="section">
          <xsl:with-param name="level" select="1"/>
        </xsl:apply-templates>
  
        <xsl:apply-templates select="//footnote" mode="base"/>
      </body>
    </xsl:template>
  
    <xsl:template match="title|subtitle"/>
  
    <xsl:template match="author">
      <body>
        <title>
          <xsl:value-of select="honorific"/><xsl:text>. </xsl:text>
          <xsl:value-of select="firstname"/><xsl:text> </xsl:text>
          <xsl:value-of select="surname"/>
        </title>
        <center>
          <table width="80%">
            <tr>
              <td bgcolor="#F3DD61">
                <br/><center><b><xsl:text>Author: </xsl:text><xsl:value-of select="honorific"/><xsl:text>. </xsl:text><xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="surname"/></b></center>
                <br/>
              </td>
            </tr>
          </table>
        </center><br/>
        <div align="right">
          <table border="0" cellpadding="2" cellspacing="0" width="100%">
            <tr>
              <td bgcolor="#525D76">
                <font color="#ffffff" size="+1"><b>Affiliations</b></font>
              </td>
            </tr>
            <tr>
              <td>
                <br/>
                  <ul>
                    <xsl:apply-templates select="affiliation"/>
                  </ul>
              
              </td>
            </tr>
          </table>
        </div><br/>
        <xsl:apply-templates select="authorblurb"/>
      </body>
    </xsl:template>
  
    <xsl:template match="affiliation">
      <li>
        <xsl:text>[</xsl:text><xsl:value-of select="shortaffil"/><xsl:text>] </xsl:text>
        <b><xsl:value-of select="jobtitle"/></b>
        <i><xsl:value-of select="orgname"/><xsl:if test="orgdiv"><xsl:text>/</xsl:text><xsl:value-of select="orgdiv"/></xsl:if></i>
      </li>
    </xsl:template>
  
    <xsl:template match="authorblurb">
      <div align="right">
        <table border="0" cellpadding="2" cellspacing="0" width="100%">
          <tr>
            <td bgcolor="#525D76">
              <font color="#ffffff" size="+1"><b>Bio</b></font>
            </td>
          </tr>
          <tr>
            <td>
              <br/>
                <ul>
                  <xsl:apply-templates/>
                </ul>
              
            </td>
          </tr>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="honorific|firstname|surname|orgdiv|orgname|shortaffil|jobtitle"/>
  
    <xsl:template match="revhistory">
      <body>
        <title>Revision History</title>
        <center>
          <table width="80%">
            <tr>
              <td bgcolor="#F3DD61">
                <br/><center><b>Revision History</b></center>
                <br/>
              </td>
            </tr>
          </table>
        </center><br/>
        <div align="right">
          <table border="0" cellpadding="2" cellspacing="0" width="100%">
            <xsl:variable name="unique-revisions" 
              select="revision[not(revnumber=preceding-sibling::revision/revnumber)]/revnumber"/>
            <xsl:variable name="base" select="."/>
            <xsl:for-each select="$unique-revisions">
            <tr>
              <td bgcolor="#525D76">
                <font color="#ffffff">
                  <b>Revision <xsl:value-of select="."/> 
                     (<xsl:value-of select="$base/revision[revnumber=current()]/date"/>)
                  </b>
                </font>
              </td>
            </tr>
            <tr>
              <td>
                <br/>
                  <ul>
                    <xsl:apply-templates select="$base/revision[revnumber=current()]"/>
                  </ul>
                
              </td>
            </tr>
            </xsl:for-each>
          </table>
        </div>
      </body>
    </xsl:template>
  
    <xsl:template match="para">
      <p align="justify"><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="emphasis"><em><xsl:apply-templates/></em></xsl:template>
  
    <xsl:template match="revision">
      <li>
        <xsl:choose>
          <xsl:when test="@revisionflag='added'">
            <img align="absmiddle" alt="added" border="0" src="images/add.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='changed'">
            <img align="absmiddle" alt="changed" border="0" src="images/update.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='deleted'">
            <img align="absmiddle" alt="deleted" border="0" src="images/remove.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='off'">
            <img align="absmiddle" alt="off" border="0" src="images/fix.jpg"/>
          </xsl:when>
          <xsl:otherwise>
            <img align="absmiddle" alt="changed" border="0" src="images/update.jpg"/>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:value-of select="revremark"/>
        <xsl:text> (</xsl:text><xsl:value-of select="authorinitials"/><xsl:text>)</xsl:text>
      </li>
    </xsl:template>
  
    <xsl:template match="revnumber|revremark|authorinitials|date"/>
  
    <xsl:template match="section">
      <xsl:param name="level"/>
  
      <div align="right">
        <table border="0" cellpadding="2" cellspacing="0">
          <xsl:attribute name="width"><xsl:value-of select="number(100)-(1*(number($level)-1))"/>%</xsl:attribute>
          <tr>
            <td bgcolor="#525D76">
              <font color="#ffffff">
                <xsl:attribute name="size">
                  <xsl:choose>
                    <xsl:when test="number($level)=1">+1</xsl:when>
                    <xsl:when test="number($level)=2">+0</xsl:when>
                    <xsl:otherwise>-<xsl:value-of select="number($level)-2"/></xsl:otherwise>
                  </xsl:choose>
                </xsl:attribute>
                <font face="Arial,sans-serif"><b><xsl:value-of select="title"/></b></font>
              </font>
            </td>
          </tr>
          <tr>
            <td>
                <br/>
                <xsl:apply-templates>
                  <xsl:with-param name="level" select="number($level)+1"/>
                </xsl:apply-templates>
            </td>
          </tr>
        </table>
      </div><br/>
    </xsl:template>
  
    <xsl:template match="bookinfo">
      <div align="right">
        <table border="0" cellpadding="2" cellspacing="0" width="100%">
          <tr>
            <td bgcolor="#525D76">
              <font color="#ffffff" size="+1">
                <b><xsl:value-of select="edition"/></b><xsl:text> </xsl:text>
                <i><font size="0">pub. <xsl:value-of select="pubdate"/></font></i>
              </font>
            </td>
          </tr>
          <tr>
            <td>
                <br/>
                <xsl:apply-templates/>
            </td>
          </tr>
        </table>
      </div><br/>
    </xsl:template>
  
    <xsl:template match="dedication">
      <div align="right">
        <table border="0" cellpadding="2" cellspacing="0" width="100%">
          <tr>
            <td bgcolor="#525D76">
              <font color="#ffffff" size="+1">
                <b>Dedication</b>
              </font>
            </td>
          </tr>
          <tr>
            <td>
                <br/>
                <xsl:apply-templates/>
            </td>
          </tr>
        </table>
      </div><br/>
    </xsl:template>
  
    <xsl:template match="edition|pubdate|year|holder"/>
  
    <xsl:template match="copyright">
      <p>Copyright &#x00A9;<xsl:value-of select="year"/> by <xsl:value-of select="holder"/>.<br/>
        <i>All rights reserved.</i>
      </p>
    </xsl:template>
  
    <xsl:template match="legalnotice">
      <div align="center">
        <table border="1" cellpadding="2" cellspacing="2">
          <tr>
            <td><xsl:apply-templates/></td>
          </tr>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="programlisting">
      <div align="center">
        <table border="1" cellpadding="2" cellspacing="2">
          <tr>
            <td>
              <pre>
                <xsl:apply-templates/>
              </pre>
            </td>
          </tr>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="orderedlist"><ol><xsl:apply-templates/></ol></xsl:template>
  
    <xsl:template match="listitem"><li><xsl:apply-templates/></li></xsl:template>
  
    <xsl:template match="itemizedlist"><ul><xsl:apply-templates/></ul></xsl:template>
  
    <xsl:template match="classname|function|parameter"><code><xsl:apply-templates/><xsl:if test="name(.)='function'"><xsl:text>()</xsl:text></xsl:if></code></xsl:template>
  
    <xsl:template match="blockquote">
      <div align="center">
        <table border="1" cellpadding="2" cellspacing="2">
          <xsl:if test="title">
            <tr>
              <td bgcolor="#525D76">
                <font color="#ffffff"><xsl:value-of select="title"/></font>
              </td>
            </tr>
          </xsl:if>
          <tr>
            <td bgcolor="#c0c0c0">
              <font color="#023264" size="-1"><xsl:apply-templates/></font>
            </td>
          </tr>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="warning">
      <div align="center">
        <table border="1" cellpadding="2" cellspacing="2">
          <xsl:if test="title">
            <tr>
              <td bgcolor="#800000">
                <font color="#ffffff"><xsl:value-of select="title"/></font>
              </td>
            </tr>
          </xsl:if>
          <tr>
            <td bgcolor="#c0c0c0">
              <font color="#023264" size="-1"><xsl:apply-templates/></font>
            </td>
          </tr>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="ulink"><a href="{@uri}"><xsl:apply-templates/></a></xsl:template>
  
    <xsl:template match="footnote"><sup><a href="#{generate-id(.)}"><xsl:value-of select="generate-id(.)"/></a></sup></xsl:template>
  
    <xsl:template match="footnote" mode="base">
      <div align="left">
        <a name="{generate-id(.)}"/><font size="-2"><xsl:value-of select="generate-id(.)"/><xsl:text>) </xsl:text><i><xsl:value-of select="."/></i></font>
      </div>
    </xsl:template>
  
    <xsl:template match="figure">
      <div align="center">
        <table border="0" cellpadding="2" cellspacing="2">
          <tr>
            <td bgcolor="#525D76"><font color="#ffffff" size="0"><xsl:value-of select="title"/></font></td>
          </tr>
          <xsl:apply-templates/>
        </table>
      </div>
    </xsl:template>
  
    <xsl:template match="graphic">
      <tr>
        <td><img border="0" alt="{@srccredit}" src="{@fileref}"/></td>
      </tr>
      <xsl:if test="@srccredit">
        <tr>
          <td><font size="-1"><ul><li><xsl:value-of select="@srccredit"/></li></ul></font></td>
        </tr>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="table">
      <table border="0" cellpadding="2" cellspacing="2" width="100%">
        <xsl:apply-templates/>
      </table>
    </xsl:template>
  
    <xsl:template match="tgroup">
      <xsl:apply-templates select="thead|tbody|tfoot"/>
    </xsl:template>
  
    <xsl:template match="thead">
      <xsl:apply-templates select="row" mode="head"/>
    </xsl:template>
  
    <xsl:template match="row" mode="head">
      <th><xsl:apply-templates/></th>
    </xsl:template>
  
    <xsl:template match="row">
      <tr><xsl:apply-templates/></tr>
    </xsl:template>
  
    <xsl:template match="tbody|tfoot">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="entry">
      <td align="left" bgcolor="#a0ddf0" valign="top">
        <font color="#000000" size="-1"><xsl:apply-templates/></font>
      </td>
    </xsl:template>
  
    <xsl:template match="trademark"><xsl:apply-templates/><sup>TM</sup></xsl:template>
  
    <xsl:template match="node()|@*" priority="-1">
      <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/docbook2fo.xsl
  
  Index: docbook2fo.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  xmlns:fo="http://www.w3.org/1999/XSL/Format"
                  version="1.0">
  
    <xsl:template match="book">
      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
     
      <fo:layout-master-set>
          <fo:simple-page-master master-name="title"
                                 page-height="11in"
                                 page-width="8.5in"
                                 margin-top="1in"
                                 margin-bottom="1in"
                                 margin-left="1.25in"
                                 margin-right="1.5in">
            <fo:region-before extent=".5in" region-name="title-header"/>
            <fo:region-body margin-top="1in" margin-bottom="1in"/>
            <fo:region-after extent=".5in" region-name="title-footer"/>
          </fo:simple-page-master>
  
          <fo:simple-page-master master-name="inside"
                                 page-height="11in"
                                 page-width="8.5in"
                                 margin-top="1in"
                                 margin-bottom="1in"
                                 margin-left="1.5in"
                                 margin-right="1.25in">
            <fo:region-before extent=".5in" region-name="inside-header"/>
            <fo:region-body margin-top="1in" margin-bottom="1in"/>
            <fo:region-after extent=".5in" region-name="inside-footer"/>
          </fo:simple-page-master>
  
          <fo:simple-page-master master-name="even-page"
                                 page-height="11in" 
                                 page-width="8.5in"
                                 margin-top="1in" 
                                 margin-bottom="1in" 
                                 margin-left="1.25in" 
                                 margin-right="1in">
            <fo:region-before extent=".5in" region-name="even-header"/>
            <fo:region-body margin-top=".5in" margin-bottom=".5in"/>
            <fo:region-after extent=".5in" region-name="even-footer"/>
          </fo:simple-page-master>
  
          <fo:simple-page-master master-name="odd-page"
                                 page-height="11in"
                                 page-width="8.5in"
                                 margin-top="1in"
                                 margin-bottom="1in"
                                 margin-left="1in"
                                 margin-right="1.25in">
            <fo:region-before extent=".5in" region-name="odd-header"/>
            <fo:region-body margin-top=".5in" margin-bottom=".5in"/>
            <fo:region-after extent=".5in" region-name="odd-footer"/>
          </fo:simple-page-master>
  
          <fo:page-sequence-master master-name="chapter">
            <fo:repeatable-page-master-alternatives>
              <fo:conditional-page-master-reference master-name="title"
                                                    page-position="first"
                                                    odd-or-even="odd"/>
              <fo:conditional-page-master-reference master-name="odd-page"
                                                    odd-or-even="odd"
                                                    blank-or-not-blank="not-blank"/>
              <fo:conditional-page-master-reference master-name="even-page"
                                                    page-position="last"/>
              <fo:conditional-page-master-reference master-name="even-page"
                                                    odd-or-even="even"/>
            </fo:repeatable-page-master-alternatives>
          </fo:page-sequence-master>
        </fo:layout-master-set>
  
        <fo:page-sequence master-name="title">
          <xsl:if test="bookinfo/authorgroup">
            <fo:static-content flow-name="title-footer">
              <fo:block font-family="serif"
                        font-size="16pt"
                        font-style="italic"
                        text-align="end">
                <xsl:for-each select="bookinfo/authorgroup/author">
                  <xsl:value-of select="firstname"/>
                  <xsl:text> </xsl:text>
                  <xsl:value-of select="surname"/>
                </xsl:for-each>
              </fo:block>
            </fo:static-content>
          </xsl:if>
          <fo:flow flow-name="xsl-region-body">
            <fo:block font-family="serif"
                      font-size="48pt"
                      font-weight="bold">
              <xsl:value-of select="title"/>
            </fo:block>
            <xsl:if test="subtitle">
              <fo:block font-family="serif"
                        font-size="24pt"
                        border-top-style="solid"
                        border-top-width=".5pt"
                        space-before="12pt"
                        text-align="end">
                <xsl:value-of select="subtitle"/>
              </fo:block>
            </xsl:if>
          </fo:flow>
        </fo:page-sequence>
        <xsl:apply-templates/>
        <xsl:call-template name="authors"/>
      </fo:root>
    </xsl:template>
  
    <xsl:template match="chapter|article|appendix">
      <fo:page-sequence force-page-count="end-on-even" master-name="chapter">
        <fo:title><xsl:value-of select="title"/></fo:title>
        <fo:static-content flow-name="even-header">
          <fo:block text-align="start"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            <xsl:value-of select="/book/title"/>
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="even-footer">
          <fo:block text-align="start"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-header">
          <fo:block text-align="end"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            <xsl:value-of select="title"/>
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="title-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
          <fo:block space-before="2in" font-family="serif" font-size="24pt" font-weight="bold">
            <xsl:value-of select="title"/>
          </fo:block>
          <xsl:if test="subtitle">
            <fo:block font-style="italic"
                      font-family="serif"
                      font-size="18pt"
                      space-after="10pt">
              <xsl:value-of select="subtitle"/>
            </fo:block>
          </xsl:if>
          <xsl:apply-templates/>
          <xsl:apply-templates select="/bookinfo/authorgroup"/>
        </fo:flow>
      </fo:page-sequence>
    </xsl:template>
  
    <xsl:template match="title|subtitle"/>
    <xsl:template match="honorific|firstname|surname|orgdiv|orgname|shortaffil|jobtitle"/>
  
    <xsl:template match="bookinfo/revhistory">
      <fo:block font-family="serif" font-size="10pt" font-weight="bold" space-before="10pt">
        Revision History:
      </fo:block>
      <xsl:variable name="unique-revisions" 
                    select="revision[not(revnumber=preceding-sibling::revision/revnumber)]/revnumber"/>
      <xsl:variable name="base" select="."/>
      <xsl:for-each select="$unique-revisions">
        <fo:block font-family="serif"
                  font-size="8pt">
          <xsl:value-of select="$base/revision[revnumber=current()]/date"/>: Revision <xsl:value-of select="."/>
        </fo:block>
      </xsl:for-each>
    </xsl:template>
  
    <xsl:template match="book/revhistory">
      <fo:page-sequence force-page-count="end-on-even" master-name="chapter">
        <fo:title>Revision History</fo:title>
        <fo:static-content flow-name="even-header">
          <fo:block text-align="start"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            <xsl:value-of select="/book/title"/>
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="even-footer">
          <fo:block text-align="start"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-header">
          <fo:block text-align="end"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            <xsl:value-of select="title"/>
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="title-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
          <fo:block space-before="2in" font-family="serif" font-size="24pt" font-weight="bold" space-after="10pt">
            Revision History
          </fo:block>
          <xsl:variable name="unique-revisions" 
                        select="revision[not(revnumber=preceding-sibling::revision/revnumber)]/revnumber"/>
          <xsl:variable name="base" select="."/>
          <xsl:for-each select="$unique-revisions">
            <fo:block font-weight="bold"
                      font-family="serif"
                      font-size="14pt"
                      space-before="10pt">
              Revision <xsl:value-of select="."/>
              (<xsl:value-of select="$base/revision[revnumber=current()]/date"/>)
            </fo:block>
            <fo:list-block provisional-distance-between-starts="9mm"
                     provisional-label-separation="3mm">
              <xsl:apply-templates select="$base/revision[revnumber=current()]"/>
            </fo:list-block>
          </xsl:for-each>
        </fo:flow>
      </fo:page-sequence>
    </xsl:template>
  
    <xsl:template match="para">
      <fo:block space-after="8pt"
                font-family="serif"><xsl:apply-templates/></fo:block>
    </xsl:template>
  
    <xsl:template match="emphasis">
      <fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>
    </xsl:template>
  
    <xsl:template match="revision">
      <fo:list-item>
        <fo:list-item-label start-indent="3mm" end-indent="label-end()">
          <fo:block>&#x2022;</fo:block>
        </fo:list-item-label>
        <fo:list-item-body start-indent="body-start()">
          <fo:block>
            <xsl:apply-templates/>
            <fo:inline font-variant="small-caps">
              <xsl:value-of select="@revisionflag"/><xsl:text>&#x2014;</xsl:text>
            </fo:inline>
            <xsl:value-of select="revremark"/>
            <xsl:text> (</xsl:text><xsl:value-of select="authorinitials"/><xsl:text>)</xsl:text>
          </fo:block>
        </fo:list-item-body>
      </fo:list-item>
    </xsl:template>
  
    <xsl:template match="revnumber|revremark|authorinitials|date"/>
  
    <xsl:template match="section">
      <xsl:param name="level">0</xsl:param>
      <xsl:variable name="size" select="16-(number($level)*2)"/>
  
      <fo:block font-family="serif"
                font-size="{$size}pt"
                font-weight="bold"
                space-before="12pt">
        <xsl:value-of select="title"/>
      </fo:block>
      <xsl:apply-templates>
        <xsl:with-param name="level" select="number($level)+1"/>
      </xsl:apply-templates>
    </xsl:template>
  
    <xsl:template match="bookinfo">
      <fo:page-sequence master-name="inside">
        <fo:flow flow-name="xsl-region-body">
          <fo:block font-weight="bold" font-size="14pt">
            <xsl:value-of select="title"/>
          </fo:block>
          <xsl:if test="subtitle">
            <fo:block font-weight="bold" font-size="10pt">
              <xsl:value-of select="subtitle"/>
            </fo:block>
          </xsl:if>
          <xsl:if test="authorgroup">
            <fo:block font-size="10pt">
              <xsl:text>by </xsl:text>
              <xsl:for-each select="authorgroup/author">
                <xsl:if test="not(position()=1)">
                  <xsl:text>, </xsl:text>
                </xsl:if>
                <xsl:if test="honorific">
                  <xsl:value-of select="honorific"/><xsl:text>. </xsl:text>
                </xsl:if>
                <xsl:value-of select="firstname"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="surname"/>
              </xsl:for-each>
            </fo:block>
          </xsl:if>
          <xsl:apply-templates select="copyright"/>
          <fo:block space-before="10pt" font-size="10pt">
            <xsl:value-of select="edition"/><xsl:text> published </xsl:text>
            <xsl:value-of select="pubdate"/>
          </fo:block>
          <xsl:apply-templates select="revhistory"/>
          <xsl:apply-templates select="legalnotice"/>
        </fo:flow>
      </fo:page-sequence>
    </xsl:template>
  
  
    <xsl:template name="authors">
      <fo:page-sequence force-page-count="end-on-even" master-name="chapter">
        <fo:title>About the Authors</fo:title>
        <fo:static-content flow-name="even-header">
          <fo:block text-align="start"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            <xsl:value-of select="/book/title"/>
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="even-footer">
          <fo:block text-align="start"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-header">
          <fo:block text-align="end"
                    line-height="12pt"
                    font-style="italic"
                    font-family="serif"
                    font-size="10pt"
                    border-after-style="solid"
                    border-after-width=".5pt">
            About the Authors
          </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="odd-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:static-content flow-name="title-footer">
          <fo:block text-align="end"
                    line-height="12pt"
                    border-before-style="solid"
                    border-before-width=".5pt"
                    font-family="serif"
                    font-size="10pt"><fo:page-number/></fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
          <fo:block space-before="2in" font-family="serif" font-size="24pt" font-weight="bold" space-after="10pt">
            About the Authors
          </fo:block>
          <xsl:apply-templates select="/book/bookinfo/authorgroup/author"/>
        </fo:flow>
      </fo:page-sequence>
    </xsl:template>
  
    <xsl:template match="author">
      <fo:block font-family="serif"
                font-size="16pt"
                font-weight="bold"
                space-before="12pt">
        <xsl:value-of select="honorific"/><xsl:text>. </xsl:text>
        <xsl:value-of select="firstname"/><xsl:text> </xsl:text>
        <xsl:value-of select="surname"/>
      </fo:block>
      <fo:block font-family="serif"
                font-size="14pt"
                font-weight="bold"
                space-before="12pt">
        Affiliations
      </fo:block>
      <fo:list-block provisional-distance-between-starts="9mm"
                     provisional-label-separation="3mm">
        <xsl:apply-templates select="affiliation"/>
      </fo:list-block>
      <xsl:apply-templates select="authorblurb"/>
    </xsl:template>
  
    <xsl:template match="affiliation">
      <fo:list-item>
        <fo:list-item-label start-indent="50%" end-indent="label-end()">
          <fo:block>&#x2022;</fo:block>
        </fo:list-item-label>
        <fo:list-item-body start-indent="body-start()">
          <fo:block>
            <xsl:text>[</xsl:text><xsl:value-of select="shortaffil"/><xsl:text>] </xsl:text>
            <fo:inline font-weight="bold"><xsl:value-of select="jobtitle"/><xsl:text> </xsl:text></fo:inline>
            <fo:inline font-style="italic">
              <xsl:value-of select="orgname"/>
              <xsl:if test="orgdiv"><xsl:text>/</xsl:text><xsl:value-of select="orgdiv"/></xsl:if>
            </fo:inline>
          </fo:block>
        </fo:list-item-body>
      </fo:list-item>
    </xsl:template>
  
    <xsl:template match="authorblurb">
      <fo:block font-family="serif"
                font-size="14pt"
                font-weight="bold"
                space-before="12pt">
        Bio
      </fo:block>
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="dedication">
      <fo:page-sequence master-name="title">
        <fo:flow flow-name="xsl-region-body">
          <xsl:for-each select="para">
            <fo:block font-style="italic" font-family="serif" space-before="3in" font-size="10pt" text-align="center">
              <xsl:apply-templates/>
            </fo:block>
          </xsl:for-each>
        </fo:flow>
      </fo:page-sequence>
      <fo:page-sequence master-name="inside">
        <fo:flow flow-name="xsl-region-body">
          <fo:block> </fo:block>
        </fo:flow>
      </fo:page-sequence>
    </xsl:template>
  
    <xsl:template match="edition|pubdate|year|holder"/>
  
    <xsl:template match="copyright">
      <fo:block font-size="10pt" space-before="10pt">
        Copyright &#x00A9;<xsl:value-of select="year"/> by <xsl:value-of select="holder"/>.
        All rights reserved.
      </fo:block>
    </xsl:template>
  
    <xsl:template match="legalnotice">
      <fo:block font-size="8pt"
                text-align="justify"
                space-before="20pt"
                width="7.5in"
                font-family="serif">
        <xsl:apply-templates/>
      </fo:block>
    </xsl:template>
  
    <xsl:template match="programlisting">
      <fo:block font-family="monospace"
                font-size="10pt"
                background-color="#f0f0f0"
                white-space-collapse="false"
                keep-together="always">
         <xsl:apply-templates/>
      </fo:block>
    </xsl:template>
  
    <xsl:template match="orderedlist|itemizedlist">
      <fo:list-block provisional-distance-between-starts="9mm"
                     provisional-label-separation="3mm">
        <xsl:apply-templates/>
      </fo:list-block>
    </xsl:template>
  
    <xsl:template match="orderedlist/listitem">
      <fo:list-item>
        <fo:list-item-label start-indent="50%" end-indent="label-end()">
          <fo:block>
            <xsl:number format="1."/>
          </fo:block>
        </fo:list-item-label>
        <fo:list-item-body start-indent="body-start()">
          <fo:block>
            <xsl:apply-templates/>
          </fo:block>
        </fo:list-item-body>
      </fo:list-item>
    </xsl:template>
  
    <xsl:template match="itemizedlist/listitem">
      <fo:list-item>
        <fo:list-item-label start-indent="50%" end-indent="label-end()">
          <fo:block>&#x2022;</fo:block>
        </fo:list-item-label>
        <fo:list-item-body start-indent="body-start()">
          <fo:block>
            <xsl:apply-templates/>
          </fo:block>
        </fo:list-item-body>
      </fo:list-item>
    </xsl:template>
  
    <xsl:template match="classname|function|parameter">
      <fo:inline font-family="monospace">
        <xsl:apply-templates/><xsl:if test="name(.)='function'"><xsl:text>()</xsl:text></xsl:if>
      </fo:inline>
    </xsl:template>
  
    <xsl:template match="blockquote">
      <fo:block margin-left="1in"
                margin-right="1in"
                font-weight="bold"
                font-size="10pt"
                font-family="serif"
                space-before="10pt"
                border-before-style="solid"
                border-start-style="solid"
                border-end-style="solid"
                background-color="#000000"
                color="#ffffff">
        <xsl:value-of select="title"/>
      </fo:block>
      <fo:block margin-left="1in"
                margin-right="1in"
                font-family="serif"
                font-size="8pt"
                border-after-style="solid"
                border-start-style="solid"
                border-end-style="solid"
                background-color="#f0f0f0"
                padding-start="3pt"
                padding-end="3pt"
                padding-before="3pt"
                padding-after="3pt"
                space-after="20pt">
        <xsl:apply-templates/>
      </fo:block>
    </xsl:template>
  
    <xsl:template match="warning">
      <fo:block margin-left="1in"
                margin-right="1in"
                font-weight="bold"
                font-size="10pt"
                font-family="serif"
                space-before="10pt"
                border-before-style="solid"
                border-start-style="solid"
                border-end-style="solid"
                background-color="#800000"
                color="#ffffff">
        Warning: <xsl:value-of select="title"/>
      </fo:block>
      <fo:block margin-left="1in"
                margin-right="1in"
                font-family="serif"
                font-size="8pt"
                border-after-style="solid"
                border-start-style="solid"
                border-end-style="solid"
                background-color="#f0f0f0"
                padding-start="3pt"
                padding-end="3pt"
                padding-before="3pt"
                padding-after="3pt">
        <xsl:apply-templates/>
      </fo:block>
    </xsl:template>
  
    <xsl:template match="ulink">
      <fo:basic-link external-destination="{@uri}"><xsl:apply-templates/></fo:basic-link>
    </xsl:template>
  
    <xsl:template match="footnote">
      <fo:footnote>
        <fo:inline>
          (see <xsl:value-of select="generate-id()"/> below)
        </fo:inline>
        <fo:footnote-body>
          <fo:block font-family="serif"
                    font-size="8pt"
                    line-height="12pt"
                    font-style="italic">
            <xsl:value-of select="generate-id()"/>) <xsl:value-of select="."/>
          </fo:block>
        </fo:footnote-body>
      </fo:footnote>
    </xsl:template>
  
    <xsl:template match="figure">
      <fo:block text-align="center" font-weight="bold" font-family="serif" space-before="10pt" space-after="20pt">
        <xsl:value-of select="title"/>
        <xsl:apply-templates/>
      </fo:block>
    </xsl:template>
  
    <xsl:template match="graphic">
      <fo:external-graphic src="build/documentation/resources/{@fileref}">
        <xsl:attribute name="content-type">
          <xsl:text>content-type:image/</xsl:text>
          <xsl:value-of select="translate(@format,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
        </xsl:attribute>
      </fo:external-graphic>
      <xsl:if test="@srccredit">
        <fo:block font-size="8pt" font-family="serif" font-style="italic">
          &#x2022; <xsl:value-of select="@srccredit"/>
        </fo:block>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="table">
      <fo:table width="100%" table-layout="fixed">
        <xsl:apply-templates/>
      </fo:table>
    </xsl:template>
  
    <xsl:template match="colspec">
      <fo:table-column>
        <xsl:attribute name="column-number">
          <xsl:number count="colspec"/>
        </xsl:attribute>
        <xsl:attribute name="column-width">
          <xsl:call-template name="calc.column.width">
            <xsl:with-param name="colwidth">
              <xsl:value-of select="@colwidth"/>
            </xsl:with-param>
          </xsl:call-template>
        </xsl:attribute>
      </fo:table-column>
    </xsl:template>
  
    <xsl:template match="tgroup">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="thead">
      <fo:table-header>
        <xsl:apply-templates/>
      </fo:table-header>
    </xsl:template>
  
    <xsl:template match="tfoot">
      <fo:table-footer>
        <xsl:apply-templates/>
      </fo:table-footer>
    </xsl:template>
  
    <xsl:template match="row">
      <fo:table-row><xsl:apply-templates/></fo:table-row>
    </xsl:template>
  
    <xsl:template match="tbody">
      <fo:table-body>
        <xsl:apply-templates/>
      </fo:table-body>
    </xsl:template>
  
    <xsl:template match="entry">
      <fo:table-cell>
        <xsl:apply-templates/>
      </fo:table-cell>
    </xsl:template>
  
    <xsl:template name="calc.column.width">
      <xsl:param name="colwidth">1*</xsl:param>
  
      <xsl:if test="contains($colwidth, '*')">
        <xsl:text>proportional-column-width(</xsl:text>
        <xsl:value-of select="substring-before($colwidth, '*')"/>
        <xsl:text>)</xsl:text>
      </xsl:if>
  
      <xsl:variable name="width-units">
        <xsl:choose>
          <xsl:when test="contains($colwidth, '*')">
            <xsl:value-of select="normalize-space(substring-after($colwidth, '*'))"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="normalize-space($colwidth)"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
  
      <xsl:variable name="width"
                    select="normalize-space(translate($width-units, '+-0123456789.abcdefghijklmnopqrstuvwxyz', '+-0123456789.'))"/>
  
      <xsl:variable name="units"
                   select="normalize-space(translate($width-units, 'abcdefghijklmnopqrstuvwxyz+-0123456789.', 'abcdefghijklmnopqrstuvwxyz'))"/>
  
      <xsl:value-of select="$width"/>
  
      <xsl:choose>
        <xsl:when test="$units='pi'">pc</xsl:when>
        <xsl:when test="$units='' and $width != ''">pt</xsl:when>
        <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>
      </xsl:choose>
    </xsl:template>
  
    <xsl:template match="trademark"><xsl:apply-templates/>&#x2122;</xsl:template>
  
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/document2docbook.xsl
  
  Index: document2docbook.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="1.0">
  
    <xsl:template match="document">
      <article>
        <articleinfo>
          <authorgroup>
            <xsl:for-each select="header/person">
              <author>
                <firstname><xsl:value-of select="@name"/></firstname>
                <address><email><xsl:value-of select="@email"/></email></address>
              </author>
            </xsl:for-each>
          </authorgroup>
        </articleinfo>
        <title><xsl:value-of select="header/title"/></title>
        <xsl:apply-templates select="body"/>
      </article>
    </xsl:template>
  
    <xsl:template match="changes">
      <revhistory>
        <xsl:apply-templates select="//action"/>
      </revhistory>
    </xsl:template>
  
    <xsl:template match="action">
      <revision>
        <xsl:attribute name="revisionflag">
          <xsl:choose>
            <xsl:when test="@type='add'">added</xsl:when>
            <xsl:when test="@type='update'">changed</xsl:when>
            <xsl:when test="@type='remove'">deleted</xsl:when>
            <xsl:when test="@type='fix'">off</xsl:when>
            <xsl:otherwise>changed</xsl:otherwise>
          </xsl:choose>
        </xsl:attribute>
        <revnumber><xsl:value-of select="../@version"/></revnumber>
        <date><xsl:value-of select="../@date"/></date>
        <authorinitials><xsl:value-of select="@dev"/></authorinitials>
        <revremark>
          <xsl:value-of select="."/>
        </revremark>
      </revision>
    </xsl:template>
  
    <xsl:template match="body">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="s1">
      <section>
        <title><xsl:value-of select="@title"/></title>
        <xsl:apply-templates/>
      </section>
    </xsl:template>
  
    <xsl:template match="s2">
      <section>
        <title><xsl:value-of select="@title"/></title>
        <xsl:apply-templates/>
      </section>
    </xsl:template>
  
    <xsl:template match="s3">
      <section>
        <title><xsl:value-of select="@title"/></title>
        <xsl:apply-templates/>
      </section>
    </xsl:template>
  
    <xsl:template match="s4">
      <section>
        <title><xsl:value-of select="@title"/></title>
        <xsl:apply-templates/>
      </section>
    </xsl:template>
  
    <xsl:template match="p|br">
      <para>
        <xsl:apply-templates/>
      </para>
    </xsl:template>
  
    <xsl:template match="strong|em">
      <emphasis><xsl:apply-templates/></emphasis>
    </xsl:template>
  
    <xsl:template match="ul">
      <itemizedlist><xsl:apply-templates/></itemizedlist>
    </xsl:template>
  
    <xsl:template match="li">
      <listitem><xsl:apply-templates/></listitem>
    </xsl:template>
  
    <xsl:template match="ol">
      <orderedlist><xsl:apply-templates/></orderedlist>
    </xsl:template>
  
    <xsl:template match="link">
      <ulink uri="{@href}"><xsl:apply-templates/></ulink>
    </xsl:template>
  
    <xsl:template match="figure">
      <xsl:choose>
        <xsl:when test="@src">
          <figure>
            <title><xsl:value-of select="@alt"/></title>
            <graphic fileref="{@src}" srccredit="{@alt}"/>
          </figure>
        </xsl:when>
        <xsl:otherwise>
          <figure>
            <xsl:apply-templates/>
          </figure>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
  
    <xsl:template match="fixme">
      <warning><xsl:apply-templates/></warning>
    </xsl:template>
  
    <xsl:template match="note">
      <note><xsl:apply-templates/></note>
    </xsl:template>
  
    <xsl:template match="warn">
      <warning><xsl:apply-templates/></warning>
    </xsl:template>
  
    <xsl:template match="code">
      <classname><xsl:apply-templates/></classname>
    </xsl:template>
  
    <xsl:template match="source">
      <programlisting><xsl:apply-templates/></programlisting>
    </xsl:template>
  
    <xsl:template match="table">
      <table>
        <tgroup>
          <xsl:attribute name="cols"><xsl:value-of select="count(tr/td)"/></xsl:attribute>
          <xsl:if test="th">
            <thead>
              <xsl:apply-templates select="th"/>
            </thead>
          </xsl:if>
          <tbody>
            <xsl:apply-templates select="tr"/>
          </tbody>
        </tgroup>
      </table>
    </xsl:template>
  
    <xsl:template match="th|tr">
      <row>
        <xsl:apply-templates/>
      </row>
    </xsl:template>
  
    <xsl:template match="td">
      <entry>
        <xsl:apply-templates/>
      </entry>
    </xsl:template>
  
    <xsl:template match="node()|@*" priority="-1">
      <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/faq2document.xsl
  
  Index: faq2document.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
   <xsl:import href="copyover.xsl"/>
  
    <xsl:template match="faqs">
     <document>
      <header>
       <title><xsl:value-of select="@title"/></title>
      </header>
      <body>
        <s1 title="Questions">
         <ul>
          <xsl:apply-templates select="faq" mode="index"/>
         </ul>
        </s1>
        <s1 title="Answers">
          <xsl:apply-templates select="faq"/>
        </s1>
      </body>
     </document>  
    </xsl:template>
  
    <xsl:template match="faq" mode="index">
      <li>
        <jump anchor="faq-{position()}">
          <xsl:value-of select="question"/>
        </jump>
      </li>
    </xsl:template>
  
    <xsl:template match="faq">
      <anchor id="faq-{position()}"/>
      <s2 title="{question}">
        <xsl:apply-templates/>
      </s2>
    </xsl:template>
  
    <xsl:template match="question">
      <!-- ignored since already used -->
    </xsl:template>
  
    <xsl:template match="answer">
      <xsl:apply-templates/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/filterlinks.xsl
  
  Index: filterlinks.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!--
  This stylesheet filters all references to the javadocs
  and the samples.
  -->
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
    <xsl:template match="@src|@href|@background">
      <xsl:if test="not(contains(.,'apidocs')) and not(starts-with(., 'samples/'))">
        <xsl:copy>
          <xsl:apply-templates select="."/>
        </xsl:copy>
      </xsl:if>
    </xsl:template>
  
    <!-- This is a hack which makes the javascript images work -->
    <xsl:template match="img[@onLoad and starts-with(@src, 'graphics')]">
        <img src="{@src}"/>
        <img>
          <xsl:attribute name="src">
            <xsl:value-of select="substring-before(@src, '.')"/>_over.<xsl:value-of select="substring-after(@src, '.')"/>
          </xsl:attribute>
        </img>
    </xsl:template>
  
    <xsl:template match="img[@onLoad and starts-with(@src, 'images') and contains(@src, '-lo.gif')]">
        <img src="{@src}"/>
        <img>
          <xsl:attribute name="src"><xsl:value-of select="substring-before(@src, '-lo.gif')"/>-hi.gif</xsl:attribute>
        </img>
    </xsl:template>
  
    <xsl:template match="@*|node()">
     <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/projectinfo2announcement.xsl
  
  Index: projectinfo2announcement.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no"/>
  
    <xsl:template match="announcement">
      <xsl:variable name="titlelen" select="string-length(project)+9"/>
      <text>
        <xsl:value-of select="project"/><xsl:text> Released
  </xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="$titlelen"/>
        </xsl:call-template>
        <xsl:text>
  </xsl:text>
        <xsl:apply-templates select="abstract"/>
        <xsl:apply-templates select="body"/>
        <xsl:text>
  For more information about </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>, please go to
  </xsl:text>
        <xsl:value-of select="@site"/>
        <xsl:text>
  
  Changes with </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>
  
  </xsl:text>
        <xsl:apply-templates select="changes"/>
      </text>
    </xsl:template>
  
    <xsl:template match="project"/>
    <xsl:template match="title"/>
  
    <xsl:template match="subproject">
      <xsl:variable name="titlelen" select="string-length(title)"/>
      <xsl:text>
  </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  </xsl:text>
      <xsl:call-template name="line">
        <xsl:with-param name="len" select="$titlelen"/>
      </xsl:call-template>
      <xsl:text>
  </xsl:text>
      <xsl:apply-templates select="abstract"/>
      <xsl:text>
  For more information about </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>, please go to
  </xsl:text>
      <xsl:value-of select="@site"/>
      <xsl:text>
  
  Changes with </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  
  </xsl:text>
      <xsl:apply-templates select="changes"/>
    </xsl:template>
  
    <xsl:template match="abstract">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="p">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="link">
      <xsl:value-of select="."/>
      <xsl:text> (</xsl:text>
      <xsl:value-of select="@href"/>
      <xsl:text>)</xsl:text>
    </xsl:template>
  
    <xsl:template match="release">
      <xsl:for-each select="action">
        <xsl:text>*) </xsl:text>
        <xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text>
        <xsl:if test="@dev">
          <xsl:text>[</xsl:text>
  	<xsl:value-of select="@dev"/>
  	<xsl:text>]</xsl:text>
        </xsl:if>
        <xsl:text>
  
  </xsl:text>
      </xsl:for-each>
    </xsl:template>
  
    <xsl:template name="line">
      <xsl:param name="len"/>
      <xsl:if test="number($len) > 0">
        <xsl:text>-</xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="number($len)-1"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/projectinfo2todo.xsl
  
  Index: projectinfo2todo.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no"/>
  
    <xsl:template match="announcement">
      <xsl:variable name="titlelen" select="string-length(project)+9"/>
      <text>
        <xsl:value-of select="project"/><xsl:text> Released
  </xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="$titlelen"/>
        </xsl:call-template>
        <xsl:text>
  </xsl:text>
        <xsl:apply-templates select="abstract"/>
        <xsl:apply-templates select="body"/>
        <xsl:text>
  For more information about </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>, please go to
  </xsl:text>
        <xsl:value-of select="@site"/>
        <xsl:text>
  
  Changes with </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>
  
  </xsl:text>
        <xsl:apply-templates select="changes"/>
      </text>
    </xsl:template>
  
    <xsl:template match="project"/>
    <xsl:template match="title"/>
  
    <xsl:template match="subproject">
      <xsl:variable name="titlelen" select="string-length(title)"/>
      <xsl:text>
  </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  </xsl:text>
      <xsl:call-template name="line">
        <xsl:with-param name="len" select="$titlelen"/>
      </xsl:call-template>
      <xsl:text>
  </xsl:text>
      <xsl:apply-templates select="abstract"/>
      <xsl:text>
  For more information about </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>, please go to
  </xsl:text>
      <xsl:value-of select="@site"/>
      <xsl:text>
  
  Changes with </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  
  </xsl:text>
      <xsl:apply-templates select="changes"/>
    </xsl:template>
  
    <xsl:template match="abstract">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="p">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="link">
      <xsl:value-of select="."/>
      <xsl:text> (</xsl:text>
      <xsl:value-of select="@href"/>
      <xsl:text>)</xsl:text>
    </xsl:template>
  
    <xsl:template match="release">
      <xsl:for-each select="action">
        <xsl:text>*) </xsl:text>
        <xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text>
        <xsl:if test="@dev">
          <xsl:text>[</xsl:text>
  	<xsl:value-of select="@dev"/>
  	<xsl:text>]</xsl:text>
        </xsl:if>
        <xsl:text>
  
  </xsl:text>
      </xsl:for-each>
    </xsl:template>
  
    <xsl:template name="line">
      <xsl:param name="len"/>
      <xsl:if test="number($len) > 0">
        <xsl:text>-</xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="number($len)-1"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/projectinfo2txt.xsl
  
  Index: projectinfo2txt.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no"/>
  
    <xsl:template match="announcement">
      <xsl:variable name="titlelen" select="string-length(project)+9"/>
      <text>
        <xsl:value-of select="project"/><xsl:text> Released
  </xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="$titlelen"/>
        </xsl:call-template>
        <xsl:text>
  </xsl:text>
        <xsl:apply-templates select="abstract"/>
        <xsl:apply-templates select="body"/>
        <xsl:text>
  For more information about </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>, please go to
  </xsl:text>
        <xsl:value-of select="@site"/>
        <xsl:text>
  
  Changes with </xsl:text>
        <xsl:value-of select="project"/>
        <xsl:text>
  
  </xsl:text>
        <xsl:apply-templates select="changes"/>
      </text>
    </xsl:template>
  
    <xsl:template match="project"/>
    <xsl:template match="title"/>
  
    <xsl:template match="subproject">
      <xsl:variable name="titlelen" select="string-length(title)"/>
      <xsl:text>
  </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  </xsl:text>
      <xsl:call-template name="line">
        <xsl:with-param name="len" select="$titlelen"/>
      </xsl:call-template>
      <xsl:text>
  </xsl:text>
      <xsl:apply-templates select="abstract"/>
      <xsl:text>
  For more information about </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>, please go to
  </xsl:text>
      <xsl:value-of select="@site"/>
      <xsl:text>
  
  Changes with </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>
  
  </xsl:text>
      <xsl:apply-templates select="changes"/>
    </xsl:template>
  
    <xsl:template match="abstract">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="p">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="link">
      <xsl:value-of select="."/>
      <xsl:text> (</xsl:text>
      <xsl:value-of select="@href"/>
      <xsl:text>)</xsl:text>
    </xsl:template>
  
    <xsl:template match="release">
      <xsl:for-each select="action">
        <xsl:text>*) </xsl:text>
        <xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text>
        <xsl:if test="@dev">
          <xsl:text>[</xsl:text>
  	<xsl:value-of select="@dev"/>
  	<xsl:text>]</xsl:text>
        </xsl:if>
        <xsl:text>
  
  </xsl:text>
      </xsl:for-each>
    </xsl:template>
  
    <xsl:template name="line">
      <xsl:param name="len"/>
      <xsl:if test="number($len) > 0">
        <xsl:text>-</xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="number($len)-1"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/site2xhtml.xsl
  
  Index: site2xhtml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xsl:version="1.0">
    <head>
      <meta content="text/html; charset=ISO-8859-1"/>
      <title><xsl:value-of select="/site/body/title"/></title>
  <style type="text/css">
  <![CDATA[ body { background-color: white; font-size: normal; color: black ; }
   a { color: #525d76; }
   a.black { color: #000000;} 
   table {border-width: 0; width: 100%}
   table.centered {text-align: center}
   table.title {text-align: center; width: 80%} 
   img{border-width: 0;} 
   span.s1 {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
   span.s1_white { font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #ffffff; } 
   span.title {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
   span.c1 {color: #000000; font-family: Helvetica, Arial, sans-serif}
   tr.left {text-align: left}
   hr { width: 100%; size: 2} ]]>
  </style>    
    </head>
    <body>
    
      <!-- header --> 
      <table>
        <tbody>
          <tr>
            <td>
              <a href="http://xml.apache.org/forrest/"><img src="images/forrest-draft-logo.png"/></a>
            </td>
          </tr>
          <tr>
            <td bgcolor="#525d76">
              <span class="c1"><a class="black" href="http://xml.apache.org/">xml.apache.org</a> &gt; <a href="http://xml.apache.org/forrest/" class="black">forrest</a></span>
            </td>
          </tr>
        </tbody>
      </table>
      
      <!-- main --> 
      <table width="100%" cellspacing="0" cellpadding="0" border="0">
        <tr>
          <!-- left menu --> 
          <td width="1%"><br/></td>
          <td width="14%" valign="top" nowrap="1">
            <xsl:copy-of select="/site/menu/node()|@*"/>
          </td>
          <td width="1%"><br/></td>  
              
          <!-- contents --> 
          <td width="*" valign="top" align="left">
            <xsl:copy-of select="/site/body/node()|@*"/>
          </td>
        </tr>
      </table>
      <br/>
      
      <!-- footer --> 
     <table cellpadding="0" cellspacing="0" border="0" width="100%">
        <tbody>
          <tr>
            <td>
              <hr size="1" noshade=""/>
            </td>
          </tr>
          <tr>
            <td align="center">
              <i>Copyright &#x00A9; 2002 Forrest - xml.apache.org</i>
            </td>
          </tr>
          <tr>
            <td width="100%" align="right">
  			<br/>
            </td>
          </tr>        
          <tr>
            <td width="100%" align="right">
              <a href="http://krysalis.org/"><img src="images/krysalis-compatible.png" alt="Krysalis Logo"/></a> 
              <a href="http://xml.apache.org/cocoon/"><img src="images/build-with-with-cocoon.png" alt="Cocoon Logo"/></a> 
            </td>
          </tr>
        </tbody>
      </table>
      
    </body>
  </html>
  
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/todo2document.xsl
  
  Index: todo2document.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
   <xsl:import href="copyover.xsl"/>
   
   <xsl:template match="todo">
    <document>
     <header>
      <title><xsl:value-of select="@title"/></title>
     </header>
     <body>
      <xsl:apply-templates/>
     </body>
    </document>
   </xsl:template>
  
   <xsl:template match="actions">
    <s2 title="{@priority}">
     <sl>
      <xsl:for-each select="action">
       <li>
        <strong><xsl:text>[</xsl:text><xsl:value-of select="@context"/><xsl:text>]</xsl:text></strong><xsl:text> </xsl:text>
        <xsl:apply-templates/>
       </li>
      </xsl:for-each>
     </sl>
    </s2>
   </xsl:template>
   
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/printer_skin/book2menu.xsl
  
  Index: book2menu.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="1.0">
  
    <xsl:param name="resource"/>
  
    <xsl:template match="book">
      <menu>
        <xsl:apply-templates/>
      </menu>
    </xsl:template>
  
    <xsl:template match="project">
    </xsl:template>
  
    <xsl:template match="menu[position()=1]">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="menu">
       <tr>
         <td align="left" valign="top">
           ----------
           <br/>
           <b><xsl:value-of select="@label"/></b>
         </td>
       </tr>
       <xsl:apply-templates/>
    </xsl:template>
  
  
    <xsl:template match="menu-item">
      <xsl:if test="not(@type) or @type!='hidden'">
       <tr>
        <td align="left" valign="top">
         <xsl:choose>
           <xsl:when test="@href=$resource">
            <xsl:value-of select="@label"/>
           </xsl:when>
           <xsl:otherwise>
            <a href="{@href}"><xsl:value-of select="@label"/></a>
          </xsl:otherwise>
         </xsl:choose>
        </td>
       </tr>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="external">
      <xsl:if test="not(@type) or @type!='hidden'">
       <tr>
  	<td align="left" valign="top">
            <a href="{@href}"><xsl:value-of select="@label"/></a>
  	</td>
       </tr>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="node()|@*" priority="-1"/>
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/printer_skin/copyover.xsl
  
  Index: copyover.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
    <xsl:template match="@*|*|text()|processing-instruction()">
      <xsl:copy>
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
      </xsl:copy>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/printer_skin/document2html.xsl
  
  Index: document2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
  <!-- ====================================================================== -->
  <!-- document section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="/">
    <!-- checks if this is the included document to avoid neverending loop -->
    <xsl:if test="not(book)">
        <document>
        <xsl:choose>
  		<xsl:when test="document/header/title">
  		      <title><xsl:value-of select="document/header/title"/></title>
  		</xsl:when>
  		<xsl:otherwise>
  			<title>NO TITLE</title>
  		</xsl:otherwise>
  	</xsl:choose>
        <body text="#000000" link="#039acc" vlink="#0086b2" alink="#cc0000"
              topmargin="4" leftmargin="4" marginwidth="4" marginheight="4"
              bgcolor="#ffffff">
          
          <xsl:apply-templates/>
          
        </body>
        </document>
     </xsl:if>
     
     <xsl:if test="book">
      <xsl:apply-templates/>
     </xsl:if>
    </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- header section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="header">
    <!-- ignore on general document -->
   </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- body section -->
  <!-- ====================================================================== -->
  
    <xsl:template match="s1">
     <h1><xsl:value-of select="@title"/></h1>
     <font face="arial,helvetica,sanserif" color="#000000"><xsl:apply-templates/></font>
    </xsl:template>
  
    <xsl:template match="s2">
     <h2><xsl:value-of select="@title"/></h2>
     <font face="arial,helvetica,sanserif" color="#000000"><xsl:apply-templates/></font>
    </xsl:template>
  
    <xsl:template match="s3">
     <h3><xsl:value-of select="@title"/></h3>
     <font face="arial,helvetica,sanserif" color="#000000"><xsl:apply-templates/></font>
    </xsl:template>
  
    <xsl:template match="s4">
     <h4><xsl:value-of select="@title"/></h4>
     <font face="arial,helvetica,sanserif" color="#000000"><xsl:apply-templates/></font>
    </xsl:template>
      
  <!-- ====================================================================== -->
  <!-- footer section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="footer">
    <!-- ignore on general documents -->
   </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- paragraph section -->
  <!-- ====================================================================== -->
  
    <xsl:template match="p">
      <p align="justify"><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="note">
     <p>
      <table width="100%" cellspacing="3" cellpadding="0" border="0">
        <tr>
          <td width="28" valign="top">
            <img src="images/note.gif" width="28" height="29" vspace="0" hspace="0" border="0" alt="Note"/>
          </td>
          <td valign="top">
            <font size="-1" face="arial,helvetica,sanserif" color="#000000">
              <i>
                <xsl:apply-templates/>
              </i>
            </font>
          </td>
        </tr>  
      </table>
     </p>
    </xsl:template>
  
    <xsl:template match="source">
     <div align="center">
      <table cellspacing="4" cellpadding="0" border="0">
      <tr>
        <td bgcolor="#0086b2" width="1" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#0086b2" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#0086b2" width="1" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#0086b2" width="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#ffffff"><pre><xsl:apply-templates/></pre></td>
        <td bgcolor="#0086b2" width="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      <tr>
        <td bgcolor="#0086b2" width="1" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#0086b2" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
        <td bgcolor="#0086b2" width="1" height="1"><img src="images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
      </tr>
      </table>
     </div>
    </xsl:template>
    
    <xsl:template match="fixme">
     <!-- ignore on documentation -->
    </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- list section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="ul|ol|dl">
    <blockquote>
     <xsl:copy>
      <xsl:apply-templates/>
     </xsl:copy>
    </blockquote>
   </xsl:template>
   
   <xsl:template match="li">
    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>
   </xsl:template>
  
   <xsl:template match="sl">
    <ul>
     <xsl:apply-templates/>
    </ul>
   </xsl:template>
  
   <xsl:template match="dt">
    <li>
     <strong><xsl:value-of select="."/></strong>
     <xsl:text> - </xsl:text>
     <xsl:apply-templates select="dd"/>   
    </li>
   </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- table section -->
  <!-- ====================================================================== -->
  
    <xsl:template match="table">
      <table width="100%" border="0" cellspacing="2" cellpadding="2">
        <caption><xsl:value-of select="caption"/></caption>
        <xsl:apply-templates/>
      </table>
    </xsl:template>
  
    <xsl:template match="tr">
      <tr><xsl:apply-templates/></tr>
    </xsl:template>
  
    <xsl:template match="th">
      <td bgcolor="#039acc" colspan="{@colspan}" rowspan="{@rowspan}" valign="center" align="center">
        <font color="#ffffff" size="-1" face="arial,helvetica,sanserif">
          <b><xsl:apply-templates/></b>&#160;
        </font>
      </td>
    </xsl:template>
  
    <xsl:template match="td">
      <td bgcolor="#a0ddf0" colspan="{@colspan}" rowspan="{@rowspan}" valign="top" align="left">
        <font color="#000000" size="-1" face="arial,helvetica,sanserif">
          <xsl:apply-templates/>&#160;
        </font>
      </td>
    </xsl:template>
  
    <xsl:template match="tn">
      <td bgcolor="#ffffff" colspan="{@colspan}" rowspan="{@rowspan}">
        &#160;
      </td>
    </xsl:template>
    
    <xsl:template match="caption">
      <!-- ignore since already used -->
    </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- markup section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="strong">
     <b><xsl:apply-templates/></b>
   </xsl:template>
  
   <xsl:template match="em">
      <i><xsl:apply-templates/></i>
   </xsl:template>
  
   <xsl:template match="code">
      <code><font face="courier, monospaced"><xsl:apply-templates/></font></code>
   </xsl:template>
   
  <!-- ====================================================================== -->
  <!-- images section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="figure">
    <p align="center">
    <xsl:choose>
     <xsl:when test="string(@width) and string(@height)">
     <img src="{@src}" alt="{@alt}" width="{@width}" height="{@height}" border="0" vspace="4" hspace="4"/>
     </xsl:when>
     <xsl:otherwise>
     <img src="{@src}" alt="{@alt}" border="0" vspace="4" hspace="4"/>
     </xsl:otherwise>
    </xsl:choose>
    </p>
   </xsl:template>
   
   <xsl:template match="img">
     <img src="{@src}" alt="{@alt}" border="0" vspace="4" hspace="4" align="right"/>
   </xsl:template>
  
   <xsl:template match="icon">
     <img src="{@src}" alt="{@alt}" border="0" align="absmiddle"/>
   </xsl:template>
  
  <!-- ====================================================================== -->
  <!-- links section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="link">
     <a href="{@href}"><xsl:apply-templates/></a>
   </xsl:template>
  
   <xsl:template match="connect">
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="jump">
     <a href="{@href}#{@anchor}"><xsl:apply-templates/></a>
   </xsl:template>
  
   <xsl:template match="fork">
     <a href="{@href}" target="_blank"><xsl:apply-templates/></a>
   </xsl:template>
  
   <xsl:template match="anchor">
     <a name="{@id}"><xsl:comment>anchor</xsl:comment></a>
   </xsl:template>  
  
  <!-- ====================================================================== -->
  <!-- specials section -->
  <!-- ====================================================================== -->
  
   <xsl:template match="br">
    <br/>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/printer_skin/simple.css
  
  Index: simple.css
  ===================================================================
  body {
  	background: white fixed no-repeat left top; 
  	color: black; 
  	font-family: sans-serif; 
  	margin: 2em 1em 2em 1em;
  }
  
  h1 {
  	text-align: left;
  	color: #005a9c;
  	font: 170% sans-serif;
  }
  
  h2 {
  	text-align: left;
  	color: #005a9c;
  	font: 140% sans-serif;
  }
  
  h3 {
  	text-align: left;
  	color: #005a9c;
  	font: 120% sans-serif;
  }
  
  h4 {
  	text-align: left;
  	color: #005a9c;
  	font: bold 100% sans-serif;
  }
  
  #main-panel {}
  #side-bar {}
  #content-panel {}
  
  #s1
  #s2
  #s3
  #s4
  
  p {
          padding: 10px 10px 10px 10px;
          margin: 10px 20px 10px 20px;
          text-align: justify;
  }
  
  p.note {
          font-style: italic;
  }
  
  p.source {
  	font-family: monospace;
  }
  
  a:link { color: #005a9c }
  a:visited { color: #a00000 }
  a:active { color: #00a000 }
  a:hover { background: #ffa }
  
  
  
  1.1                  xml-forrest/src/documentation/stylesheets/printer_skin/site2xhtml.xsl
  
  Index: site2xhtml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
  
  	<xsl:param name="header"/>
  
  <xsl:template match="/">
  <html>
        <head>
          <title><xsl:value-of select="/site/document/title"/></title>
        </head>
  
        <body text="#000000" link="#039acc" vlink="#0086b2" alink="#cc0000"
              topmargin="4" leftmargin="4" marginwidth="4" marginheight="4"
              bgcolor="#ffffff">
          <!-- THE TOP BAR (HEADER) -->
          <table width="100%" cellspacing="0" cellpadding="0" border="0">
            <tr>
              <td width="135" height="60" rowspan="3" valign="top" align="left">
                <img width="135" height="60" src="images/logo.gif" hspace="0" vspace="0" border="0"/>
              </td>
              <td width="100%" height="5" valign="top" align="left" colspan="2" background="images/line.gif">
                <img width="1" height="5" src="images/line.gif" hspace="0" vspace="0" border="0" align="left"/>
              </td>
              <td width="29" height="60"  rowspan="3" valign="top" align="left">
                <img width="29" height="60" src="images/right.gif" hspace="0" vspace="0" border="0"/>
              </td>
            </tr>
            <tr>
              <!-- using svg 
              <td width="100%" height="35" valign="top" align="right" colspan="2" bgcolor="#0086b2">
                <img src="{$header}?label={/site/document/title}" hspace="0" vspace="0" border="0" alt="{/site/document/title}" align="right"/>           
              </td>
              -->
              <td width="100%" height="35" valign="top" align="right" colspan="2" bgcolor="#0086b2">
                <p align="right" style="color:white; font-family:arial; font-size:30px; font-style:italic">
                  <xsl:value-of select="/site/document/title"/>
                </p>
              </td>
            </tr>
            <tr>
              <td width="100%" height="20" valign="top" align="left" bgcolor="#0086b2" background="images/bottom.gif">
                <img width="3" height="20" src="images/bottom.gif" hspace="0" vspace="0" border="0" align="left"/>
              </td>
              <td align="right" bgcolor="#0086b2" height="20" valign="top" width="288" background="images/bottom.gif">
                <table border="0" cellpadding="0" cellspacing="0" width="288">
                  <tr>
                    <td width="96" height="20" valign="top" align="left">
                      <a href="http://xml.apache.org/" target="new">
                        <img alt="http://xml.apache.org/" width="96" height="20" src="images/button-xml-lo.gif"
                             name="xml" hspace="0" vspace="0" border="0"/>
                      </a>
                    </td>
                    <td width="96" height="20" valign="top" align="left">
                      <a href="http://www.apache.org/" target="new">
                        <img alt="http://www.apache.org/" width="96" height="20" src="images/button-asf-lo.gif"
                             name="asf" hspace="0" vspace="0" border="0"/>
                      </a>
                    </td>
                    <td width="96" height="20" valign="top" align="left">
                      <a href="http://www.w3.org/" target="new">
                        <img alt="http://www.w3.org/" width="96" height="20" src="images/button-w3c-lo.gif"
                             name="w3c" hspace="0" vspace="0" border="0"/>
                      </a>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
  
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
  	<tr width="100%">
  		<td width="120" valign="top"> 
  			<table border="0" cellpadding="0" cellspacing="0" width="120">
  			      <tr>
  					<td align="left" valign="top">
  						<img border="0" height="14" hspace="0" src="images/join.gif" vspace="0" width="120"/>
  						<br/>
  					</td>
  				</tr>
  				<xsl:copy-of select="/site/menu/node()|@*"/>
  <!--
  				<tr>
  					<td valign="top" align="left">
  						<img border="0" height="14" hspace="0" src="images/close.gif" vspace="0" width="120"/>
  						<br/>
  					</td>
  				</tr>
  -->
  			</table>
  		</td>
  		<td>
  			<table border="0" cellpadding="0" cellspacing="0">
  				<tr><td width="100%" height="10"/></tr>
  				<tr><td><xsl:copy-of select="/site/document/body/node()|@*"/></td></tr>
  			</table>
  		</td>
  	</tr>
   </table>
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
      <td bgcolor="#0086b2">
        <img height="1" src="images/dot.gif" width="1"/>
      </td>
    </tr>
    <tr>
      <td align="center">
        <font color="#0086b2" face="arial,helvetica,sanserif" size="-1">
          <i>Copyright &#169; @year@ The Apache Software Foundation. All Rights Reserved.</i>
        </font>
      </td>
    </tr>
  </table>
  </body>
  
  
  </html>
  </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/book.xml
  
  Index: book.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "dtd/book-cocoon-v10.dtd">
  
  <book software="Forrest" 
        title="Forrest" 
        copyright="@year@ The Apache Foundation"
        xmlns:xlink="http://www.w3.org/1999/xlink">
  
    <menu label="About">
      <menu-item label="Index" href="index.html"/>     
      <menu-item label="License" href="license.html"/>     
      <menu-item label="Download" href="foo"/>
      <menu-item label="Who we are" href="foo"/>    
      <menu-item label="FAQ File" href="foo"/>
      <menu-item label="Changes" href="foo"/>
      <menu-item label="Todo" href="foo"/>
    </menu>
    
    <menu label="References">
      <menu-item label="Apache Cocoon" href="http://xml.apache.org/cocoon/"/>
    </menu>
  
    <menu label="Get Involved">
      <menu-item label="Contributing" href="foo"/>
      <menu-item label="Patches" href="foo"/>    
      <menu-item label="Bug Database" href="foo"/>
      <menu-item label="CVS" href="foo"/>
      <menu-item label="Mail Lists" href="foo"/>
    </menu>
  
  </book>
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" "dtd/document-v10.dtd">
  <document>
    <header>
      <title>Welcome to Forrest</title>
      <authors>
        <person name="Steven Noels" email="stevenn@apache.org" id="SN"/>
      </authors>
    </header>
    <body>
      <s1 title="Introduction">
        <p>Forrest wants to provide a good technological infrastructure for open software development for the Apache Software Foundation based on ASF software, ASF practices and experience and modern software design principles.</p>
        <p>The Forrest developers - <link href="mailto:forrest-dev@xml.apache.org">forrest-dev@xml.apache.org</link></p>
      </s1>
    </body>
  </document>
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/license.xml
  
  Index: license.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" "dtd/document-v10.dtd">
  
  <document>
   <header>
    <title>The Apache Software License</title>
    <authors>
     <person name="Steven Noels" email="stevenn@apache.org"/>   
    </authors>
   </header>
  
  <body>
  <s1 title="The Apache Software License, Version 1.1">
  <source><![CDATA[
   Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
   
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
   
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
   
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
   
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
   
   4. The names "Apache Forrest" and  "Apache Software Foundation" must  not be
      used to  endorse or promote  products derived from  this software without
      prior written permission. For written permission, please contact
      apache@apache.org.
   
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
   
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   This software  consists of voluntary contributions made  by many individuals
   on behalf  of the Apache  Software Foundation. For  more information  on the 
   Apache Software Foundation, please see <http://www.apache.org/>.]]></source>
  </s1>
  </body>
  </document>
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/XMLSchema.dtd
  
  Index: XMLSchema.dtd
  ===================================================================
  <!-- DTD for XML Schemas: Part 1: Structures
       Public Identifier: "-//W3C//DTD XMLSCHEMA 200010//EN"
       Official Location: http://www.w3.org/2000/10/XMLSchema.dtd -->
  <!-- $Id: XMLSchema.dtd,v 1.1 2002/02/26 23:50:26 stevenn Exp $ -->
  <!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
  <!-- prose copy in the structures REC is the definitive version -->    <!--d-->
  <!-- (which shouldn't differ from this one except for this -->         <!--d-->
  <!-- comment and entity expansions, but just in case) -->              <!--d-->
  <!-- With the exception of cases with multiple namespace
       prefixes for the XML Schema namespace, any XML document which is
       not valid per this DTD given redefinitions in its internal subset of the
       'p' and 's' parameter entities below appropriate to its namespace
       declaration of the XML Schema namespace is almost certainly not
       a valid schema. -->
  
  <!-- The simpleType element and its constituent parts
       are defined in XML Schema: Part 2: Datatypes -->
  <!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
  
  <!ENTITY % p ''> <!-- can be overriden in the internal subset of a
                        schema document to establish a namespace prefix -->
  <!ENTITY % s ''> <!-- if %p is defined (e.g. as foo:) then you must
                        also define %s as the suffix for the appropriate
                        namespace declaration (e.g. :foo) -->
  <!ENTITY % nds 'xmlns%s;'>
  
  <!-- Define all the element names, with optional prefix -->
  <!ENTITY % schema "%p;schema">
  <!ENTITY % complexType "%p;complexType">
  <!ENTITY % complexContent "%p;complexContent">
  <!ENTITY % simpleContent "%p;simpleContent">
  <!ENTITY % extension "%p;extension">
  <!ENTITY % element "%p;element">
  <!ENTITY % unique "%p;unique">
  <!ENTITY % key "%p;key">
  <!ENTITY % keyref "%p;keyref">
  <!ENTITY % selector "%p;selector">
  <!ENTITY % field "%p;field">
  <!ENTITY % group "%p;group">
  <!ENTITY % all "%p;all">
  <!ENTITY % choice "%p;choice">
  <!ENTITY % sequence "%p;sequence">
  <!ENTITY % any "%p;any">
  <!ENTITY % anyAttribute "%p;anyAttribute">
  <!ENTITY % attribute "%p;attribute">
  <!ENTITY % attributeGroup "%p;attributeGroup">
  <!ENTITY % include "%p;include">
  <!ENTITY % import "%p;import">
  <!ENTITY % redefine "%p;redefine">
  <!ENTITY % notation "%p;notation">
  
  <!-- annotation elements -->
  <!ENTITY % annotation "%p;annotation">
  <!ENTITY % appinfo "%p;appinfo">
  <!ENTITY % documentation "%p;documentation">
  
  <!-- Customisation entities for the ATTLIST of each element type.
       Define one of these if your schema takes advantage of the
       anyAttribute='##other' in the schema for schemas -->
  
  <!ENTITY % schemaAttrs ''>
  <!ENTITY % complexTypeAttrs ''>
  <!ENTITY % complexContentAttrs ''>
  <!ENTITY % simpleContentAttrs ''>
  <!ENTITY % extensionAttrs ''>
  <!ENTITY % elementAttrs ''>
  <!ENTITY % groupAttrs ''>
  <!ENTITY % allAttrs ''>
  <!ENTITY % choiceAttrs ''>
  <!ENTITY % sequenceAttrs ''>
  <!ENTITY % anyAttrs ''>
  <!ENTITY % anyAttributeAttrs ''>
  <!ENTITY % attributeAttrs ''>
  <!ENTITY % attributeGroupAttrs ''>
  <!ENTITY % uniqueAttrs ''>
  <!ENTITY % keyAttrs ''>
  <!ENTITY % keyrefAttrs ''>
  <!ENTITY % selectorAttrs ''>
  <!ENTITY % fieldAttrs ''>
  <!ENTITY % includeAttrs ''>
  <!ENTITY % importAttrs ''>
  <!ENTITY % redefineAttrs ''>
  <!ENTITY % notationAttrs ''>
  
  <!ENTITY % complexDerivationChoice "(extension|restriction)">
  <!ENTITY % complexDerivationSet "CDATA">
        <!-- #all or space-separated list drawn from derivationChoice -->
  <!ENTITY % blockSet "CDATA">
        <!-- #all or space-separated list drawn from
                        derivationChoice + 'substitution' -->
  
  <!ENTITY % mgs '%all; | %choice; | %sequence;'>
  <!ENTITY % cs '%choice; | %sequence;'>
  <!ENTITY % formValues '(qualified|unqualified)'>
  
  
  <!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
  
  <!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
  
  <!-- This is used in part2 -->
  <!ENTITY % restriction1 '((%mgs; | %group;)?)'>
  
  %xs-datatypes;
  
  <!-- the duplication below is to produce an unambiguous content model
       which allows annotation everywhere -->
  <!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
                      ((%simpleType; | %complexType;
                        | %element; | %attribute;
                        | %attributeGroup; | %group;
                        | %notation; ),
                       (%annotation;)*)* )>
  <!ATTLIST %schema;
     targetNamespace      %URIref;               #IMPLIED
     version              CDATA                  #IMPLIED
     %nds;                %URIref;               #FIXED 'http://www.w3.org/2000/10/XMLSchema'
     finalDefault         %complexDerivationSet; ''
     blockDefault         %blockSet;             ''
     id                   ID                     #IMPLIED
     elementFormDefault   %formValues;           'unqualified'
     attributeFormDefault %formValues;           'unqualified'
     %schemaAttrs;>
  <!-- Note the xmlns declaration is NOT in the Schema for Schemas,
       because at the Infoset level where schemas operate,
       xmlns(:prefix) is NOT an attribute! -->
   
  <!-- The id attribute here and below is for use in external references
       from non-schemas using simple fragment identifiers.
       It is NOT used for schema-to-schema reference, internal or
       external. -->
  
  <!-- a type is a named content type specification which allows attribute
       declarations-->
  <!-- -->
  
  <!ELEMENT %complexType; ((%annotation;)?,
                           (%simpleContent;|%complexContent;|
                            %particleAndAttrs;))>
  
  <!ATTLIST %complexType;
            name      %NCName;                        #IMPLIED
            id        ID                              #IMPLIED
            abstract  %boolean;                       'false'
            final     %complexDerivationSet;          #IMPLIED
            block     %complexDerivationSet;          ''
            mixed (true|false) 'false'
            %complexTypeAttrs;>
  
  <!-- particleAndAttrs is shorthand for a root type -->
  <!-- mixed is disallowed if simpleContent, overriden if complexContent
       has one too. -->
  
  <!-- If anyAttribute appears in one or more referenced attributeGroups
       and/or explicitly, the intersection of the permissions is used -->
  
  <!ELEMENT %complexContent; (%restriction;|%extension;)>
  <!ATTLIST %complexContent;
            mixed (true|false) #IMPLIED
            id    ID           #IMPLIED
            %complexContentAttrs;>
  
  <!-- restriction should use the branch defined above, not the simple
       one from part2; extension should use the full model  -->
  
  <!ELEMENT %simpleContent; (%restriction;|%extension;)>
  <!ATTLIST %simpleContent;
            id    ID           #IMPLIED
            %simpleContentAttrs;>
  
  <!-- restriction should use the simple branch from part2, not the 
       one defined above; extension should have no particle  -->
  
  <!ELEMENT %extension; (%particleAndAttrs;)>
  <!ATTLIST %extension;
            base  %QName;      #REQUIRED
            id    ID           #IMPLIED
            %extensionAttrs;>
  
  <!-- an element is declared by either:
   a name and a type (either nested or referenced via the type attribute)
   or a ref to an existing element declaration -->
  
  <!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
                       (%unique; | %key; | %keyref;)*)>
  <!-- simpleType or complexType only if no type|ref attribute -->
  <!-- ref not allowed at top level -->
  <!ATTLIST %element;
              name               %NCName;               #IMPLIED
              id                 ID                     #IMPLIED
              ref                %QName;                #IMPLIED
              type               %QName;                #IMPLIED
              minOccurs          %nonNegativeInteger;   #IMPLIED
              maxOccurs          CDATA                  #IMPLIED
              nullable           %boolean;              #IMPLIED
              substitutionGroup  %QName;                #IMPLIED
              abstract           %boolean;              'false'
              final              %complexDerivationSet; #IMPLIED
              block              %blockSet;             #IMPLIED
              default            CDATA                  #IMPLIED
              fixed              CDATA                  #IMPLIED
              form               %formValues;           #IMPLIED
              %elementAttrs;>
  <!-- type and ref are mutually exclusive.
       name and ref are mutually exclusive, one is required -->
  <!-- In the absence of type AND ref, type defaults to type of
       substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
  <!-- default and fixed are mutually exclusive -->
  
  <!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
  <!ATTLIST %group; 
            name        %NCName;               #IMPLIED
            ref         %QName;                #IMPLIED
            minOccurs   %nonNegativeInteger;   #IMPLIED
            maxOccurs   CDATA                  #IMPLIED
            id          ID                     #IMPLIED
            %groupAttrs;>
  
  <!ELEMENT %all; ((%annotation;)?, (%element;)*)>
  <!ATTLIST %all;
            minOccurs   (1)                    #FIXED '1'
            maxOccurs   (1)                    #FIXED '1'
            id          ID                     #IMPLIED
            %allAttrs;>
  
  <!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  <!ATTLIST %choice;
            minOccurs   %nonNegativeInteger;   '1'
            maxOccurs   CDATA                  '1'
            id          ID                     #IMPLIED
            %choiceAttrs;>
  
  <!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  <!ATTLIST %sequence;
            minOccurs   %nonNegativeInteger;   '1'
            maxOccurs   CDATA                  '1'
            id          ID                     #IMPLIED
            %sequenceAttrs;>
  
  <!-- an anonymous grouping in a model, or
       a top-level named group definition, or a reference to same -->
  
  <!-- Note that if order is 'all', group is not allowed inside.
       If order is 'all' THIS group must be alone (or referenced alone) at
       the top level of a content model -->
  <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
  <!-- Should allow minOccurs=0 inside order='all' . . . -->
  
  <!ELEMENT %any; (%annotation;)?>
  <!ATTLIST %any;
              namespace       CDATA                  '##any'
              processContents (skip|lax|strict)      'strict'
              minOccurs       %nonNegativeInteger;   '1'
              maxOccurs       CDATA                  '1'
              id              ID                     #IMPLIED
              %anyAttrs;>
  
  <!-- namespace is interpreted as follows:
                    ##any      - - any non-conflicting WFXML at all
  
                    ##other    - - any non-conflicting WFXML from namespace other
                                    than targetNamespace
  
                    ##local    - - any unqualified non-conflicting WFXML/attribute
                    one or     - - any non-conflicting WFXML from
                    more URI        the listed namespaces
                    references
  
                    ##targetNamespace ##local may appear in the above list,
                      with the obvious meaning -->
  
  <!ELEMENT %anyAttribute; (%annotation;)?>
  <!ATTLIST %anyAttribute;
              namespace       CDATA              '##any'
              processContents (skip|lax|strict)  'strict'
              id              ID                 #IMPLIED
              %anyAttributeAttrs;>
  <!-- namespace is interpreted as for 'any' above -->
  
  <!-- simpleType only if no type|ref attribute -->
  <!-- ref not allowed at top level, name iff at top level -->
  <!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
  <!ATTLIST %attribute;
            name      %NCName;      #IMPLIED
            id        ID            #IMPLIED
            ref       %QName;       #IMPLIED
            type      %QName;       #IMPLIED
            use       (prohibited|optional|required|fixed|default) #IMPLIED
            value     CDATA         #IMPLIED
            form      %formValues;  #IMPLIED
            %attributeAttrs;>
  <!-- type and ref are mutually exclusive.
       name and ref are mutually exclusive, one is required -->
  <!-- value only if use is fixed, required or default, or name -->
  <!-- name and use are mutually exclusive -->
  <!-- default for use is optional when nested, none otherwise -->
  <!-- type attr and simpleType content are mutually exclusive -->
  
  <!-- an attributeGroup is a named collection of attribute decls, or a
       reference thereto -->
  <!ELEMENT %attributeGroup; ((%annotation;)?,
                         (%attribute; | %attributeGroup;)*,
                         (%anyAttribute;)?) >
  <!ATTLIST %attributeGroup;
                   name       %NCName;       #IMPLIED
                   id         ID             #IMPLIED
                   ref        %QName;        #IMPLIED
                   %attributeGroupAttrs;>
  
  <!-- ref iff no content, no name.  ref iff not top level -->
  
  <!-- better reference mechanisms -->
  <!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %unique;
            name     %NCName;       #REQUIRED
  	  id       ID             #IMPLIED
  	  %uniqueAttrs;>
  
  <!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %key;
            name     %NCName;       #REQUIRED
  	  id       ID             #IMPLIED
  	  %keyAttrs;>
  
  <!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %keyref;
            name     %NCName;       #REQUIRED
  	  refer    %QName;        #REQUIRED
  	  id       ID             #IMPLIED
  	  %keyrefAttrs;>
  
  <!ELEMENT %selector; ((%annotation;)?)>
  <!ATTLIST %selector;
            xpath %XPathExpr; #REQUIRED
            id    ID          #IMPLIED
            %selectorAttrs;>
  <!ELEMENT %field; ((%annotation;)?)>
  <!ATTLIST %field;
            xpath %XPathExpr; #REQUIRED
            id    ID          #IMPLIED
            %fieldAttrs;>
  
  <!-- Schema combination mechanisms -->
  <!ELEMENT %include; (%annotation;)?>
  <!ATTLIST %include;
            schemaLocation %URIref; #REQUIRED
            id             ID       #IMPLIED
            %includeAttrs;>
  
  <!ELEMENT %import; (%annotation;)?>
  <!ATTLIST %import;
            namespace      %URIref; #IMPLIED
            schemaLocation %URIref; #IMPLIED
            id             ID       #IMPLIED
            %importAttrs;>
  
  <!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
                        %attributeGroup; | %group;)*>
  <!ATTLIST %redefine;
            schemaLocation %URIref; #REQUIRED
            id             ID       #IMPLIED
            %redefineAttrs;>
  
  <!ELEMENT %notation; (%annotation;)?>
  <!ATTLIST %notation;
  	  name        %NCName;    #REQUIRED
  	  id          ID          #IMPLIED
  	  public      CDATA       #REQUIRED
  	  system      %URIref;    #IMPLIED
  	  %notationAttrs;>
  
  <!-- Annotation is either application information or documentation -->
  <!-- By having these here they are available for datatypes as well
       as all the structures elements -->
  
  <!ELEMENT %annotation; (%appinfo; | %documentation;)*>
  
  <!-- User must define annotation elements in internal subset for this
       to work -->
  <!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
  <!ATTLIST %appinfo;
            source     %URIref;      #IMPLIED
            id         ID         #IMPLIED
            %appinfoAttrs;>
  <!ELEMENT %documentation; ANY>   <!-- too restrictive -->
  <!ATTLIST %documentation;
            source     %URIref;   #IMPLIED
            id         ID         #IMPLIED
            xml:lang   CDATA      #IMPLIED
            %documentationAttrs;>
  
  <!NOTATION XMLSchemaStructures PUBLIC
             'structures' 'http://www.w3.org/2000/10/XMLSchema.xsd' >
  <!NOTATION XML PUBLIC
             'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/book-cocoon-v10.dtd
  
  Index: book-cocoon-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Cocoon Documentation Book DTD (Version 1.0)
  
  PURPOSE:
  This DTD defines the */book.xml documentation configuration files.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE book PUBLIC
         "-//APACHE//DTD Cocoon Documentation Book Vx.yz//EN"
         "http://xml.apache.org/DTD/book-cocoon-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:
  We need to replace this DTD with the proper one.
  We are only using this DTD to enable validation during "build docs"
  because every XML instance must declare its ruleset.
  
  This initial minimal DTD has been reverse-engineered from the structure
  of the current documents, e.g. 
   docuemntation/xdocs/book.xml
    
  AUTHORS:
    David Crossley <crossley@apache.org>
    
  FIXME:
    - find the proper DTD for book.xml
  
  CHANGE HISTORY:
    20011031 Initial version. (DC)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!ELEMENT book (menu+)> 
  <!ELEMENT menu (menu-item|external)*>
  <!ELEMENT menu-item EMPTY>
  <!ELEMENT external EMPTY>
  <!ATTLIST book software CDATA #REQUIRED
                 title CDATA #REQUIRED
                 copyright CDATA #REQUIRED
                 xmlns:xlink CDATA #IMPLIED
  >
  <!ATTLIST menu label CDATA #REQUIRED
  >
  <!ATTLIST menu-item label CDATA #REQUIRED
                      href CDATA #REQUIRED
                      type (visible|hidden) "visible"
  >
  <!ATTLIST external  label CDATA #REQUIRED
                      href CDATA #REQUIRED
                      type (visible|hidden) "visible"
  >
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/changes-v10.dtd
  
  Index: changes-v10.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Changes DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document
    type for software development changes for use with the Apache projects.
    It is an XML-compliant DTD and it's maintained by the Apache XML
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Changes Vx.yz//EN"
         "http://xml.apache.org/DTD/changes-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
    It is important, expecially in open developped software projects, to keep
    track of software changes both to give users indications of bugs that might
    have been resolved, as well, and not less important, to provide credits
    for the support given to the project. It is considered vital to provide
    adequate payback using recognition and credits to let users and developers
    feel part of the community, thus increasing development power.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
  
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
    20000316 Added bugfixing attribute. (SM)
  
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
  
    Permission to copy in any form is granted provided this notice is
    included in all copies. Permission to redistribute is granted
    provided this file is distributed untouched in all its parts and
    included files.
  
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Common entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % types "add|remove|update|fix">
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT changes (devs, release*)>
  <!ATTLIST changes %common.att;
                    %title.att;>
  
      <!ELEMENT devs (person+)>
      <!ATTLIST devs %common.att;>
  
      <!ELEMENT release (action+)>
      <!ATTLIST release %common.att;
                        version  CDATA  #REQUIRED
                        date     CDATA  #REQUIRED>
  
          <!ELEMENT action (%content.mix;)*>
          <!ATTLIST action %common.att;
                           dev  IDREF  #REQUIRED
                           type (%types;)  #IMPLIED
                           due-to CDATA #IMPLIED
                           due-to-email CDATA #IMPLIED
                           fixes-bug CDATA #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/characters.ent
  
  Index: characters.ent
  ===================================================================
  <!-- 
       Portions (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  
  <!-- 
       Character entity set.
  -->
  
  <!-- Latin A -->
  <!ENTITY nbsp     "&#160;">  <!-- U+00A0 ISOnum    - no-break space = non-breaking space                                   -->
  <!ENTITY iexcl    "&#161;">  <!-- U+00A1 ISOnum    - inverted exclamation mark                                             -->
  <!ENTITY cent     "&#162;">  <!-- U+00A2 ISOnum    - cent sign                                                             -->
  <!ENTITY pound    "&#163;">  <!-- U+00A3 ISOnum    - pound sign                                                            -->
  <!ENTITY curren   "&#164;">  <!-- U+00A4 ISOnum    - currency sign                                                         -->
  <!ENTITY yen      "&#165;">  <!-- U+00A5 ISOnum    - yen sign = yuan sign                                                  -->
  <!ENTITY brvbar   "&#166;">  <!-- U+00A6 ISOnum    - broken bar = broken vertical bar                                      -->
  <!ENTITY sect     "&#167;">  <!-- U+00A7 ISOnum    - section sign                                                          -->
  <!ENTITY uml      "&#168;">  <!-- U+00A8 ISOdia    - diaeresis = spacing diaeresis                                         -->
  <!ENTITY copy     "&#169;">  <!-- U+00A9 ISOnum    - copyright sign                                                        -->
  <!ENTITY ordf     "&#170;">  <!-- U+00AA ISOnum    - feminine ordinal indicator                                            -->
  <!ENTITY laquo    "&#171;">  <!-- U+00AB ISOnum    - left-pointing double angle quotation mark = left pointing guillemet   -->
  <!ENTITY not      "&#172;">  <!-- U+00AC ISOnum    - not sign                                                              -->
  <!ENTITY shy      "&#173;">  <!-- U+00AD ISOnum    - soft hyphen = discretionary hyphen                                    -->
  <!ENTITY reg      "&#174;">  <!-- U+00AE ISOnum    - registered sign = registered trade mark sign                          -->
  <!ENTITY macr     "&#175;">  <!-- U+00AF ISOdia    - macron = spacing macron = overline = APL overbar                      -->
  <!ENTITY deg      "&#176;">  <!-- U+00B0 ISOnum    - degree sign                                                           -->
  <!ENTITY plusmn   "&#177;">  <!-- U+00B1 ISOnum    - plus-minus sign = plus-or-minus sign                                  -->
  <!ENTITY sup2     "&#178;">  <!-- U+00B2 ISOnum    - superscript two = superscript digit two = squared                     -->
  <!ENTITY sup3     "&#179;">  <!-- U+00B3 ISOnum    - superscript three = superscript digit three = cubed                   -->
  <!ENTITY acute    "&#180;">  <!-- U+00B4 ISOdia    - acute accent = spacing acute                                          -->
  <!ENTITY micro    "&#181;">  <!-- U+00B5 ISOnum    - micro sign                                                            -->
  <!ENTITY para     "&#182;">  <!-- U+00B6 ISOnum    - pilcrow sign = paragraph sign                                         -->
  <!ENTITY middot   "&#183;">  <!-- U+00B7 ISOnum    - middle dot = Georgian comma = Greek middle dot                        -->
  <!ENTITY cedil    "&#184;">  <!-- U+00B8 ISOdia    - cedilla = spacing cedilla                                             -->
  <!ENTITY sup1     "&#185;">  <!-- U+00B9 ISOnum    - superscript one = superscript digit one                               -->
  <!ENTITY ordm     "&#186;">  <!-- U+00BA ISOnum    - masculine ordinal indicator                                           -->
  <!ENTITY raquo    "&#187;">  <!-- U+00BB ISOnum    - right-pointing double angle quotation mark = right pointing guillemet -->
  <!ENTITY frac14   "&#188;">  <!-- U+00BC ISOnum    - vulgar fraction one quarter = fraction one quarter                    -->
  <!ENTITY frac12   "&#189;">  <!-- U+00BD ISOnum    - vulgar fraction one half = fraction one half                          -->
  <!ENTITY frac34   "&#190;">  <!-- U+00BE ISOnum    - vulgar fraction three quarters = fraction three quarters              -->
  <!ENTITY iquest   "&#191;">  <!-- U+00BF ISOnum    - inverted question mark = turned question mark                         -->
  <!ENTITY Agrave   "&#192;">  <!-- U+00C0 ISOlat1   - latin capital letter A with grave = latin capital letter A grave      -->
  <!ENTITY Aacute   "&#193;">  <!-- U+00C1 ISOlat1   - latin capital letter A with acute                                     -->
  <!ENTITY Acirc    "&#194;">  <!-- U+00C2 ISOlat1   - latin capital letter A with circumflex                                -->
  <!ENTITY Atilde   "&#195;">  <!-- U+00C3 ISOlat1   - latin capital letter A with tilde                                     -->
  <!ENTITY Auml     "&#196;">  <!-- U+00C4 ISOlat1   - latin capital letter A with diaeresis                                 -->
  <!ENTITY Aring    "&#197;">  <!-- U+00C5 ISOlat1   - latin capital letter A with ring above = latin capital letter A ring  -->
  <!ENTITY AElig    "&#198;">  <!-- U+00C6 ISOlat1   - latin capital letter AE = latin capital ligature AE                   -->
  <!ENTITY Ccedil   "&#199;">  <!-- U+00C7 ISOlat1   - latin capital letter C with cedilla                                   -->
  <!ENTITY Egrave   "&#200;">  <!-- U+00C8 ISOlat1   - latin capital letter E with grave                                     -->
  <!ENTITY Eacute   "&#201;">  <!-- U+00C9 ISOlat1   - latin capital letter E with acute                                     -->
  <!ENTITY Ecirc    "&#202;">  <!-- U+00CA ISOlat1   - latin capital letter E with circumflex                                -->
  <!ENTITY Euml     "&#203;">  <!-- U+00CB ISOlat1   - latin capital letter E with diaeresis                                 -->
  <!ENTITY Igrave   "&#204;">  <!-- U+00CC ISOlat1   - latin capital letter I with grave                                     -->
  <!ENTITY Iacute   "&#205;">  <!-- U+00CD ISOlat1   - latin capital letter I with acute                                     -->
  <!ENTITY Icirc    "&#206;">  <!-- U+00CE ISOlat1   - latin capital letter I with circumflex                                -->
  <!ENTITY Iuml     "&#207;">  <!-- U+00CF ISOlat1   - latin capital letter I with diaeresis                                 -->
  <!ENTITY ETH      "&#208;">  <!-- U+00D0 ISOlat1   - latin capital letter ETH                                              -->
  <!ENTITY Ntilde   "&#209;">  <!-- U+00D1 ISOlat1   - latin capital letter N with tilde                                     -->
  <!ENTITY Ograve   "&#210;">  <!-- U+00D2 ISOlat1   - latin capital letter O with grave                                     -->
  <!ENTITY Oacute   "&#211;">  <!-- U+00D3 ISOlat1   - latin capital letter O with acute                                     -->
  <!ENTITY Ocirc    "&#212;">  <!-- U+00D4 ISOlat1   - latin capital letter O with circumflex                                -->
  <!ENTITY Otilde   "&#213;">  <!-- U+00D5 ISOlat1   - latin capital letter O with tilde                                     -->
  <!ENTITY Ouml     "&#214;">  <!-- U+00D6 ISOlat1   - latin capital letter O with diaeresis                                 -->
  <!ENTITY times    "&#215;">  <!-- U+00D7 ISOnum    - multiplication sign                                                   -->
  <!ENTITY Oslash   "&#216;">  <!-- U+00D8 ISOlat1   - latin capital letter O with stroke = latin capital letter O slash     -->
  <!ENTITY Ugrave   "&#217;">  <!-- U+00D9 ISOlat1   - latin capital letter U with grave                                     -->
  <!ENTITY Uacute   "&#218;">  <!-- U+00DA ISOlat1   - latin capital letter U with acute                                     -->
  <!ENTITY Ucirc    "&#219;">  <!-- U+00DB ISOlat1   - latin capital letter U with circumflex                                -->
  <!ENTITY Uuml     "&#220;">  <!-- U+00DC ISOlat1   - latin capital letter U with diaeresis                                 -->
  <!ENTITY Yacute   "&#221;">  <!-- U+00DD ISOlat1   - latin capital letter Y with acute                                     -->
  <!ENTITY THORN    "&#222;">  <!-- U+00DE ISOlat1   - latin capital letter THORN                                            -->
  <!ENTITY szlig    "&#223;">  <!-- U+00DF ISOlat1   - latin small letter sharp s = ess-zed                                  -->
  <!ENTITY agrave   "&#224;">  <!-- U+00E0 ISOlat1   - latin small letter a with grave = latin small letter a grave          -->
  <!ENTITY aacute   "&#225;">  <!-- U+00E1 ISOlat1   - latin small letter a with acute                                       -->
  <!ENTITY acirc    "&#226;">  <!-- U+00E2 ISOlat1   - latin small letter a with circumflex                                  -->
  <!ENTITY atilde   "&#227;">  <!-- U+00E3 ISOlat1   - latin small letter a with tilde                                       -->
  <!ENTITY auml     "&#228;">  <!-- U+00E4 ISOlat1   - latin small letter a with diaeresis                                   -->
  <!ENTITY aring    "&#229;">  <!-- U+00E5 ISOlat1   - latin small letter a with ring above = latin small letter a ring      -->
  <!ENTITY aelig    "&#230;">  <!-- U+00E6 ISOlat1   - latin small letter ae = latin small ligature ae                       -->
  <!ENTITY ccedil   "&#231;">  <!-- U+00E7 ISOlat1   - latin small letter c with cedilla                                     -->
  <!ENTITY egrave   "&#232;">  <!-- U+00E8 ISOlat1   - latin small letter e with grave                                       -->
  <!ENTITY eacute   "&#233;">  <!-- U+00E9 ISOlat1   - latin small letter e with acute                                       -->
  <!ENTITY ecirc    "&#234;">  <!-- U+00EA ISOlat1   - latin small letter e with circumflex                                  -->
  <!ENTITY euml     "&#235;">  <!-- U+00EB ISOlat1   - latin small letter e with diaeresis                                   -->
  <!ENTITY igrave   "&#236;">  <!-- U+00EC ISOlat1   - latin small letter i with grave                                       -->
  <!ENTITY iacute   "&#237;">  <!-- U+00ED ISOlat1   - latin small letter i with acute                                       -->
  <!ENTITY icirc    "&#238;">  <!-- U+00EE ISOlat1   - latin small letter i with circumflex                                  -->
  <!ENTITY iuml     "&#239;">  <!-- U+00EF ISOlat1   - latin small letter i with diaeresis                                   -->
  <!ENTITY eth      "&#240;">  <!-- U+00F0 ISOlat1   - latin small letter eth                                                -->
  <!ENTITY ntilde   "&#241;">  <!-- U+00F1 ISOlat1   - latin small letter n with tilde                                       -->
  <!ENTITY ograve   "&#242;">  <!-- U+00F2 ISOlat1   - latin small letter o with grave                                       -->
  <!ENTITY oacute   "&#243;">  <!-- U+00F3 ISOlat1   - latin small letter o with acute                                       -->
  <!ENTITY ocirc    "&#244;">  <!-- U+00F4 ISOlat1   - latin small letter o with circumflex                                  -->
  <!ENTITY otilde   "&#245;">  <!-- U+00F5 ISOlat1   - latin small letter o with tilde                                       -->
  <!ENTITY ouml     "&#246;">  <!-- U+00F6 ISOlat1   - latin small letter o with diaeresis                                   -->
  <!ENTITY divide   "&#247;">  <!-- U+00F7 ISOnum    - division sign                                                         -->
  <!ENTITY oslash   "&#248;">  <!-- U+00F8 ISOlat1   - latin small letter o with stroke = latin small letter o slash         -->
  <!ENTITY ugrave   "&#249;">  <!-- U+00F9 ISOlat1   - latin small letter u with grave                                       -->
  <!ENTITY uacute   "&#250;">  <!-- U+00FA ISOlat1   - latin small letter u with acute                                       -->
  <!ENTITY ucirc    "&#251;">  <!-- U+00FB ISOlat1   - latin small letter u with circumflex                                  -->
  <!ENTITY uuml     "&#252;">  <!-- U+00FC ISOlat1   - latin small letter u with diaeresis                                   -->
  <!ENTITY yacute   "&#253;">  <!-- U+00FD ISOlat1   - latin small letter y with acute                                       -->
  <!ENTITY thorn    "&#254;">  <!-- U+00FE ISOlat1   - latin small letter thorn                                              -->
  <!ENTITY yuml     "&#255;">  <!-- U+00FF ISOlat1   - latin small letter y with diaeresis                                   -->
  
  <!-- Latin Extended-A -->
  <!ENTITY OElig    "&#338;">  <!-- U+0152 ISOlat2   - latin capital ligature OE                                             -->
  <!ENTITY oelig    "&#339;">  <!-- U+0153 ISOlat2   - latin small ligature oe                                               -->
  
  <!-- ligature is a misnomer, this is a separate character in some languages -->
  <!ENTITY Scaron   "&#352;">  <!-- U+0160 ISOlat2   - latin capital letter S with caron                                     -->
  <!ENTITY scaron   "&#353;">  <!-- U+0161 ISOlat2   - latin small letter s with caron                                       -->
  <!ENTITY Yuml     "&#376;">  <!-- U+0178 ISOlat2   - latin capital letter Y with diaeresis                                 -->
  
  <!-- Spacing Modifier Letters -->
  <!ENTITY circ     "&#710;">  <!-- U+02C6 ISOpub    - modifier letter circumflex accent                                     -->
  <!ENTITY tilde    "&#732;">  <!-- U+02DC ISOdia    - small tilde                                                           -->
  
  <!-- General Punctuation -->
  <!ENTITY ensp     "&#8194;"> <!-- U+2002 ISOpub    - en space                                                              -->
  <!ENTITY emsp     "&#8195;"> <!-- U+2003 ISOpub    - em space                                                              -->
  <!ENTITY thinsp   "&#8201;"> <!-- U+2009 ISOpub    - thin space                                                            -->
  <!ENTITY zwnj     "&#8204;"> <!-- U+200C RFC 2070  - zero width non-joiner                                                 -->
  <!ENTITY zwj      "&#8205;"> <!-- U+200D RFC 2070  - zero width joiner                                                     -->
  <!ENTITY lrm      "&#8206;"> <!-- U+200E RFC 2070  - left-to-right mark                                                    -->
  <!ENTITY rlm      "&#8207;"> <!-- U+200F RFC 2070  - right-to-left mark                                                    -->
  <!ENTITY ndash    "&#8211;"> <!-- U+2013 ISOpub    - en dash                                                               -->
  <!ENTITY mdash    "&#8212;"> <!-- U+2014 ISOpub    - em dash                                                               -->
  <!ENTITY lsquo    "&#8216;"> <!-- U+2018 ISOnum    - left single quotation mark                                            -->
  <!ENTITY rsquo    "&#8217;"> <!-- U+2019 ISOnum    - right single quotation mark                                           -->
  <!ENTITY sbquo    "&#8218;"> <!-- U+201A NEW       - single low-9 quotation mark                                           -->
  <!ENTITY ldquo    "&#8220;"> <!-- U+201C ISOnum    - left double quotation mark                                            -->
  <!ENTITY rdquo    "&#8221;"> <!-- U+201D ISOnum    - right double quotation mark,                                          -->
  <!ENTITY bdquo    "&#8222;"> <!-- U+201E NEW       - double low-9 quotation mark                                           -->
  <!ENTITY dagger   "&#8224;"> <!-- U+2020 ISOpub    - dagger                                                                -->
  <!ENTITY Dagger   "&#8225;"> <!-- U+2021 ISOpub    - double dagger                                                         -->
  <!ENTITY permil   "&#8240;"> <!-- U+2030 ISOtech   - per mille sign                                                        -->
  <!ENTITY lsaquo   "&#8249;"> <!-- U+2039 ISO prop. - single left-pointing angle quotation mark                             -->
  
  <!-- lsaquo is proposed but not yet ISO standardized -->
  <!ENTITY rsaquo   "&#8250;"> <!-- U+203A ISO prop. -   single right-pointing angle quotation mark                          -->
  
  <!-- rsaquo is proposed but not yet ISO standardized -->
  <!ENTITY euro     "&#8364;"> <!-- U+20AC NEW       -   euro sign                                                           -->
  
  <!-- Latin Extended-B -->
  <!ENTITY fnof     "&#402;">  <!-- U+0192 ISOtech   - latin small f with hook = function = florin                           -->
  
  <!-- Greek -->
  <!ENTITY Alpha    "&#913;">  <!-- U+0391           - greek capital letter alpha                                            -->
  <!ENTITY Beta     "&#914;">  <!-- U+0392           - greek capital letter beta                                             -->
  <!ENTITY Gamma    "&#915;">  <!-- U+0393 ISOgrk3   - greek capital letter gamma                                            -->
  <!ENTITY Delta    "&#916;">  <!-- U+0394 ISOgrk3   - greek capital letter delta                                            -->
  <!ENTITY Epsilon  "&#917;">  <!-- U+0395           - greek capital letter epsilon                                          -->
  <!ENTITY Zeta     "&#918;">  <!-- U+0396           - greek capital letter zeta                                             -->
  <!ENTITY Eta      "&#919;">  <!-- U+0397           - greek capital letter eta                                              -->
  <!ENTITY Theta    "&#920;">  <!-- U+0398 ISOgrk3   - greek capital letter theta                                            -->
  <!ENTITY Iota     "&#921;">  <!-- U+0399           - greek capital letter iota                                             -->
  <!ENTITY Kappa    "&#922;">  <!-- U+039A           - greek capital letter kappa                                            -->
  <!ENTITY Lambda   "&#923;">  <!-- U+039B ISOgrk3   - greek capital letter lambda                                           -->
  <!ENTITY Mu       "&#924;">  <!-- U+039C           - greek capital letter mu                                               -->
  <!ENTITY Nu       "&#925;">  <!-- U+039D           - greek capital letter nu                                               -->
  <!ENTITY Xi       "&#926;">  <!-- U+039E ISOgrk3   - greek capital letter xi                                               -->
  <!ENTITY Omicron  "&#927;">  <!-- U+039F           - greek capital letter omicron                                          -->
  <!ENTITY Pi       "&#928;">  <!-- U+03A0 ISOgrk3   - greek capital letter pi                                               -->
  <!ENTITY Rho      "&#929;">  <!-- U+03A1           - greek capital letter rho                                              -->
  <!ENTITY Sigma    "&#931;">  <!-- U+03A3 ISOgrk3   - greek capital letter sigma                                            -->
  <!ENTITY Tau      "&#932;">  <!-- U+03A4           - greek capital letter tau                                              -->
  <!ENTITY Upsilon  "&#933;">  <!-- U+03A5 ISOgrk3   - greek capital letter upsilon                                          -->
  <!ENTITY Phi      "&#934;">  <!-- U+03A6 ISOgrk3   - greek capital letter phi                                              -->
  <!ENTITY Chi      "&#935;">  <!-- U+03A7           - greek capital letter chi                                              -->
  <!ENTITY Psi      "&#936;">  <!-- U+03A8 ISOgrk3   - greek capital letter psi                                              -->
  <!ENTITY Omega    "&#937;">  <!-- U+03A9 ISOgrk3   - greek capital letter omega                                            -->
  <!ENTITY alpha    "&#945;">  <!-- U+03B1 ISOgrk3   - greek small letter alpha                                              -->
  <!ENTITY beta     "&#946;">  <!-- U+03B2 ISOgrk3   - greek small letter beta                                               -->
  <!ENTITY gamma    "&#947;">  <!-- U+03B3 ISOgrk3   - greek small letter gamma                                              -->
  <!ENTITY delta    "&#948;">  <!-- U+03B4 ISOgrk3   - greek small letter delta                                              -->
  <!ENTITY epsilon  "&#949;">  <!-- U+03B5 ISOgrk3   - greek small letter epsilon                                            -->
  <!ENTITY zeta     "&#950;">  <!-- U+03B6 ISOgrk3   - greek small letter zeta                                               -->
  <!ENTITY eta      "&#951;">  <!-- U+03B7 ISOgrk3   - greek small letter eta                                                -->
  <!ENTITY theta    "&#952;">  <!-- U+03B8 ISOgrk3   - greek small letter theta                                              -->
  <!ENTITY iota     "&#953;">  <!-- U+03B9 ISOgrk3   - greek small letter iota                                               -->
  <!ENTITY kappa    "&#954;">  <!-- U+03BA ISOgrk3   - greek small letter kappa                                              -->
  <!ENTITY lambda   "&#955;">  <!-- U+03BB ISOgrk3   - greek small letter lambda                                             -->
  <!ENTITY mu       "&#956;">  <!-- U+03BC ISOgrk3   - greek small letter mu                                                 -->
  <!ENTITY nu       "&#957;">  <!-- U+03BD ISOgrk3   - greek small letter nu                                                 -->
  <!ENTITY xi       "&#958;">  <!-- U+03BE ISOgrk3   - greek small letter xi                                                 -->
  <!ENTITY omicron  "&#959;">  <!-- U+03BF NEW       - greek small letter omicron                                            -->
  <!ENTITY pi       "&#960;">  <!-- U+03C0 ISOgrk3   - greek small letter pi                                                 -->
  <!ENTITY rho      "&#961;">  <!-- U+03C1 ISOgrk3   - greek small letter rho                                                -->
  <!ENTITY sigmaf   "&#962;">  <!-- U+03C2 ISOgrk3   - greek small letter final sigma                                        -->
  <!ENTITY sigma    "&#963;">  <!-- U+03C3 ISOgrk3   - greek small letter sigma                                              -->
  <!ENTITY tau      "&#964;">  <!-- U+03C4 ISOgrk3   - greek small letter tau                                                -->
  <!ENTITY upsilon  "&#965;">  <!-- U+03C5 ISOgrk3   - greek small letter upsilon                                            -->
  <!ENTITY phi      "&#966;">  <!-- U+03C6 ISOgrk3   - greek small letter phi                                                -->
  <!ENTITY chi      "&#967;">  <!-- U+03C7 ISOgrk3   - greek small letter chi                                                -->
  <!ENTITY psi      "&#968;">  <!-- U+03C8 ISOgrk3   - greek small letter psi                                                -->
  <!ENTITY omega    "&#969;">  <!-- U+03C9 ISOgrk3   - greek small letter omega                                              -->
  <!ENTITY thetasym "&#977;">  <!-- U+03D1 NEW       - greek small letter theta symbol                                       -->
  <!ENTITY upsih    "&#978;">  <!-- U+03D2 NEW       - greek upsilon with hook symbol                                        -->
  <!ENTITY piv      "&#982;">  <!-- U+03D6 ISOgrk3   - greek pi symbol                                                       -->
  
  <!-- General Punctuation -->
  <!ENTITY bull     "&#8226;"> <!-- U+2022 ISOpub    - bullet = black small circle                                           -->
  <!ENTITY hellip   "&#8230;"> <!-- U+2026 ISOpub    - horizontal ellipsis = three dot leader                                -->
  <!ENTITY prime    "&#8242;"> <!-- U+2032 ISOtech   - prime = minutes = feet                                                -->
  <!ENTITY Prime    "&#8243;"> <!-- U+2033 ISOtech   - double prime = seconds = inches                                       -->
  <!ENTITY oline    "&#8254;"> <!-- U+203E NEW       - overline = spacing overscore                                          -->
  <!ENTITY frasl    "&#8260;"> <!-- U+2044 NEW       - fraction slash                                                        -->
  
  <!-- Letterlike Symbols -->
  <!ENTITY weierp   "&#8472;"> <!-- U+2118 ISOamso   - script capital P = power set = Weierstrass p                          -->
  <!ENTITY image    "&#8465;"> <!-- U+2111 ISOamso   - blackletter capital I = imaginary part                                -->
  <!ENTITY real     "&#8476;"> <!-- U+211C ISOamso   - blackletter capital R = real part symbol                              -->
  <!ENTITY trade    "&#8482;"> <!-- U+2122 ISOnum    - trade mark sign                                                       -->
  <!ENTITY alefsym  "&#8501;"> <!-- U+2135 NEW       - alef symbol = first transfinite cardinal                              -->
  
  <!-- Arrows -->
  <!ENTITY larr     "&#8592;"> <!-- U+2190 ISOnum    - leftwards arrow                                                       -->
  <!ENTITY uarr     "&#8593;"> <!-- U+2191 ISOnum    - upwards arrow                                                         -->
  <!ENTITY rarr     "&#8594;"> <!-- U+2192 ISOnum    - rightwards arrow                                                      -->
  <!ENTITY darr     "&#8595;"> <!-- U+2193 ISOnum    - downwards arrow                                                       -->
  <!ENTITY harr     "&#8596;"> <!-- U+2194 ISOamsa   - left right arrow                                                      -->
  <!ENTITY crarr    "&#8629;"> <!-- U+21B5 NEW       - downwards arrow with corner leftwards = carriage return               -->
  <!ENTITY lArr     "&#8656;"> <!-- U+21D0 ISOtech   - leftwards double arrow                                                -->
  <!ENTITY uArr     "&#8657;"> <!-- U+21D1 ISOamsa   - upwards double arrow                                                  -->
  <!ENTITY rArr     "&#8658;"> <!-- U+21D2 ISOtech   - rightwards double arrow                                               -->
  <!ENTITY dArr     "&#8659;"> <!-- U+21D3 ISOamsa   - downwards double arrow                                                -->
  <!ENTITY hArr     "&#8660;"> <!-- U+21D4 ISOamsa   - left right double arrow                                               -->
  
  <!-- Mathematical Operators -->
  <!ENTITY forall   "&#8704;"> <!-- U+2200 ISOtech   - for all                                                               -->
  <!ENTITY part     "&#8706;"> <!-- U+2202 ISOtech   - partial differential                                                  -->
  <!ENTITY exist    "&#8707;"> <!-- U+2203 ISOtech   - there exists                                                          -->
  <!ENTITY empty    "&#8709;"> <!-- U+2205 ISOamso   - empty set = null set = diameter                                       -->
  <!ENTITY nabla    "&#8711;"> <!-- U+2207 ISOtech   - nabla = backward difference                                           -->
  <!ENTITY isin     "&#8712;"> <!-- U+2208 ISOtech   - element of                                                            -->
  <!ENTITY notin    "&#8713;"> <!-- U+2209 ISOtech   - not an element of                                                     -->
  <!ENTITY ni       "&#8715;"> <!-- U+220B ISOtech   - contains as member                                                    -->
  <!ENTITY prod     "&#8719;"> <!-- U+220F ISOamsb   - n-ary product = product sign                                          -->
  <!ENTITY sum      "&#8721;"> <!-- U+2211 ISOamsb   - n-ary sumation                                                        -->
  <!ENTITY minus    "&#8722;"> <!-- U+2212 ISOtech   - minus sign                                                            -->
  <!ENTITY lowast   "&#8727;"> <!-- U+2217 ISOtech   - asterisk operator                                                     -->
  <!ENTITY radic    "&#8730;"> <!-- U+221A ISOtech   - square root = radical sign                                            -->
  <!ENTITY prop     "&#8733;"> <!-- U+221D ISOtech   - proportional to                                                       -->
  <!ENTITY infin    "&#8734;"> <!-- U+221E ISOtech   - infinity                                                              -->
  <!ENTITY ang      "&#8736;"> <!-- U+2220 ISOamso   - angle                                                                 -->
  <!ENTITY and      "&#8743;"> <!-- U+2227 ISOtech   - logical and = wedge                                                   -->
  <!ENTITY or       "&#8744;"> <!-- U+2228 ISOtech   - logical or = vee                                                      -->
  <!ENTITY cap      "&#8745;"> <!-- U+2229 ISOtech   - intersection = cap                                                    -->
  <!ENTITY cup      "&#8746;"> <!-- U+222A ISOtech   - union = cup                                                           -->
  <!ENTITY int      "&#8747;"> <!-- U+222B ISOtech   - integral                                                              -->
  <!ENTITY there4   "&#8756;"> <!-- U+2234 ISOtech   - therefore                                                             -->
  <!ENTITY sim      "&#8764;"> <!-- U+223C ISOtech   - tilde operator = varies with = similar to                             -->
  <!ENTITY cong     "&#8773;"> <!-- U+2245 ISOtech   - approximately equal to                                                -->
  <!ENTITY asymp    "&#8776;"> <!-- U+2248 ISOamsr   - almost equal to = asymptotic to                                       -->
  <!ENTITY ne       "&#8800;"> <!-- U+2260 ISOtech   - not equal to                                                          -->
  <!ENTITY equiv    "&#8801;"> <!-- U+2261 ISOtech   - identical to                                                          -->
  <!ENTITY le       "&#8804;"> <!-- U+2264 ISOtech   - less-than or equal to                                                 -->
  <!ENTITY ge       "&#8805;"> <!-- U+2265 ISOtech   - greater-than or equal to                                              -->
  <!ENTITY sub      "&#8834;"> <!-- U+2282 ISOtech   - subset of                                                             -->
  <!ENTITY sup      "&#8835;"> <!-- U+2283 ISOtech   - superset of                                                           -->
  <!ENTITY nsub     "&#8836;"> <!-- U+2284 ISOamsn   - not a subset of                                                       -->
  <!ENTITY sube     "&#8838;"> <!-- U+2286 ISOtech   - subset of or equal to                                                 -->
  <!ENTITY supe     "&#8839;"> <!-- U+2287 ISOtech   - superset of or equal to                                               -->
  <!ENTITY oplus    "&#8853;"> <!-- U+2295 ISOamsb   - circled plus = direct sum                                             -->
  <!ENTITY otimes   "&#8855;"> <!-- U+2297 ISOamsb   - circled times = vector product                                        -->
  <!ENTITY perp     "&#8869;"> <!-- U+22A5 ISOtech   - up tack = orthogonal to = perpendicular                               -->
  <!ENTITY sdot     "&#8901;"> <!-- U+22C5 ISOamsb   - dot operator                                                          -->
  
  <!-- Miscellaneous Technical -->
  <!ENTITY lceil    "&#8968;"> <!-- U+2308 ISOamsc   - left ceiling = apl upstile                                            -->
  <!ENTITY rceil    "&#8969;"> <!-- U+2309 ISOamsc   - right ceiling                                                         -->
  <!ENTITY lfloor   "&#8970;"> <!-- U+230A ISOamsc   - left floor = apl downstile                                            -->
  <!ENTITY rfloor   "&#8971;"> <!-- U+230B ISOamsc   - right floor                                                           -->
  <!ENTITY lang     "&#9001;"> <!-- U+2329 ISOtech   - left-pointing angle bracket = bra                                     -->
  <!ENTITY rang     "&#9002;"> <!-- U+232A ISOtech   - right-pointing angle bracket = ket                                    -->
  
  <!-- Geometric Shapes -->
  <!ENTITY loz      "&#9674;"> <!-- U+25CA ISOpub    - lozenge                                                               -->
  
  <!-- Miscellaneous Symbols -->
  <!ENTITY spades   "&#9824;"> <!-- U+2660 ISOpub    - black spade suit                                                      -->
  <!ENTITY clubs    "&#9827;"> <!-- U+2663 ISOpub    - black club suit = shamrock                                            -->
  <!ENTITY hearts   "&#9829;"> <!-- U+2665 ISOpub    - black heart suit = valentine                                          -->
  <!ENTITY diams    "&#9830;"> <!-- U+2666 ISOpub    - black diamond suit                                                    -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/datatypes.dtd
  
  Index: datatypes.dtd
  ===================================================================
  <!-- DTD for XML Schemas: Part 2: Datatypes -->
  <!-- Id: datatypes.dtd,v 1.14 2000/10/23 08:58:09 ht Exp  -->
  
  <!-- This DTD cannot be used on its own, it is intended only for incorporation
       in XMLSchema.dtd, q.v. -->
  
  <!-- Define all the element names, with optional prefix -->
  <!ENTITY % simpleType "%p;simpleType">
  <!ENTITY % restriction "%p;restriction">
  <!ENTITY % list "%p;list">
  <!ENTITY % union "%p;union">
  <!ENTITY % maxExclusive "%p;maxExclusive">
  <!ENTITY % minExclusive "%p;minExclusive">
  <!ENTITY % maxInclusive "%p;maxInclusive">
  <!ENTITY % minInclusive "%p;minInclusive">
  <!ENTITY % precision "%p;precision">
  <!ENTITY % scale "%p;scale">
  <!ENTITY % length "%p;length">
  <!ENTITY % minLength "%p;minLength">
  <!ENTITY % maxLength "%p;maxLength">
  <!ENTITY % enumeration "%p;enumeration">
  <!ENTITY % whiteSpace "%p;whiteSpace">
  <!ENTITY % pattern "%p;pattern">
  <!ENTITY % encoding "%p;encoding">
  <!ENTITY % period "%p;period">
  <!ENTITY % duration "%p;duration">
  
  <!-- Customisation entities for the ATTLIST of each element type.
       Define one of these if your schema takes advantage of the
       anyAttribute='##other' in the schema for schemas -->
  
  <!ENTITY % simpleTypeAttrs "">
  <!ENTITY % restrictionAttrs "">
  <!ENTITY % listAttrs "">
  <!ENTITY % unionAttrs "">
  <!ENTITY % simpleTypeAttrs "">
  <!ENTITY % maxExclusiveAttrs "">
  <!ENTITY % minExclusiveAttrs "">
  <!ENTITY % maxInclusiveAttrs "">
  <!ENTITY % minInclusiveAttrs "">
  <!ENTITY % precisionAttrs "">
  <!ENTITY % scaleAttrs "">
  <!ENTITY % lengthAttrs "">
  <!ENTITY % minLengthAttrs "">
  <!ENTITY % maxLengthAttrs "">
  <!ENTITY % enumerationAttrs "">
  <!ENTITY % whiteSpaceAttrs "">
  <!ENTITY % patternAttrs "">
  <!ENTITY % encodingAttrs "">
  <!ENTITY % periodAttrs "">
  <!ENTITY % durationAttrs "">
  <!ENTITY % appinfoAttrs "">
  <!ENTITY % documentationAttrs "">
  
  <!-- Define some entities for informative use as attribute types -->
  <!ENTITY % URIref "CDATA">
  <!ENTITY % XPathExpr "CDATA">
  <!ENTITY % QName "NMTOKEN">
  <!ENTITY % QNames "NMTOKENS">
  <!ENTITY % NCName "NMTOKEN">
  <!ENTITY % nonNegativeInteger "NMTOKEN">
  <!ENTITY % boolean "(true|false)">
  
  <!-- Note that the use of 'facet' below is less restrictive than is
       really intended:  There should in fact be no more than one of each of
       minInclusive, minExclusive, maxInclusive, maxExclusive,
       precision, scale,
       length, maxLength, minLength, encoding, period within datatype,
       and the min- and max- variants of Inclusive and Exclusive are
       mutually exclusive.
       On the other hand,  pattern and enumeration may repeat -->
  <!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
  <!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
  <!ENTITY % bounds "%minBound; | %maxBound;">
  <!ENTITY % numeric "%precision; | %scale;">
  <!ENTITY % ordered "%bounds; | %numeric;">
  <!ENTITY % unordered
     "%pattern; | %enumeration; | %whiteSpace; | %length; | %maxLength; | %minLength;
      | %encoding; | %period; | %duration;">
  <!ENTITY % facet "%ordered; | %unordered;">
  <!ENTITY % facetAttr "value CDATA #REQUIRED">
  <!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
  <!ENTITY % facetModel "(%annotation;)?">
  <!ELEMENT %simpleType; ((%annotation;)?, (%restriction; | %list; | %union;))>
  <!ATTLIST %simpleType;
      name      %NCName; #IMPLIED
      id        ID       #IMPLIED
      %simpleTypeAttrs;>
  <!-- name is required at top level -->
  <!ELEMENT %restriction; ((%annotation;)?,
                           (%restriction1; |
                            ((%simpleType;)?,(%facet;)*)),
                           (%attrDecls;))>
  <!ATTLIST %restriction;
      base      %QName;                  #IMPLIED
      id        ID       #IMPLIED
      %restrictionAttrs;>
  <!-- base and simpleType child are mutually exclusive, one is required -->
  <!-- restriction is shared between simpleType and simpleContent and -->
  <!-- complexContent (in XMLSchema.xsd). restriction1 is for the latter -->
  <!-- cases, when this is restricting a complex type, as is attrDecls -->
  <!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
  <!ATTLIST %list;
      itemType      %QName;             #IMPLIED
      id        ID       #IMPLIED
      %listAttrs;>
  <!-- itemType and simpleType child are mutually exclusive, one is required -->
  <!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
  <!ATTLIST %union;
      id            ID       #IMPLIED
      memberTypes   %QNames;            #IMPLIED
      %unionAttrs;>
  <!-- At least one item in memberTypes or one simpleType child is required -->
  
  <!ELEMENT %maxExclusive; %facetModel;>
  <!ATTLIST %maxExclusive;
          %facetAttr;
          %fixedAttr;
      %maxExclusiveAttrs;>
  <!ELEMENT %minExclusive; %facetModel;>
  <!ATTLIST %minExclusive;
          %facetAttr;
          %fixedAttr;
          %minExclusiveAttrs;>
  
  <!ELEMENT %maxInclusive; %facetModel;>
  <!ATTLIST %maxInclusive;
          %facetAttr;
          %fixedAttr;
          %maxInclusiveAttrs;>
  <!ELEMENT %minInclusive; %facetModel;>
  <!ATTLIST %minInclusive;
          %facetAttr;
          %fixedAttr;
          %minInclusiveAttrs;>
  
  <!ELEMENT %precision; %facetModel;>
  <!ATTLIST %precision;
          %facetAttr;
          %fixedAttr;
          %precisionAttrs;>
  <!ELEMENT %scale; %facetModel;>
  <!ATTLIST %scale;
          %facetAttr;
          %fixedAttr;
          %scaleAttrs;>
  
  <!ELEMENT %length; %facetModel;>
  <!ATTLIST %length;
          %facetAttr;
          %fixedAttr;
          %lengthAttrs;>
  <!ELEMENT %minLength; %facetModel;>
  <!ATTLIST %minLength;
          %facetAttr;
          %fixedAttr;
          %minLengthAttrs;>
  <!ELEMENT %maxLength; %facetModel;>
  <!ATTLIST %maxLength;
          %facetAttr;
          %fixedAttr;
          %maxLengthAttrs;>
  
  <!-- This one can be repeated -->
  <!ELEMENT %enumeration; %facetModel;>
  <!ATTLIST %enumeration;
          %facetAttr;
          %enumerationAttrs;>
  
  <!ELEMENT %whiteSpace; %facetModel;>
  <!ATTLIST %whiteSpace;
          %facetAttr;
          %whiteSpaceAttrs;>
  
  <!-- This one can be repeated -->
  <!ELEMENT %pattern; %facetModel;>
  <!ATTLIST %pattern;
          %facetAttr;
          %patternAttrs;>
  
  <!ELEMENT %encoding; %facetModel;>
  <!ATTLIST %encoding;
          %facetAttr;
          %fixedAttr;
          %encodingAttrs;>
  <!ELEMENT %period; %facetModel;>
  <!ATTLIST %period;
          %facetAttr;
          %fixedAttr;
          %periodAttrs;>
  <!ELEMENT %duration; %facetModel;>
  <!ATTLIST %duration;
          %facetAttr;
          %fixedAttr;
          %durationAttrs;>
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/document-v10.dtd
  
  Index: document-v10.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Documentation DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document
    type for software documentation for use with the Apache projects.
    It is an XML-compliant DTD and it's maintained by the Apache XML
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Documentation Vx.yz//EN"
         "http://xml.apache.org/DTD/document-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
    Many of the design patterns used in this DTD were take from the
    W3C XML Specification DTD edited by Eve Maler <elm@arbortext.com>.
  
    Where possible, great care has been used to reutilize HTML tag
    names to reduce learning efforts and to allow HTML editors to be
    used for complex authorings like tables and lists.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
  
  FIXME:
    - how can we include char entities without hardwiring them?
    - should "form" tags be included?
    - should all style-free HTML 4.0 markup tags be included?
    - how do we handle the idea of "soft" xlinks?
    - should we add "soft" links to images?
  
  CHANGE HISTORY:
    19991121 Initial version. (SM)
    19991123 Replaced "res" with more standard "strong" for emphasis. (SM)
    19991124 Added "fork" element for window forking behavior. (SM)
    19991124 Added "img-inline" element to separate from "img". (SM)
    19991129 Removed "affiliation" from "author". (SM)
    19991129 Made "author" empty and moved "name|email" as attributes. (SM)
    19991215 Simplified table section. (SM)
    19991215 Changed "img-block" in more friendly "figure". (SM)
    20000125 Added the "icon" image. (SM)
    20000126 Allowed "anchor" in all levels. (SM)
    20000404 Removed the "role" attribute from common-xxx.att. (SM)
    20000815 Allowed "code" inside "strong" and "em". (SM)
  
  COPYRIGHT:
    Copyright (c) 1999-2000 The Apache Software Foundation.
  
    Permission to copy in any form is granted provided this notice is
    included in all copies. Permission to redistribute is granted
    provided this file is distributed untouched in all its parts and
    included files.
  
  ==================================================================== -->
  
  
  
  
  <!-- =============================================================== -->
  <!-- Common character entities (included from external file) -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers of ISO latin char sets -->
  <!ENTITY % charEntity SYSTEM "characters.ent">
  %charEntity;
  
  
  
  
  <!-- =============================================================== -->
  <!-- Userful entitieis for increased DTD readability -->
  <!-- =============================================================== -->
  
  <!ENTITY % text "#PCDATA">
  
  
  <!-- =============================================================== -->
  <!-- Entities for general XML compliance -->
  <!-- =============================================================== -->
  
  <!-- Common attributes
          Every element has an ID attribute (sometimes required,
          but usually optional) for links. %common.att;
          is for common attributes where the ID is optional, and
          %common-idreq.att; is for common attributes where the
          ID is required.
  -->
  <!ENTITY % common.att
          'id                     ID              #IMPLIED
           xml:lang               NMTOKEN         #IMPLIED'>
  <!ENTITY % common-idreq.att
          'id                     ID              #REQUIRED
           xml:lang               NMTOKEN         #IMPLIED'>
  
  
  <!-- xml:space attribute ===============================================
          Indicates that the element contains white space
          that the formatter or other application should retain,
          as appropriate to its function.
  ==================================================================== -->
  <!ENTITY % xmlspace.att
          'xml:space (default|preserve) #FIXED "preserve"'>
  
  
  <!-- def attribute =====================================================
          Points to the element where the relevant definition can be
          found, using the IDREF mechanism.  %def.att; is for optional
          def attributes, and %def-req.att; is for required def
          attributes.
  ==================================================================== -->
  <!ENTITY % def.att
          'def                    IDREF           #IMPLIED'>
  <!ENTITY % def-req.att
          'def                    IDREF           #REQUIRED'>
  
  
  
  <!-- ref attribute =====================================================
          Points to the element where more information can be found,
          using the IDREF mechanism.  %ref.att; is for optional
          ref attributes, and %ref-req.att; is for required ref
          attributes.
  ================================================================== -->
  <!ENTITY % ref.att
          'ref                    IDREF           #IMPLIED'>
  <!ENTITY % ref-req.att
          'ref                    IDREF           #REQUIRED'>
  
  
  <!-- =============================================================== -->
  <!-- Entities for XLink compliance -->
  <!-- =============================================================== -->
  
  <!ENTITY % xlink-simple.att
          'type      (simple|extended|locator|arc) #FIXED "simple"
           href      CDATA                         #IMPLIED
           role      CDATA                         #IMPLIED
           title     CDATA                         #IMPLIED '>
  <!--    'xmlns     CDATA                         #FIXED "http://www.w3.org/XML/XLink/0.9" -->
  <!-- FIXME: brain-dead IE5 has broken support for
       namespace validation and since I use it for editing
       I remove this for now -->
  
  <!ENTITY % xlink-user-replace.att
          'show      (new|parsed|replace)   #FIXED "replace"
           actuate   (user|auto)            #FIXED "user" '>
  
  <!ENTITY % xlink-user-new.att
          'show      (new|parsed|replace)   #FIXED "new"
           actuate   (user|auto)            #FIXED "user" '>
  
  <!ENTITY % xlink-auto-parsed.att
          'show      (new|parsed|replace)   #FIXED "parsed"
           actuate   (user|auto)            #FIXED "auto" '>
  
  <!-- FIXME (SM): XLink doesn't yet cover the idea of soft links so
       introducing it here using the same namespace is _somewhat_
       illegal. Should we create it own namespace?
  -->
  <!ENTITY % xlink-soft.att
          'mode      (hard|soft)            #FIXED "soft" '>
  
  
  <!-- =============================================================== -->
  <!-- Entities for general usage -->
  <!-- =============================================================== -->
  
  
  <!-- Key attribute =====================================================
          Optionally provides a sorting or indexing key, for cases when
          the element content is inappropriate for this purpose.
  ==================================================================== -->
  <!ENTITY % key.att
          'key                    CDATA           #IMPLIED'>
  
  
  
  <!-- Title attributes ==================================================
          Indicates that the element requires to have a title.
  ==================================================================== -->
  <!ENTITY % title.att
          'title                  CDATA           #REQUIRED'>
  
  
  
  <!-- Name attributes ==================================================
          Indicates that the element requires to have a name.
  ==================================================================== -->
  <!ENTITY % name.att
          'name                   CDATA           #REQUIRED'>
  
  
  
  <!-- Email attributes ==================================================
          Indicates that the element requires to have an email.
  ==================================================================== -->
  <!ENTITY % email.att
          'email                  CDATA           #REQUIRED'>
  
  
  
  
  
  <!-- =============================================================== -->
  <!-- General definitions -->
  <!-- =============================================================== -->
  
  <!-- A person is a general human entity -->
  <!ELEMENT person EMPTY>
  <!ATTLIST person %common.att;
                   %name.att;
                   %email.att;>
  
  
  
  
  <!-- =============================================================== -->
  <!-- Content definitions -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.content.mix "">
  
  <!ENTITY % markup "strong|em|code|sub|sup">
  
  <!ENTITY % links "link|connect|jump|fork|anchor">
  
  <!ENTITY % special "br|img|icon">
  
  <!ENTITY % link-content.mix "%text;|%markup;|%special;%local.content.mix;">
  
  <!ENTITY % content.mix "%link-content.mix;|%links;">
  
      <!-- ==================================================== -->
      <!-- Phrase Markup -->
      <!-- ==================================================== -->
  
      <!-- Code (typically monospaced) -->
      <!ELEMENT code (%text;)>
      <!ATTLIST code %common.att;>
  
      <!-- Strong (typically bold) -->
      <!ELEMENT strong (%text;|code)*>
      <!ATTLIST strong %common.att;>
  
      <!-- Emphasis (typically italic) -->
      <!ELEMENT em (%text;|code)*>
      <!ATTLIST em %common.att;>
  
      <!-- Superscript (typically smaller and higher) -->
      <!ELEMENT sup (%text;)>
      <!ATTLIST sup %common.att;>
  
      <!-- Subscript (typically smaller and lower) -->
      <!ELEMENT sub (%text;)>
      <!ATTLIST sub %common.att;>
  
      <!-- FIXME (SM): should we add these HTML 4.0 markups
           which are style-free?
  
            -dfn
            -samp
            -kbd
            -var
            -cite
            -abbr
            -acronym
  
       -->
  
      <!-- ==================================================== -->
      <!-- Hypertextual Links -->
      <!-- ==================================================== -->
  
      <!-- hard replacing link (equivalent of <a ...>) -->
      <!ELEMENT link (%link-content.mix;)*>
      <!ATTLIST link %common.att;
                     %xlink-simple.att;
                     %xlink-user-replace.att;>
  
      <!-- Hard window replacing link (equivalent of <a ... target="_top">) -->
      <!ELEMENT jump (%link-content.mix;)*>
      <!ATTLIST jump %common.att;
                     %xlink-simple.att;
                     %xlink-user-new.att;>
  
      <!-- Hard window forking link (equivalent of <a ... target="_new">) -->
      <!ELEMENT fork (%link-content.mix;)*>
      <!ATTLIST fork %common.att;
                     %xlink-simple.att;
                     %xlink-user-new.att;>
  
      <!-- Anchor point (equivalent of <a name="...">) -->
      <!ELEMENT anchor EMPTY>
      <!ATTLIST anchor %common-idreq.att;>
  
      <!-- Soft link between processed pages (no equivalent in HTML) -->
      <!ELEMENT connect (%link-content.mix;)*>
      <!ATTLIST connect %common.att;
                        %xlink-simple.att;
                        %xlink-user-replace.att;
                        %xlink-soft.att;>
  
      <!-- ==================================================== -->
      <!-- Specials -->
      <!-- ==================================================== -->
  
      <!-- Breakline Object (typically forces line break) -->
      <!ELEMENT br EMPTY>
      <!ATTLIST br %common.att;>
  
      <!-- Image Object (typically an inlined image) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT img EMPTY>
      <!ATTLIST img src    CDATA  #REQUIRED
                    alt    CDATA  #REQUIRED
                    height CDATA  #IMPLIED
                    width  CDATA  #IMPLIED
                    usemap CDATA  #IMPLIED
                    ismap  (ismap) #IMPLIED
                    %common.att;>
  
      <!-- Image Icon (typically an inlined image placed as graphical item) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT icon EMPTY>
      <!ATTLIST icon src    CDATA  #REQUIRED
                     alt    CDATA  #REQUIRED
                     height CDATA  #IMPLIED
                     width  CDATA  #IMPLIED
                     %common.att;>
  
  
  
  
  <!-- =============================================================== -->
  <!-- Blocks definitions -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.blocks "">
  
  <!ENTITY % local.lists "">
  
  <!ENTITY % paragraphs "p|source|note|fixme|figure">
  
  <!ENTITY % tables "table">
  
  <!ENTITY % lists "ol|ul|sl|dl %local.lists;">
  
  <!ENTITY % blocks "anchor|%paragraphs;|%tables;|%lists; %local.blocks;">
  
      <!-- ==================================================== -->
      <!-- Paragraphs -->
      <!-- ==================================================== -->
  
      <!-- Text Paragraph (normally vertically space delimited) -->
      <!ELEMENT p (%content.mix;)*>
      <!ATTLIST p %common.att;>
  
      <!-- Source Paragraph (normally space is preserved) -->
      <!ELEMENT source (%content.mix;)*>
      <!ATTLIST source %common.att;
                       %xmlspace.att;>
  
      <!-- Note Paragraph (normally shown encapsulated) -->
      <!ELEMENT note (%content.mix;)*>
      <!ATTLIST note %common.att;>
  
      <!-- Fixme Paragraph (normally not shown) -->
      <!ELEMENT fixme (%content.mix;)*>
      <!-- the "author" attribute should match the "key" attribute of the
           <author> element -->
      <!ATTLIST fixme author CDATA #REQUIRED
                      %common.att;>
  
      <!-- ==================================================== -->
      <!-- Tables -->
      <!-- ==================================================== -->
  
      <!-- Attributes that indicate the spanning of the table cell -->
      <!ENTITY % cell.span 
          'colspan CDATA "1"
           rowspan CDATA "1"'>
  
      <!-- Table element -->
      <!ELEMENT table (caption?, tr+)>
      <!ATTLIST table %common.att;>
  
          <!-- The table title -->
          <!ELEMENT caption (%content.mix;)*>
          <!ATTLIST caption %common.att;>
  
          <!-- The table row element -->
          <!ELEMENT tr (th|td)+>
          <!ATTLIST tr %common.att;>
  
              <!-- The table row header element -->
              <!ELEMENT th (%content.mix;)*>
              <!ATTLIST th %common.att;
                           %cell.span;>
  
              <!-- The table row description element -->
              <!ELEMENT td (%content.mix;)*>
              <!ATTLIST td %common.att;
                           %cell.span;>
  
      <!-- ==================================================== -->
      <!-- Lists -->
      <!-- ==================================================== -->
  
      <!-- Unordered list (typically bulleted) -->
      <!ELEMENT ul (li|%lists;)+>
      <!--    spacing attribute:
              Use "normal" to get normal vertical spacing for items;
              use "compact" to get less spacing.  The default is dependent
              on the stylesheet. -->
      <!ATTLIST ul
              %common.att;
              spacing         (normal|compact)        #IMPLIED>
  
      <!-- Ordered list (typically numbered) -->
      <!ELEMENT ol (li|%lists;)+>
      <!--    spacing attribute:
              Use "normal" to get normal vertical spacing for items;
              use "compact" to get less spacing.  The default is dependent
              on the stylesheet. -->
      <!ATTLIST ol
              %common.att;
              spacing         (normal|compact)        #IMPLIED>
  
      <!-- Simple list (typically with no mark) -->
      <!ELEMENT sl (li|%lists;)+>
      <!ATTLIST sl %common.att;>
  
          <!-- List item -->
          <!ELEMENT li (%content.mix;|%lists;)*>
          <!ATTLIST li %common.att;>
  
      <!-- Definition list (typically two-column) -->
      <!ELEMENT dl (dt,dd)+>
      <!ATTLIST dl %common.att;>
  
          <!-- Definition term -->
          <!ELEMENT dt (%content.mix;)*>
          <!ATTLIST dt %common.att;>
  
          <!-- Definition description -->
          <!ELEMENT dd (%content.mix;)*>
          <!ATTLIST dd %common.att;>
  
      <!-- ==================================================== -->
      <!-- Special Blocks -->
      <!-- ==================================================== -->
  
      <!-- Image Block (typically a separated and centered image) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT figure EMPTY>
      <!ATTLIST figure src    CDATA  #REQUIRED
                       alt    CDATA  #REQUIRED
                       height CDATA  #IMPLIED
                       width  CDATA  #IMPLIED
                       usemap CDATA  #IMPLIED
                       ismap  (ismap) #IMPLIED
                       %common.att;>
  
  
  
  
  
  <!-- =============================================================== -->
  <!-- Document -->
  <!-- =============================================================== -->
  
  <!ELEMENT document (header?, body, footer?)>
  <!ATTLIST document %common.att;>
  
      <!-- ==================================================== -->
      <!-- Header -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.headers "">
  
      <!ELEMENT header (title, subtitle?, version?, type?, authors,
                        notice*, abstract? %local.headers;)>
      <!ATTLIST header %common.att;>
  
      <!ELEMENT title (%text;)>
      <!ATTLIST title %common.att;>
  
      <!ELEMENT subtitle (%text;)>
      <!ATTLIST subtitle %common.att;>
  
      <!ELEMENT version (%text;)>
      <!ATTLIST version %common.att;>
  
      <!ELEMENT type (%text;)>
      <!ATTLIST type %common.att;>
  
      <!ELEMENT authors (person+)>
      <!ATTLIST authors %common.att;>
  
      <!ELEMENT notice (%content.mix;)*>
      <!ATTLIST notice %common.att;>
  
      <!ELEMENT abstract (%content.mix;)*>
      <!ATTLIST abstract %common.att;>
  
      <!-- ==================================================== -->
      <!-- Body -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.sections "">
  
      <!ENTITY % sections "s1|anchor %local.sections;">
  
      <!ELEMENT body (%sections;)+>
      <!ATTLIST body %common.att;>
  
          <!ELEMENT s1 (s2|%blocks;)*>
          <!ATTLIST s1 %title.att; %common.att;>
  
              <!ELEMENT s2 (s3|%blocks;)*>
              <!ATTLIST s2 %title.att; %common.att;>
  
                  <!ELEMENT s3 (s4|%blocks;)*>
                  <!ATTLIST s3 %title.att; %common.att;>
  
                      <!ELEMENT s4 (%blocks;)*>
                      <!ATTLIST s4 %title.att; %common.att;>
  
      <!-- ==================================================== -->
      <!-- Footer -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.footers "">
  
      <!ELEMENT footer (legal %local.footers;)>
  
          <!ELEMENT legal (%content.mix;)*>
          <!ATTLIST legal %common.att;>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/faq-v10.dtd
  
  Index: faq-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache FAQ DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software FAQ's for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD FAQ Vx.yz//EN"
         "http://xml.apache.org/DTD/faq-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    FAQs represent a powerful knowledge base and a very good way of solving
    common user problems reducing messages on mail lists and reducing the effort
    required for software installation and usage. Thid DTD want to be a common
    format for FAQ interchange to allow FAQ-O-Matic-type workgroup services to 
    be published in other formats as well as enhancing data interchange.
    
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT faqs (authors?, faq)+>
  <!ATTLIST faqs %common.att; 
                 %title.att;>
  
      <!ELEMENT faq (question, answer)>
      <!ATTLIST faq %common.att;>
      
          <!ELEMENT question (%content.mix;)*>
          <!ATTLIST question %common.att;>
              
          <!ELEMENT answer (%blocks;)*>
          <!ATTLIST answer author IDREF #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/javadoc-v04draft.dtd
  
  Index: javadoc-v04draft.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache JavaDoc DTD (version 0.4-draft)
  
  PURPOSE:
    This DTD is designed to capture the output of JavaDoc as an XML document
    through the use of the JavaDocXML Doclet. The hope is that by having the
    JavaDoc documentation in an XML format, it will be easier for application
    developers working with XML to treat their java source documentation in the
    same way they treat any other XML document within their publication framework.
    
    This DTD should reflect the information contained within the RootDoc object 
    passed to the JavaDocXML Doclet by JavaDoc. The RootDoc object and the rest 
    of the javaDoc Doclet API is specified at
    
    http://java.sun.com/products/jdk/1.2/docs/tooldocs/javadoc/doclet/index.html
    
    The only information that appears to be difficult to derive from this DTD
    that is easy to obtain from the RootDoc object is the information about 
    serialization. However, this information should be derivable by manually 
    looking for the correct serialization methods and other related structures.
    
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD JavaDoc Vx.yz//EN"
         "http://xml.apache.org/DTD/javadoc-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    The authors would like to thank the Cocoon's mail list subscribers for 
    providing such great support and feedback for this DTD.
    
  AUTHORS:
    Kenneth Murphy <murphyk@umsystem.edu>
    
  FIXME:
  
  CHANGE HISTORY:
    199909?? Original idea of XML doclet. (KM)
    199910?? Initial version of this DTD. (KM)
    19991129 Cleaned up DTD. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Common Attribute Entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % name 'name CDATA #REQUIRED'>
  <!ENTITY % dimension 'dimension CDATA #REQUIRED'>
  
  <!ENTITY % abstract 'abstract (true | false) "false"'>
  <!ENTITY % anonymous 'anonymous (true | false) "false"'>
  <!ENTITY % synthetic 'synthetic (true | false) "false"'>
  <!ENTITY % static 'static (true | false) "false"'>
  <!ENTITY % final 'final (true | false) "false"'>
  <!ENTITY % transient 'transient (true | false) "false"'>
  <!ENTITY % volatile 'volatile (true | false) "false"'>
  <!ENTITY % native 'native (true | false) "false"'>
  <!ENTITY % synchronized 'synchronized (true | false) "false"'>
  
  <!ENTITY % access 'access (private | package | protected | public) "package"'>
  <!ENTITY % class.access 'access (package | public) "package"'>
  
  <!ENTITY % extensibility 'extensibility (abstract | final | default) "default"'>
  
  
  <!-- =============================================================== -->
  <!-- Javadoc -->
  <!-- =============================================================== -->
  
  <!ELEMENT javadoc (package*, class*, interface*)>
  
  <!-- =============================================================== -->
  <!-- Package -->
  <!-- =============================================================== -->
  
  <!ELEMENT package (doc?, package*, class*, interface*)>
  <!ATTLIST package %name;>
  
  <!-- =============================================================== -->
  <!-- Class -->
  <!-- =============================================================== -->
  
  <!ELEMENT class (doc?,
                   extends_class?,
                   implements?,
                   field*, 
                   constructor*, 
                   method*,
                   innerclass*)>
  <!ATTLIST class
            %name;
            %extensibility;
            %class.access;>
  
  <!ELEMENT extends_class (classref+)>
            
  <!ELEMENT innerclass (doc?,
                        extends?,
                        implements?,
                        field*, 
                        constructor*, 
                        method*)>
  <!ATTLIST innerclass
            %name;
            %access;
            %abstract;
            %anonymous;
            %final;
            %static;>
            
  <!-- =============================================================== -->
  <!-- Interface -->
  <!-- =============================================================== -->
            
  <!ELEMENT interface (doc?,
                       extends_interface?,
                       field*,
                       method*)>
  <!ATTLIST interface
            %name;
            %access;>
            
  <!ELEMENT extends_interface (interfaceref+)>
  
  <!-- =============================================================== -->
  <!-- Elements -->
  <!-- =============================================================== -->
  
  <!ELEMENT implements (interfaceref+)>
  
  <!ELEMENT throws (classref)+>
  
  <!ELEMENT classref EMPTY>
  <!ATTLIST classref %name;>
            
  <!ELEMENT interfaceref EMPTY>
  <!ATTLIST interfaceref %name;>
            
  <!ELEMENT methodref EMPTY>
  <!ATTLIST methodref %name;>
            
  <!ELEMENT packageref EMPTY>
  <!ATTLIST packageref %name;>
            
  <!ELEMENT primitive EMPTY>
  <!ATTLIST primitive
            type (void | boolean | int | long | byte | short | double | float | char) #REQUIRED>
            
  <!ELEMENT field (doc?, (classref | interfaceref | primitive))>
  <!ATTLIST field
            %name;
            %access;
            %dimension;
            %synthetic;
            %static;
            %final;
            %transient;
            %volatile;>
            
  <!ELEMENT constructor (doc?, parameter*, throws*)>
  <!ATTLIST constructor
            %name;
            %access;
            %synthetic;>
            
  <!ELEMENT method (doc?, returns, parameter*, throws*)>
  <!ATTLIST method
            %name;
            %access;
            %extensibility;
            %native;
            %synthetic;
            %static;
            %synchronized;>
            
  <!ELEMENT returns (classref | interfaceref | primitive)>
  <!ATTLIST returns %dimension;>
            
  <!ELEMENT parameter (classref | interfaceref | primitive)>
  <!ATTLIST parameter
            %name;
            %final;
            %dimension;>
            
  <!ELEMENT dimension (#PCDATA)>
  
  <!ELEMENT doc (#PCDATA | 
                 linktag |
                 authortag |
                 versiontag |
                 paramtag |
                 returntag |
                 exceptiontag |
                 throwstag |
                 seetag |
                 sincetag |
                 deprecatedtag |
                 serialtag |
                 serialfieldtag |
                 serialdatatag)*>
                 
  <!ELEMENT linktag (#PCDATA)>
  <!ATTLIST linktag
            src CDATA #REQUIRED>
            
  <!ELEMENT authortag (#PCDATA | linktag)*>
  
  <!ELEMENT versiontag (#PCDATA | linktag)*>
  
  <!ELEMENT paramtag (#PCDATA | linktag)*>
  <!ATTLIST paramtag %name;>
            
  <!ELEMENT returntag (#PCDATA | linktag)*>
  
  <!ELEMENT exceptiontag (#PCDATA | classref | linktag)*>
  
  <!ELEMENT throwstag (#PCDATA | classref | linktag)*>
  
  <!ELEMENT seetag (#PCDATA | linktag)*>
  <!ATTLIST seetag
            src CDATA #REQUIRED>
            
  <!ELEMENT sincetag (#PCDATA | linktag)*>
  
  <!ELEMENT deprecatedtag (#PCDATA | linktag)*>
  
  <!ELEMENT serialtag (#PCDATA | linktag)*>
  
  <!ELEMENT serialfieldtag (#PCDATA | linktag)*>
  <!ATTLIST serialfieldtag
            fieldname CDATA #REQUIRED
            fieldtype CDATA #REQUIRED>
            
  <!ELEMENT serialdatatag (#PCDATA | linktag)*>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/sitemap-v02.dtd
  
  Index: sitemap-v02.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Cocoon Sitemap DTD (Version 0.2)
  
  PURPOSE:
    INITIAL DRAFT DTD for the Cocoon2 sitemap.xmap files.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE map:sitemap PUBLIC
         "-//APACHE//DTD Cocoon Sitemap Vx.yz//EN"
         "sitemap-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
  * ATTENTION: This initial DTD was reverse-engineered from the various
    sitemap.xmap instances included in the current distribution. This is
    just an attempt to document the existing rules for sitemap structure.
    In many cases a very lax content model is used, simply to get around
    validation issues.
    A proper design process is still required.
  * Needed by XML editing tools for creation of reliable documents.
  * Can generate XSD once DTD is locked down.
  * We need to synchronise this DTD with the relax-ng work
    by <Bruno.Dumon@the-ecorp.com> ... cocoon-dev 2001-07-18
    http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=99545886226916&w=2
  * This DTD has been tested with various XML validating parsers.
  * The big questions (still) are: 
    "What possibilities were not included in the examples?" and 
    "What in the example sitemap.xmap files is mandatory versus optional?"
  
  AUTHORS:
    Jeffrey Ricker NG (Usonia Holdings) <rickerng@usonia.net>
    David Crossley <crossley@indexgeo.com.au>
  
  FIXME:
    - map:act is used in various contexts, so it has a loose definition
    - Completely rewrite this DTD looking from the application
      point-of-view (do not rely on this temporary initial DTD)
    - map:when and map:otherwise are shown in xdocs/sitemap.xml but are
      not used in the sitemap.xmap files
    - align elements and attributes with sitemap*.xsl
    - review all xdocs/userdocs/generators/*.xml etc. and sync with this DTD
  
  CHANGE HISTORY:
    20010715 V0.1 Initial version. (RNG)
    20011106 V0.2 Reviewed all */sitemap.xmap and added definitions (DC)
    20011106 V0.2 All elements now have "map:" prefix. (DC)
    20011106 V0.2 Incorporated comments Bruno Dumon cocoon-dev 20010718 (DC)
    20011116 V0.2 Changes from label/view discussion cocoon-dev 20011115 (DC)
    20011219 V0.2 Deprecated 'redirect-to resource'. Added 'map:call resource'(CH)
  
  ==================================================================== -->
  
  <!ELEMENT map:sitemap (map:components, map:views?, map:resources?,
                         map:action-sets?, map:pipelines)>
  <!ATTLIST map:sitemap
          xmlns:map CDATA #FIXED "http://apache.org/cocoon/sitemap/1.0"
  >
  
  <!-- =============================================================== -->
  <!-- Components -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:components (map:generators, map:transformers, map:readers,
                            map:serializers, map:selectors?, map:matchers?,
                            map:actions?)>
  <!-- RNG: must they appear in this order?
            must they all appear, even if they are empty? -->
  <!-- DC: it seems that some sitemaps do not contain all components
           e.g. documentation/sitemap.xmap does not have map:selectors -->
  
    <!-- Generators ======================================== -->
  <!ELEMENT map:generators (map:generator*)>
  <!ATTLIST map:generators
          default CDATA #IMPLIED
  >
  <!ELEMENT map:generator EMPTY>
  <!ATTLIST map:generator
          name CDATA #REQUIRED
          src CDATA #REQUIRED
          label CDATA #IMPLIED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  
  <!-- RNG: with all attributes, which are required and which are implied? -->
  
    <!-- Transformers ====================================== -->
  <!ELEMENT map:transformers (map:transformer*)>
  <!ATTLIST map:transformers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:transformer ANY>
  <!-- RNG: surely the content is not ANY. However, there were so many
            children here that I did not know where to begin -->
  <!-- DC: here are some that are currently used -->
  <!ELEMENT use-store (#PCDATA)>
  <!ELEMENT use-request-parameters (#PCDATA)>
  <!ELEMENT use-browser-capabilities-db (#PCDATA)>
  <!ELEMENT catalogue-name (#PCDATA)>
  <!ELEMENT catalogue-location (#PCDATA)>
  <!ATTLIST map:transformer
          name CDATA #REQUIRED
          src CDATA #REQUIRED
          label CDATA #IMPLIED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  
    <!-- Readers =========================================== -->
  <!ELEMENT map:readers (map:reader*)>
  <!ATTLIST map:readers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:reader EMPTY>
  <!-- RNG: does reader ever have children? Its peers do. -->
  <!ATTLIST map:reader
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  
    <!-- Serializers ======================================= -->
  <!ELEMENT map:serializers (map:serializer*)>
  <!ATTLIST map:serializers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:serializer (doctype-public|doctype-system|encoding|
                            omit-xml-declaration|parameter)*>
  <!-- RNG: are these the only children of serializer? -->
  <!ATTLIST map:serializer
          name CDATA #REQUIRED
          mime-type CDATA #REQUIRED
          src CDATA #REQUIRED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  <!ELEMENT doctype-public (#PCDATA)>
  <!ELEMENT doctype-system (#PCDATA)>
  <!ELEMENT encoding (#PCDATA)>
  <!ELEMENT omit-xml-declaration (#PCDATA)>
  <!ELEMENT parameter EMPTY>
  <!ATTLIST parameter
          name CDATA #REQUIRED
          value CDATA #REQUIRED
          type CDATA #IMPLIED
  >
  
    <!-- Selectors ========================================= -->
  <!ELEMENT map:selectors (map:selector*)>
  <!ATTLIST map:selectors
          default CDATA #IMPLIED
  >
  <!ELEMENT map:selector (browser*)>
  <!ATTLIST map:selector
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  <!ELEMENT browser EMPTY>
  <!ATTLIST browser
          name CDATA #REQUIRED
          useragent CDATA #REQUIRED
  >
  
    <!-- Matchers ========================================== -->
  <!ELEMENT map:matchers (map:matcher*)>
  <!ATTLIST map:matchers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:matcher (attribute-name|parameter-name|header-name)*>
  <!ATTLIST map:matcher
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  <!ELEMENT attribute-name (#PCDATA)>
  <!ELEMENT parameter-name (#PCDATA)>
  <!ELEMENT header-name (#PCDATA)>
  
    <!-- Actions =========================================== -->
  <!ELEMENT map:actions (map:action*)>
  <!ATTLIST map:actions
          default CDATA #IMPLIED
  >
  <!ELEMENT map:action EMPTY>
  <!ATTLIST map:action
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  
  <!-- =============================================================== -->
  <!-- Views -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:views (map:view*)>
  <!ELEMENT map:view (map:transform*,map:serialize)>
  <!ATTLIST map:view
          name CDATA #REQUIRED
          from-label CDATA #IMPLIED
          from-position (first|last) "last"
  >
  <!ELEMENT map:serialize (map:parameter*)>
  <!ATTLIST map:serialize
          type CDATA #REQUIRED
          mime-type CDATA #IMPLIED
          status-code CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Resources -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:resources (map:resource*)>
  <!ELEMENT map:resource ((map:generate,map:transform+,map:serialize) | map:act)>
  <!ATTLIST map:resource
          name CDATA #REQUIRED
  >
  <!-- generate and transform defined in PIPELINE section -->
  
  <!-- =============================================================== -->
  <!-- Action Sets -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:action-sets (map:action-set*)>
  <!ELEMENT map:action-set (map:act+)>
  <!ATTLIST map:action-set
          name CDATA #REQUIRED
  >
  <!ELEMENT map:act (map:parameter|map:redirect-to|map:call|map:generate|
                     map:transform|map:serialize|map:act|map:match)*>
  <!ATTLIST map:act
          type CDATA #IMPLIED
          action CDATA #IMPLIED
          set CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Pipelines -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:pipelines (map:pipeline*)>
  <!ELEMENT map:pipeline (map:match*, map:handle-errors?)>
  
  <!ELEMENT map:match (map:mount | map:redirect-to | map:call | map:generate |
                       map:transform | map:serialize | map:read |
                       map:aggregate | map:act | map:match)*>
  <!-- RNG: It seemed from the example that match should be defined as
    match (map:mount*|map:redirect-to*|(map:generate*,map:transform*,map:serialize*)*|map:read*|map:aggregate*)
    but I have no way of knowing.
  -->
  <!-- DC: Now map:act complicates the content model even further -->
  <!ATTLIST map:match
          type CDATA #IMPLIED
          pattern CDATA #REQUIRED
  >
  
  <!-- map:act is already defined in the Action Sets section -->
  
  <!ELEMENT map:mount EMPTY>
  <!ATTLIST map:mount
          uri-prefix CDATA #REQUIRED
          src CDATA #REQUIRED
          reload-method (synchron|asynchron) "asynchron"
          check-reload (true|false|yes|no) "no"
  >
  
  <!ELEMENT map:redirect-to EMPTY>
  <!ATTLIST map:redirect-to
          uri CDATA #IMPLIED
          session (true|false|yes|no) "no"
  >
  <!-- CH: redirects to resources are now deprecated
  <!ATTLIST map:redirect-to
          uri CDATA #IMPLIED
          resource CDATA #IMPLIED
          target CDATA #IMPLIED
          session (true|false|yes|no) "no"
  >
  -->
  
  <!ELEMENT map:call (map:parameter*)>
  <!ATTLIST map:call
          resource CDATA #REQUIRED
  >
  
  <!ELEMENT map:generate (map:parameter*)>
  <!ATTLIST map:generate
          type CDATA #IMPLIED
          src CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  <!ELEMENT map:parameter EMPTY>
  <!ATTLIST map:parameter
          name CDATA #REQUIRED
          value CDATA #REQUIRED
  >
  
  <!ELEMENT map:transform (map:parameter*)>
  <!ATTLIST map:transform
          type CDATA #IMPLIED
          src CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  
  <!-- map:serialize is already defined in VIEWS section -->
  
  <!ELEMENT map:read EMPTY>
  <!ATTLIST map:read
          src CDATA #REQUIRED
          mime-type CDATA #REQUIRED
          type CDATA #IMPLIED
  >
  
  <!ELEMENT map:aggregate (map:part*)>
  <!ATTLIST map:aggregate
          element CDATA #IMPLIED
          prefix CDATA #IMPLIED
          ns CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  <!ELEMENT map:part EMPTY>
  <!ATTLIST map:part
          src CDATA #IMPLIED
          element CDATA #IMPLIED
          ns CDATA #IMPLIED
          strip-root CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  
  <!ELEMENT map:handle-errors (map:generate*,map:transform*,map:serialize*)>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/specification-v10.dtd
  
  Index: specification-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Specification DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software specifications for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Specification Vx.yz//EN"
         "http://xml.apache.org/DTD/specification-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- extend the local.xxx entities -->
  <!ENTITY % local.lists "|bl">
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT specification (header?, body, appendices?, footer?)>
  <!ATTLIST specification %common.att;>
  
      <!ELEMENT appendices (%sections;)+>
      <!ATTLIST appendices %common.att;>
  
  <!-- =============================================================== -->
  <!-- Bibliography List -->
  <!-- =============================================================== -->
  
      <!-- Bibliography list -->
      <!ELEMENT bl (bi)+>
      <!ATTLIST bl %common.att;>
  
          <!-- Book item -->
          <!ELEMENT bi EMPTY>
          <!ATTLIST bi %common.att;
                       %name.att;
                       %title.att;
                       %xlink-simple.att;
                       %xlink-user-new.att;
                       authors CDATA #REQUIRED
                       date    CDATA #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/svg-cocoon-v11.dtd
  
  Index: svg-cocoon-v11.dtd
  ===================================================================
  <!--
  
  PURPOSE:
  This is a minimal SVG DTD intended solely for Apache Cocoon internal use.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE svg PUBLIC
         "-//APACHE//DTD Cocoon SVG minimal Vx.yz//EN"
         "http://xml.apache.org/DTD/svg-cocoon-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
  The Official SVG DTD is using some entities that cannot yet be resolved
  so this is a hack DTD to get us started. We are only using this DTD to
  enable validation during "build docs" because every XML instance must
  declare its ruleset.
  
  This initial minimal DTD has been reverse-engineered from the structure
  of the current documents at documentation/svg/*.xml
  
  See:
  http://www.w3.org/TR/2001/REC-SVG-20010904/
  http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
  
  CHANGE HISTORY:
    20011031 1.0 Initial version (DC)
    20011102 1.1 Added more elements for new svg/*.xml from Klaus (DC)
  -->
  
  <!ELEMENT svg (defs|image|g|rect|text)*>
  <!ELEMENT defs (filter)*>
  <!ELEMENT filter (feGaussianBlur)*>
  <!ELEMENT feGaussianBlur EMPTY>
  <!ELEMENT g (path)*>
  <!ELEMENT path EMPTY>
  <!ELEMENT image EMPTY>
  <!ELEMENT rect EMPTY>
  <!ELEMENT text (label?)>
  <!ELEMENT label EMPTY>
  
  <!ATTLIST svg height CDATA #REQUIRED
                width CDATA #REQUIRED
                xmlns:xlink CDATA #IMPLIED
  >
   <!--  yikes ... this breaks build docs                            -->
   <!--            just like hacking the official DTD to add <label> -->
   <!--            see email 2001-11-08                              -->
   <!--              xmlns CDATA #FIXED "http://www.w3.org/2000/svg" -->
  
  <!ATTLIST filter id ID #IMPLIED
  >
  <!ATTLIST feGaussianBlur in CDATA #IMPLIED
                stdDeviation CDATA #IMPLIED
  >
  <!ATTLIST g transform CDATA #IMPLIED
  >
  <!ATTLIST path style CDATA #REQUIRED
                d CDATA #REQUIRED
  >
  <!ATTLIST image width CDATA #REQUIRED
                height CDATA #REQUIRED
                xlink:href CDATA #IMPLIED
  >
  <!ATTLIST rect width CDATA #REQUIRED
                height CDATA #REQUIRED
                x CDATA #IMPLIED
                y CDATA #IMPLIED
                fill CDATA #IMPLIED
                style CDATA #IMPLIED
  >
  <!ATTLIST text style CDATA #REQUIRED
                x CDATA #REQUIRED
                y CDATA #REQUIRED
                text-anchor CDATA #IMPLIED
                fill CDATA #IMPLIED
  >
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/svg10.dtd
  
  Index: svg10.dtd
  ===================================================================
  <!-- =====================================================================
    This is the DTD for SVG 1.0.
  
    The specification for SVG that corresponds to this DTD is available at:
  
      http://www.w3.org/TR/2001/REC-SVG-20010904/
  
    Copyright (c) 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
  
    For SVG 1.0:
  
      Namespace:
        http://www.w3.org/2000/svg  
  
      Public identifier:
        PUBLIC "-//W3C//DTD SVG 1.0//EN"
  
      URI for the DTD:
        http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
  ============================================================================= -->
  <!-- ==============================================================
       ENTITY DECLARATIONS: Data types 
       ============================================================== -->
  <!ENTITY % BaselineShiftValue "CDATA">
  <!-- 'baseline-shift' property/attribute value (e.g., 'baseline', 'sub', etc.) -->
  <!ENTITY % Boolean "(false | true)">
  <!-- feature specification -->
  <!ENTITY % ClassList "CDATA">
  <!-- list of classes -->
  <!ENTITY % ClipValue "CDATA">
  <!-- 'clip' property/attribute value (e.g., 'auto', rect(...)) -->
  <!ENTITY % ClipPathValue "CDATA">
  <!-- 'clip-path' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % ClipFillRule "(nonzero | evenodd | inherit)">
  <!-- 'clip-rule' or fill-rule property/attribute value -->
  <!ENTITY % ContentType "CDATA">
  <!-- media type, as per [RFC2045] -->
  <!ENTITY % Coordinate "CDATA">
  <!-- a <coordinate> -->
  <!ENTITY % Coordinates "CDATA">
  <!-- a list of <coordinate>s -->
  <!ENTITY % Color "CDATA">
  <!-- a <color> value -->
  <!ENTITY % CursorValue "CDATA">
  <!-- 'cursor' property/attribute value (e.g., 'crosshair', %URI;) -->
  <!ENTITY % EnableBackgroundValue "CDATA">
  <!-- 'enable-background' property/attribute value (e.g., 'new', 'accumulate') -->
  <!ENTITY % ExtensionList "CDATA">
  <!-- extension list specification -->
  <!ENTITY % FeatureList "CDATA">
  <!-- feature list specification -->
  <!ENTITY % FilterValue "CDATA">
  <!-- 'filter' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % FontFamilyValue "CDATA">
  <!-- 'font-family' property/attribute value (i.e., list of fonts) -->
  <!ENTITY % FontSizeValue "CDATA">
  <!-- 'font-size' property/attribute value -->
  <!ENTITY % FontSizeAdjustValue "CDATA">
  <!-- 'font-size-adjust' property/attribute value -->
  <!ENTITY % GlyphOrientationHorizontalValue "CDATA">
  <!-- 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) -->
  <!ENTITY % GlyphOrientationVerticalValue "CDATA">
  <!-- 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) -->
  <!ENTITY % Integer "CDATA">
  <!-- a <integer> -->
  <!ENTITY % KerningValue "CDATA">
  <!-- 'kerning' property/attribute value (e.g., auto | <length>) -->
  <!ENTITY % LanguageCode "NMTOKEN">
  <!-- a language code, as per [RFC3066] -->
  <!ENTITY % LanguageCodes "CDATA">
  <!-- comma-separated list of language codes, as per [RFC3066] -->
  <!ENTITY % Length "CDATA">
  <!-- a <length> -->
  <!ENTITY % Lengths "CDATA">
  <!-- a list of <length>s -->
  <!ENTITY % LinkTarget "NMTOKEN">
  <!-- link to this target -->
  <!ENTITY % MarkerValue "CDATA">
  <!-- 'marker' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % MaskValue "CDATA">
  <!-- 'mask' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % MediaDesc "CDATA">
  <!-- comma-separated list of media descriptors. -->
  <!ENTITY % Number "CDATA">
  <!-- a <number> -->
  <!ENTITY % NumberOptionalNumber "CDATA">
  <!-- list of <number>s, but at least one and at most two -->
  <!ENTITY % NumberOrPercentage "CDATA">
  <!-- a <number> or a  <percentage> -->
  <!ENTITY % Numbers "CDATA">
  <!-- a list of <number>s -->
  <!ENTITY % OpacityValue "CDATA">
  <!-- opacity value (e.g., <number>) -->
  <!ENTITY % Paint "CDATA">
  <!-- a 'fill' or 'stroke' property/attribute value: <paint> -->
  <!ENTITY % PathData "CDATA">
  <!-- a path data specification -->
  <!ENTITY % Points "CDATA">
  <!-- a list of points -->
  <!ENTITY % PreserveAspectRatioSpec "CDATA">
  <!-- 'preserveAspectRatio' attribute specification -->
  <!ENTITY % Script "CDATA">
  <!-- script expression -->
  <!ENTITY % SpacingValue "CDATA">
  <!-- 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) -->
  <!ENTITY % StrokeDashArrayValue "CDATA">
  <!-- 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) -->
  <!ENTITY % StrokeDashOffsetValue "CDATA">
  <!-- 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>) -->
  <!ENTITY % StrokeMiterLimitValue "CDATA">
  <!-- 'stroke-miterlimit' property/attribute value (e.g., <number>) -->
  <!ENTITY % StrokeWidthValue "CDATA">
  <!-- 'stroke-width' property/attribute value (e.g., <length>) -->
  <!ENTITY % StructuredText "content CDATA #FIXED 'structured text'">
  <!ENTITY % StyleSheet "CDATA">
  <!-- style sheet data -->
  <!ENTITY % SVGColor "CDATA">
  <!-- An SVG color value (RGB plus optional ICC) -->
  <!ENTITY % Text "CDATA">
  <!-- arbitrary text string -->
  <!ENTITY % TextDecorationValue "CDATA">
  <!-- 'text-decoration' property/attribute value (e.g., 'none', 'underline') -->
  <!ENTITY % TransformList "CDATA">
  <!-- list of transforms -->
  <!ENTITY % URI "CDATA">
  <!-- a Uniform Resource Identifier, see [URI] -->
  <!ENTITY % ViewBoxSpec "CDATA">
  <!-- 'viewBox' attribute specification -->
  <!-- ==============================================================
       ENTITY DECLARATIONS: Collections of common attributes 
       ============================================================== -->
  <!-- All elements have an ID. -->
  <!ENTITY % stdAttrs "id ID #IMPLIED
    xml:base %URI; #IMPLIED">
  <!-- Common attributes for elements that might contain character data content. -->
  <!ENTITY % langSpaceAttrs "xml:lang %LanguageCode; #IMPLIED
    xml:space (default|preserve) #IMPLIED">
  <!-- Common attributes to check for system capabilities. -->
  <!ENTITY % testAttrs "requiredFeatures %FeatureList; #IMPLIED
    requiredExtensions %ExtensionList; #IMPLIED
    systemLanguage %LanguageCodes; #IMPLIED">
  <!-- For most uses of URI referencing:
          standard XLink attributes other than xlink:href. -->
  <!ENTITY % xlinkRefAttrs "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
    xlink:type (simple) #FIXED 'simple' 
    xlink:role %URI; #IMPLIED
    xlink:arcrole %URI; #IMPLIED
    xlink:title CDATA #IMPLIED
    xlink:show (other) 'other'
    xlink:actuate (onLoad) #FIXED 'onLoad'">
  <!-- Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' -->
  <!ENTITY % xlinkRefAttrsEmbed "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
    xlink:type (simple) #FIXED 'simple' 
    xlink:role %URI; #IMPLIED
    xlink:arcrole %URI; #IMPLIED
    xlink:title CDATA #IMPLIED
    xlink:show (embed) 'embed'
    xlink:actuate (onLoad) #FIXED 'onLoad'">
  <!ENTITY % graphicsElementEvents "onfocusin %Script; #IMPLIED
     onfocusout %Script; #IMPLIED
     onactivate %Script; #IMPLIED
     onclick %Script; #IMPLIED
     onmousedown %Script; #IMPLIED
     onmouseup %Script; #IMPLIED
     onmouseover %Script; #IMPLIED
     onmousemove %Script; #IMPLIED
     onmouseout %Script; #IMPLIED
     onload %Script; #IMPLIED">
  <!ENTITY % documentEvents "onunload %Script; #IMPLIED
     onabort %Script; #IMPLIED
     onerror %Script; #IMPLIED
     onresize %Script; #IMPLIED
     onscroll %Script; #IMPLIED
     onzoom %Script; #IMPLIED">
  <!ENTITY % animationEvents "onbegin %Script; #IMPLIED
     onend %Script; #IMPLIED
     onrepeat %Script; #IMPLIED">
  <!-- This entity allows for at most one of desc, title and metadata,
       supplied in any order -->
  <!ENTITY % descTitleMetadata "(((desc,((title,metadata?)|(metadata,title?))?)|
            (title,((desc,metadata?)|(metadata,desc?))?)|
            (metadata,((desc,title?)|(title,desc?))?))?)">
  <!-- ==============================================================
       ENTITY DECLARATIONS: Collections of presentation attributes 
       ============================================================== -->
  <!-- The following presentation attributes have to do with specifying color. -->
  <!ENTITY % PresentationAttributes-Color "color %Color; #IMPLIED
     color-interpolation (auto | sRGB | linearRGB | inherit) #IMPLIED
     color-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to container elements. -->
  <!ENTITY % PresentationAttributes-Containers "enable-background %EnableBackgroundValue; #IMPLIED ">
  <!-- The following presentation attributes apply to 'feFlood' elements. -->
  <!ENTITY % PresentationAttributes-feFlood "flood-color %SVGColor; #IMPLIED
     flood-opacity %OpacityValue; #IMPLIED ">
  <!-- The following presentation attributes apply to filling and stroking operations. -->
  <!ENTITY % PresentationAttributes-FillStroke "fill %Paint; #IMPLIED
     fill-opacity %OpacityValue; #IMPLIED
     fill-rule %ClipFillRule; #IMPLIED
     stroke %Paint; #IMPLIED
     stroke-dasharray %StrokeDashArrayValue; #IMPLIED
     stroke-dashoffset %StrokeDashOffsetValue; #IMPLIED
     stroke-linecap (butt | round | square | inherit) #IMPLIED
     stroke-linejoin (miter | round | bevel | inherit) #IMPLIED
     stroke-miterlimit %StrokeMiterLimitValue; #IMPLIED
     stroke-opacity %OpacityValue; #IMPLIED
     stroke-width %StrokeWidthValue; #IMPLIED ">
  <!-- The following presentation attributes apply to filter primitives. -->
  <!ENTITY % PresentationAttributes-FilterPrimitives "color-interpolation-filters (auto | sRGB | linearRGB | inherit) #IMPLIED ">
  <!-- The following presentation attributes have to do with selecting a font to use. -->
  <!ENTITY % PresentationAttributes-FontSpecification "font-family %FontFamilyValue; #IMPLIED
     font-size %FontSizeValue; #IMPLIED
     font-size-adjust %FontSizeAdjustValue; #IMPLIED
     font-stretch (normal | wider | narrower | ultra-condensed | extra-condensed |
                   condensed | semi-condensed | semi-expanded | expanded |
                   extra-expanded | ultra-expanded | inherit) #IMPLIED
     font-style (normal | italic | oblique | inherit) #IMPLIED
     font-variant (normal | small-caps | inherit) #IMPLIED
     font-weight (normal | bold | bolder | lighter | 100 | 200 | 300 |
                 400 | 500 | 600 | 700 | 800 | 900 | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to gradient 'stop' elements. -->
  <!ENTITY % PresentationAttributes-Gradients "stop-color %SVGColor; #IMPLIED
     stop-opacity %OpacityValue; #IMPLIED ">
  <!-- The following presentation attributes apply to graphics elements. -->
  <!ENTITY % PresentationAttributes-Graphics "clip-path %ClipPathValue; #IMPLIED
     clip-rule %ClipFillRule; #IMPLIED
     cursor %CursorValue; #IMPLIED
     display (inline | block | list-item | run-in | compact | marker |
              table | inline-table | table-row-group | table-header-group |
              table-footer-group | table-row | table-column-group | table-column |
              table-cell | table-caption | none | inherit) #IMPLIED
     filter %FilterValue; #IMPLIED
     image-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED
     mask %MaskValue; #IMPLIED
     opacity %OpacityValue; #IMPLIED
     pointer-events (visiblePainted | visibleFill | visibleStroke | visible |
                     painted | fill | stroke | all | none | inherit) #IMPLIED
     shape-rendering (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit) #IMPLIED
     text-rendering (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit) #IMPLIED
     visibility (visible | hidden | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to 'image' elements. -->
  <!ENTITY % PresentationAttributes-Images "color-profile CDATA #IMPLIED ">
  <!--The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements. -->
  <!ENTITY % PresentationAttributes-LightingEffects "lighting-color %SVGColor; #IMPLIED ">
  <!-- The following presentation attributes apply to marker operations. -->
  <!ENTITY % PresentationAttributes-Markers "marker-start %MarkerValue; #IMPLIED
     marker-mid %MarkerValue; #IMPLIED
     marker-end %MarkerValue; #IMPLIED ">
  <!-- The following presentation attributes apply to text content elements. -->
  <!ENTITY % PresentationAttributes-TextContentElements "alignment-baseline (baseline | top | before-edge | text-top | text-before-edge |
                          middle | bottom | after-edge | text-bottom | text-after-edge |
                          ideographic | lower | hanging | mathematical | inherit) #IMPLIED
     baseline-shift %BaselineShiftValue; #IMPLIED
     direction (ltr | rtl | inherit) #IMPLIED
     dominant-baseline (auto | autosense-script | no-change | reset|
                        ideographic | lower | hanging | mathematical | inherit ) #IMPLIED
     glyph-orientation-horizontal %GlyphOrientationHorizontalValue; #IMPLIED
     glyph-orientation-vertical %GlyphOrientationVerticalValue; #IMPLIED
     kerning %KerningValue; #IMPLIED
     letter-spacing %SpacingValue; #IMPLIED
     text-anchor (start | middle | end | inherit) #IMPLIED
     text-decoration %TextDecorationValue; #IMPLIED
     unicode-bidi (normal | embed | bidi-override | inherit) #IMPLIED
     word-spacing %SpacingValue; #IMPLIED ">
  <!-- The following presentation attributes apply to 'text' elements. -->
  <!ENTITY % PresentationAttributes-TextElements "writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to elements that establish viewports. -->
  <!ENTITY % PresentationAttributes-Viewports "clip %ClipValue; #IMPLIED
     overflow (visible | hidden | scroll | auto | inherit) #IMPLIED ">
  <!--The following represents the complete list of presentation attributes. -->
  <!ENTITY % PresentationAttributes-All "%PresentationAttributes-Color;
     %PresentationAttributes-Containers;
     %PresentationAttributes-feFlood;
     %PresentationAttributes-FillStroke;
     %PresentationAttributes-FilterPrimitives;
     %PresentationAttributes-FontSpecification;
     %PresentationAttributes-Gradients;
     %PresentationAttributes-Graphics;
     %PresentationAttributes-Images;
     %PresentationAttributes-LightingEffects;
     %PresentationAttributes-Markers;
     %PresentationAttributes-TextContentElements;
     %PresentationAttributes-TextElements;
     %PresentationAttributes-Viewports;">
  <!-- ==============================================================
       ENTITY DECLARATIONS: DTD extensions 
       ============================================================== -->
  <!-- Allow for extending the DTD with internal subset for 
       container and graphics elements -->
  <!ENTITY % ceExt "">
  <!ENTITY % geExt "">
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Document Structure 
       ============================================================== -->
  <!ENTITY % svgExt "">
  <!ELEMENT svg (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%svgExt;)* >
  <!ATTLIST svg
  	xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	zoomAndPan (disable | magnify) "magnify"
  	%graphicsElementEvents; 
  	%documentEvents; 
  	version %Number; #FIXED "1.0"
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  	contentScriptType %ContentType; "text/ecmascript"
  	contentStyleType %ContentType; "text/css"
  >
  <!ENTITY % gExt "">
  <!ELEMENT g (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%gExt;)* >
  <!ATTLIST g
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!ENTITY % defsExt "">
  <!ELEMENT defs (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%defsExt;)* >
  <!ATTLIST defs
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!ENTITY % descExt "">
  <!ELEMENT desc (#PCDATA %descExt;)* >
  <!ATTLIST desc
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%StructuredText; 
  >
  <!ENTITY % titleExt "">
  <!ELEMENT title (#PCDATA %titleExt;)* >
  <!ATTLIST title
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%StructuredText; 
  >
  <!ENTITY % symbolExt "">
  <!ELEMENT symbol (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%symbolExt;)* >
  <!ATTLIST symbol
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	%graphicsElementEvents; 
  >
  <!ENTITY % useExt "">
  <!ELEMENT use (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                     %geExt;%useExt;)*) >
  <!ATTLIST use
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!ENTITY % imageExt "">
  <!ELEMENT image (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                     %geExt;%imageExt;)*) >
  <!ATTLIST image
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Images; 
  	%PresentationAttributes-Viewports; 
  	transform %TransformList; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  >
  <!ENTITY % switchExt "">
  <!ELEMENT switch (%descTitleMetadata;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a|foreignObject|
                     animate|set|animateMotion|animateColor|animateTransform
                     %ceExt;%switchExt;)*) >
  <!ATTLIST switch
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Styling 
       ============================================================== -->
  <!ELEMENT style (#PCDATA)>
  <!ATTLIST style
  	%stdAttrs; 
  	xml:space (preserve) #FIXED "preserve"
  	type %ContentType; #REQUIRED
  	media %MediaDesc; #IMPLIED
  	title %Text; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Paths
       ============================================================== -->
  <!ENTITY % pathExt "">
  <!ELEMENT path (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%pathExt;)*) >
  <!ATTLIST path
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	d %PathData; #REQUIRED
  	pathLength %Number; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Basic Shapes
       ============================================================== -->
  <!ENTITY % rectExt "">
  <!ELEMENT rect (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%rectExt;)*) >
  <!ATTLIST rect
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  	rx %Length; #IMPLIED
  	ry %Length; #IMPLIED
  >
  <!ENTITY % circleExt "">
  <!ELEMENT circle (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%circleExt;)*) >
  <!ATTLIST circle
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	r %Length; #REQUIRED
  >
  <!ENTITY % ellipseExt "">
  <!ELEMENT ellipse (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%ellipseExt;)*) >
  <!ATTLIST ellipse
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	rx %Length; #REQUIRED
  	ry %Length; #REQUIRED
  >
  <!ENTITY % lineExt "">
  <!ELEMENT line (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%lineExt;)*) >
  <!ATTLIST line
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x1 %Coordinate; #IMPLIED
  	y1 %Coordinate; #IMPLIED
  	x2 %Coordinate; #IMPLIED
  	y2 %Coordinate; #IMPLIED
  >
  <!ENTITY % polylineExt "">
  <!ELEMENT polyline (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%polylineExt;)*) >
  <!ATTLIST polyline
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	points %Points; #REQUIRED
  >
  <!ENTITY % polygonExt "">
  <!ELEMENT polygon (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%polygonExt;)*) >
  <!ATTLIST polygon
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	points %Points; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Text
       ============================================================== -->
  <!ENTITY % textExt "">
  <!ELEMENT text (#PCDATA|desc|title|metadata|
                  tspan|tref|textPath|altGlyph|a|animate|set|
                  animateMotion|animateColor|animateTransform
                  %geExt;%textExt;)* >
  <!ATTLIST text
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%PresentationAttributes-TextElements; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % tspanExt "">
  <!ELEMENT tspan (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                  %tspanExt;)* >
  <!ATTLIST tspan
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % trefExt "">
  <!ELEMENT tref (desc|title|metadata|animate|set|animateColor
                  %trefExt;)* >
  <!ATTLIST tref
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % textPathExt "">
  <!ELEMENT textPath (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                  %textPathExt;)* >
  <!ATTLIST textPath
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%langSpaceAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	startOffset %Length; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  	method (align | stretch) #IMPLIED
  	spacing (auto | exact) #IMPLIED
  >
  <!ENTITY % altGlyphExt "">
  <!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
  <!ATTLIST altGlyph
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	glyphRef CDATA #IMPLIED
  	format CDATA #IMPLIED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  >
  <!ENTITY % altGlyphDefExt "">
  <!ELEMENT altGlyphDef ((glyphRef+|altGlyphItem+) %altGlyphDefExt;) >
  <!ATTLIST altGlyphDef
  	%stdAttrs; 
  >
  <!ENTITY % altGlyphItemExt "">
  <!ELEMENT altGlyphItem (glyphRef+ %altGlyphItemExt;) >
  <!ATTLIST altGlyphItem
  	%stdAttrs; 
  >
  <!ELEMENT glyphRef EMPTY>
  <!ATTLIST glyphRef
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-FontSpecification; 
  	glyphRef CDATA #IMPLIED
  	format CDATA #IMPLIED
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	dx %Number; #IMPLIED
  	dy %Number; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Painting: Filling, Stroking and Marker Symbols 
       ============================================================== -->
  <!ENTITY % markerExt "">
  <!ELEMENT marker (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%markerExt;)* >
  <!ATTLIST marker
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	refX %Coordinate; #IMPLIED
  	refY %Coordinate; #IMPLIED
  	markerUnits (strokeWidth | userSpaceOnUse) #IMPLIED
  	markerWidth %Length; #IMPLIED
  	markerHeight %Length; #IMPLIED
  	orient CDATA #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Color 
       ============================================================== -->
  <!ELEMENT color-profile (%descTitleMetadata;)>
  <!ATTLIST color-profile
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	local CDATA #IMPLIED
  	name CDATA #REQUIRED
  	rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Gradients and Patterns 
       ============================================================== -->
  <!ENTITY % linearGradientExt "">
  <!ELEMENT linearGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                     %linearGradientExt;)*) >
  <!ATTLIST linearGradient
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	gradientTransform %TransformList; #IMPLIED
  	x1 %Coordinate; #IMPLIED
  	y1 %Coordinate; #IMPLIED
  	x2 %Coordinate; #IMPLIED
  	y2 %Coordinate; #IMPLIED
  	spreadMethod (pad | reflect | repeat) #IMPLIED
  >
  <!ENTITY % radialGradientExt "">
  <!ELEMENT radialGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                     %radialGradientExt;)*) >
  <!ATTLIST radialGradient
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	gradientTransform %TransformList; #IMPLIED
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	r %Length; #IMPLIED
  	fx %Coordinate; #IMPLIED
  	fy %Coordinate; #IMPLIED
  	spreadMethod (pad | reflect | repeat) #IMPLIED
  >
  <!ENTITY % stopExt "">
  <!ELEMENT stop (animate|set|animateColor
                     %stopExt;)* >
  <!ATTLIST stop
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	offset %NumberOrPercentage; #REQUIRED
  >
  <!ENTITY % patternExt "">
  <!ELEMENT pattern (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%patternExt;)* >
  <!ATTLIST pattern
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	patternUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	patternContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	patternTransform %TransformList; #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Clipping, Masking and Compositing 
       ============================================================== -->
  <!ENTITY % clipPathExt "">
  <!ELEMENT clipPath (%descTitleMetadata;,
                      (path|text|rect|circle|ellipse|line|polyline|polygon|
                       use|animate|set|animateMotion|animateColor|animateTransform
                       %ceExt;%clipPathExt;)*) >
  <!ATTLIST clipPath
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%PresentationAttributes-TextElements; 
  	transform %TransformList; #IMPLIED
  	clipPathUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  >
  <!ENTITY % maskExt "">
  <!ELEMENT mask (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%maskExt;)*  >
  <!ATTLIST mask
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	maskUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	maskContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Filter Effects
       ============================================================== -->
  <!ENTITY % filterExt "">
  <!ELEMENT filter (%descTitleMetadata;,(feBlend|feFlood|
    feColorMatrix|feComponentTransfer|
    feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
    feGaussianBlur|feImage|feMerge|
    feMorphology|feOffset|feSpecularLighting|
    feTile|feTurbulence|
    animate|set
    %filterExt;)*) >
  <!ATTLIST filter
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	filterUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	primitiveUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  	filterRes %NumberOptionalNumber; #IMPLIED
  >
  <!ENTITY % filter_primitive_attributes "x %Coordinate; #IMPLIED
     y %Coordinate; #IMPLIED
     width %Length; #IMPLIED
     height %Length; #IMPLIED
     result CDATA #IMPLIED">
  <!ENTITY % filter_primitive_attributes_with_in "%filter_primitive_attributes;
     in CDATA #IMPLIED">
  <!ELEMENT feDistantLight (animate | set)*>
  <!ATTLIST feDistantLight
  	%stdAttrs; 
  	azimuth %Number; #IMPLIED
  	elevation %Number; #IMPLIED
  >
  <!ELEMENT fePointLight (animate | set)*>
  <!ATTLIST fePointLight
  	%stdAttrs; 
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	z %Number; #IMPLIED
  >
  <!ELEMENT feSpotLight (animate | set)*>
  <!ATTLIST feSpotLight
  	%stdAttrs; 
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	z %Number; #IMPLIED
  	pointsAtX %Number; #IMPLIED
  	pointsAtY %Number; #IMPLIED
  	pointsAtZ %Number; #IMPLIED
  	specularExponent %Number; #IMPLIED
  	limitingConeAngle %Number; #IMPLIED
  >
  <!ELEMENT feBlend (animate | set)*>
  <!ATTLIST feBlend
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	mode (normal | multiply | screen | darken | lighten) "normal"
  >
  <!ELEMENT feColorMatrix (animate | set)*>
  <!ATTLIST feColorMatrix
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
  	values CDATA #IMPLIED
  >
  <!ELEMENT feComponentTransfer (feFuncR?, feFuncG?, feFuncB?, feFuncA?)>
  <!ATTLIST feComponentTransfer
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ENTITY % component_transfer_function_attributes "type (identity | table | discrete | linear | gamma) #REQUIRED
     tableValues CDATA #IMPLIED
     slope %Number; #IMPLIED
     intercept %Number; #IMPLIED
     amplitude %Number; #IMPLIED
     exponent %Number; #IMPLIED
     offset %Number; #IMPLIED">
  <!ELEMENT feFuncR (animate | set)*>
  <!ATTLIST feFuncR
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncG (animate | set)*>
  <!ATTLIST feFuncG
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncB (animate | set)*>
  <!ATTLIST feFuncB
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncA (animate | set)*>
  <!ATTLIST feFuncA
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feComposite (animate | set)*>
  <!ATTLIST feComposite
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	operator (over | in | out | atop | xor | arithmetic) "over"
  	k1 %Number; #IMPLIED
  	k2 %Number; #IMPLIED
  	k3 %Number; #IMPLIED
  	k4 %Number; #IMPLIED
  >
  <!ELEMENT feConvolveMatrix (animate | set)*>
  <!ATTLIST feConvolveMatrix
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	order %NumberOptionalNumber; #REQUIRED
  	kernelMatrix CDATA #REQUIRED
  	divisor %Number; #IMPLIED
  	bias %Number; #IMPLIED
  	targetX %Integer; #IMPLIED
  	targetY %Integer; #IMPLIED
  	edgeMode (duplicate | wrap | none) "duplicate"
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  	preserveAlpha %Boolean; #IMPLIED
  >
  <!ELEMENT feDiffuseLighting ((feDistantLight | fePointLight | feSpotLight), (animate | set | animateColor)*)>
  <!ATTLIST feDiffuseLighting
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FilterPrimitives; 
  	%PresentationAttributes-LightingEffects; 
  	%filter_primitive_attributes_with_in; 
  	surfaceScale %Number; #IMPLIED
  	diffuseConstant %Number; #IMPLIED
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feDisplacementMap (animate | set)*>
  <!ATTLIST feDisplacementMap
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	scale %Number; #IMPLIED
  	xChannelSelector (R | G | B | A) "A"
  	yChannelSelector (R | G | B | A) "A"
  >
  <!ELEMENT feFlood (animate | set | animateColor)*>
  <!ATTLIST feFlood
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-feFlood; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ELEMENT feGaussianBlur (animate | set)*>
  <!ATTLIST feGaussianBlur
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	stdDeviation %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feImage (animate | set | animateTransform)*>
  <!ATTLIST feImage
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	%filter_primitive_attributes;
  >
  <!ELEMENT feMerge (feMergeNode)*>
  <!ATTLIST feMerge
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes; 
  >
  <!ELEMENT feMergeNode (animate | set)*>
  <!ATTLIST feMergeNode
  	%stdAttrs; 
  	in CDATA #IMPLIED
  >
  <!ELEMENT feMorphology (animate | set)*>
  <!ATTLIST feMorphology
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	operator (erode | dilate) "erode"
  	radius %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feOffset (animate | set)*>
  <!ATTLIST feOffset
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	dx %Number; #IMPLIED
  	dy %Number; #IMPLIED
  >
  <!ELEMENT feSpecularLighting ((feDistantLight | fePointLight | feSpotLight), (animate | set | animateColor)*)>
  <!ATTLIST feSpecularLighting
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FilterPrimitives; 
  	%PresentationAttributes-LightingEffects; 
  	%filter_primitive_attributes_with_in; 
  	surfaceScale %Number; #IMPLIED
  	specularConstant %Number; #IMPLIED
  	specularExponent %Number; #IMPLIED
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feTile (animate | set)*>
  <!ATTLIST feTile
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ELEMENT feTurbulence (animate | set)*>
  <!ATTLIST feTurbulence
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes; 
  	baseFrequency %NumberOptionalNumber; #IMPLIED
  	numOctaves %Integer; #IMPLIED
  	seed %Number; #IMPLIED
  	stitchTiles (stitch | noStitch) "noStitch"
  	type (fractalNoise | turbulence) "turbulence"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Interactivity 
       ============================================================== -->
  <!ELEMENT cursor (%descTitleMetadata;)>
  <!ATTLIST cursor
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Linking
       ============================================================== -->
  <!ENTITY % aExt "">
  <!ELEMENT a (#PCDATA|desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%aExt;)* >
  <!ATTLIST a
  	%stdAttrs; 
  	xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
  	xlink:type (simple) #FIXED "simple"
  	xlink:role %URI; #IMPLIED
  	xlink:arcrole %URI; #IMPLIED
  	xlink:title CDATA #IMPLIED
  	xlink:show (new | replace) "replace"
  	xlink:actuate (onRequest) #FIXED "onRequest"
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	target %LinkTarget; #IMPLIED
  >
  <!ENTITY % viewExt "">
  <!ELEMENT view (%descTitleMetadata;%viewExt;) >
  <!ATTLIST view
  	%stdAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	zoomAndPan (disable | magnify) "magnify"
  	viewTarget CDATA #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Scripting 
       ============================================================== -->
  <!ELEMENT script (#PCDATA)>
  <!ATTLIST script
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	type %ContentType; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Animation 
       ============================================================== -->
  <!ENTITY % animElementAttrs "%xlinkRefAttrs;
    xlink:href %URI; #IMPLIED">
  <!ENTITY % animAttributeAttrs "attributeName  CDATA  #REQUIRED
    attributeType  CDATA  #IMPLIED">
  <!ENTITY % animTimingAttrs "begin CDATA #IMPLIED 
    dur CDATA #IMPLIED
    end CDATA #IMPLIED
    min CDATA #IMPLIED
    max CDATA #IMPLIED
    restart (always | never | whenNotActive) 'always'
    repeatCount CDATA #IMPLIED 
    repeatDur CDATA #IMPLIED
    fill (remove | freeze) 'remove'">
  <!ENTITY % animValueAttrs "calcMode (discrete | linear | paced | spline) 'linear'
    values CDATA #IMPLIED
    keyTimes CDATA #IMPLIED
    keySplines CDATA #IMPLIED
    from CDATA #IMPLIED
    to CDATA #IMPLIED
    by CDATA #IMPLIED">
  <!ENTITY % animAdditionAttrs "additive       (replace | sum) 'replace'
    accumulate     (none | sum) 'none'">
  <!ENTITY % animateExt "">
  <!ELEMENT animate (%descTitleMetadata;%animateExt;) >
  <!ATTLIST animate
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  >
  <!ENTITY % setExt "">
  <!ELEMENT set (%descTitleMetadata;%setExt;) >
  <!ATTLIST set
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	to CDATA #IMPLIED
  >
  <!ENTITY % animateMotionExt "">
  <!ELEMENT animateMotion (%descTitleMetadata;,mpath? %animateMotionExt;) >
  <!ATTLIST animateMotion
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animTimingAttrs; 
  	calcMode (discrete | linear | paced | spline) "paced"
  	values CDATA #IMPLIED
  	keyTimes CDATA #IMPLIED
  	keySplines CDATA #IMPLIED
  	from CDATA #IMPLIED
  	to CDATA #IMPLIED
  	by CDATA #IMPLIED
  	%animAdditionAttrs; 
  	path CDATA #IMPLIED
  	keyPoints CDATA #IMPLIED
  	rotate CDATA #IMPLIED
  	origin CDATA #IMPLIED
  >
  <!ENTITY % mpathExt "">
  <!ELEMENT mpath (%descTitleMetadata;%mpathExt;) >
  <!ATTLIST mpath
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	externalResourcesRequired %Boolean; #IMPLIED
  >
  <!ENTITY % animateColorExt "">
  <!ELEMENT animateColor (%descTitleMetadata;%animateColorExt;) >
  <!ATTLIST animateColor
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  >
  <!ENTITY % animateTransformExt "">
  <!ELEMENT animateTransform (%descTitleMetadata;%animateTransformExt;) >
  <!ATTLIST animateTransform
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  	type (translate | scale | rotate | skewX | skewY) "translate"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Fonts 
       ============================================================== -->
  <!ENTITY % fontExt "">
  <!ELEMENT font (%descTitleMetadata;,font-face,
                     missing-glyph,(glyph|hkern|vkern %fontExt;)*) >
  <!ATTLIST font
  	%stdAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	horiz-origin-x %Number; #IMPLIED
  	horiz-origin-y %Number; #IMPLIED
  	horiz-adv-x %Number; #REQUIRED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ENTITY % glyphExt "">
  <!ELEMENT glyph (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %glyphExt;)* >
  <!ATTLIST glyph
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	unicode CDATA #IMPLIED
  	glyph-name CDATA #IMPLIED
  	d %PathData; #IMPLIED
  	orientation CDATA #IMPLIED
  	arabic-form CDATA #IMPLIED
  	lang %LanguageCodes; #IMPLIED
  	horiz-adv-x %Number; #IMPLIED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ENTITY % missing-glyphExt "">
  <!ELEMENT missing-glyph (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %missing-glyphExt;)* >
  <!ATTLIST missing-glyph
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	d %PathData; #IMPLIED
  	horiz-adv-x %Number; #IMPLIED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ELEMENT hkern EMPTY>
  <!ATTLIST hkern
  	%stdAttrs; 
  	u1 CDATA #IMPLIED
  	g1 CDATA #IMPLIED
  	u2 CDATA #IMPLIED
  	g2 CDATA #IMPLIED
  	k %Number; #REQUIRED
  >
  <!ELEMENT vkern EMPTY>
  <!ATTLIST vkern
  	%stdAttrs; 
  	u1 CDATA #IMPLIED
  	g1 CDATA #IMPLIED
  	u2 CDATA #IMPLIED
  	g2 CDATA #IMPLIED
  	k %Number; #REQUIRED
  >
  <!ELEMENT font-face (%descTitleMetadata;, font-face-src?, definition-src?)>
  <!ATTLIST font-face
  	%stdAttrs; 
  	font-family CDATA #IMPLIED
  	font-style CDATA #IMPLIED
  	font-variant CDATA #IMPLIED
  	font-weight CDATA #IMPLIED
  	font-stretch CDATA #IMPLIED
  	font-size CDATA #IMPLIED
  	unicode-range CDATA #IMPLIED
  	units-per-em %Number; #IMPLIED
  	panose-1 CDATA #IMPLIED
  	stemv %Number; #IMPLIED
  	stemh %Number; #IMPLIED
  	slope %Number; #IMPLIED
  	cap-height %Number; #IMPLIED
  	x-height %Number; #IMPLIED
  	accent-height %Number; #IMPLIED
  	ascent %Number; #IMPLIED
  	descent %Number; #IMPLIED
  	widths CDATA #IMPLIED
  	bbox CDATA #IMPLIED
  	ideographic %Number; #IMPLIED
  	alphabetic %Number; #IMPLIED
  	mathematical %Number; #IMPLIED
  	hanging %Number; #IMPLIED
  	v-ideographic %Number; #IMPLIED
  	v-alphabetic %Number; #IMPLIED
  	v-mathematical %Number; #IMPLIED
  	v-hanging %Number; #IMPLIED
  	underline-position %Number; #IMPLIED
  	underline-thickness %Number; #IMPLIED
  	strikethrough-position %Number; #IMPLIED
  	strikethrough-thickness %Number; #IMPLIED
  	overline-position %Number; #IMPLIED
  	overline-thickness %Number; #IMPLIED
  >
  <!ELEMENT font-face-src (font-face-uri | font-face-name)+>
  <!ATTLIST font-face-src
  	%stdAttrs; 
  >
  <!ELEMENT font-face-uri (font-face-format*)>
  <!ATTLIST font-face-uri
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  >
  <!ELEMENT font-face-format EMPTY>
  <!ATTLIST font-face-format
  	%stdAttrs; 
  	string CDATA #IMPLIED
  >
  <!ELEMENT font-face-name EMPTY>
  <!ATTLIST font-face-name
  	%stdAttrs; 
  	name CDATA #IMPLIED
  >
  <!ELEMENT definition-src EMPTY>
  <!ATTLIST definition-src
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Metadata 
       ============================================================== -->
  <!ENTITY % metadataExt "">
  <!ELEMENT metadata (#PCDATA %metadataExt;)* >
  <!ATTLIST metadata
  	%stdAttrs; 
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Extensibility 
       ============================================================== -->
  <!ENTITY % foreignObjectExt "">
  <!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
  <!ATTLIST foreignObject
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  	%StructuredText; 
  >
  
  
  
  1.1                  xml-forrest/src/documentation/xdocs/dtd/todo-v10.dtd
  
  Index: todo-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Todos DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software development todo lists for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Todo Vx.yz//EN"
         "http://xml.apache.org/DTD/todo-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    It is important, expecially in open developped software projects, to keep
    track of software changes that need to be done, planned features, development
    assignment, etc. in order to allow better work parallelization and create
    an entry point for people that want to help. This DTD wants to provide
    a solid foundation to provide such information and to allow it to be
    published as well as distributed in a common format.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
    - do we need anymore working contexts? (SM)
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
    19991225 Added actions element for better structure (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Common entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % priorities "showstopper|high|medium|low|wish|dream">
  
  <!ENTITY % contexts "build|docs|code|admin|design">
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT todo (devs, actions*)>
  <!ATTLIST todo %common.att; 
                 %title.att;>
  
      <!ELEMENT devs (person+)>
      <!ATTLIST devs %common.att;>
  
      <!ELEMENT actions (action+)>
      <!ATTLIST actions %common.att;
                       priority     (%priorities;)  #IMPLIED>
  
          <!ELEMENT action (%content.mix;)*>
          <!ATTLIST action %common.att;
                           assigned-to  IDREF           #IMPLIED
                           context      (%contexts;)    #REQUIRED>
      
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/java/Manifest.mf
  
  Index: Manifest.mf
  ===================================================================
  Manifest-Version: 1.0
  
  
  1.1                  xml-forrest/src/resources/javadoc.css
  
  Index: javadoc.css
  ===================================================================
  /* Apache Javadoc style sheet */
  
  /* Page background color */
  body { background-color: #FFFFFF }
  
  /* Table colors */
  .TableHeadingColor     { background: #D0D0D0 }
  .TableSubHeadingColor  { background: #E0E0E0 }
  .TableRowColor         { background: #F9F9F9 }
  
  /* Navigation bar fonts and colors */
  .NavBarCell1    { background-color:#D0D0D0;}
  .NavBarCell1Rev { background-color:#A0A0A0;}
  .NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
  .NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
  .NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#E0E0E0;}
  .NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#F0F0F0;}
  
  /* Font used in left-hand frame lists */
  .FrameTitleFont   { font-size: normal; font-family: Helvetica, Arial, sans-serif }
  .FrameHeadingFont { font-size: normal; font-family: Helvetica, Arial, sans-serif }
  .FrameItemFont    { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
  
  p { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
  h1 { font-size: 14pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
  h2 { font-size: 12pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
  h3 { font-size: 10pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
  
  /* Link colors styling */
  A:link { color: #0000A0 }          /* unvisited link */
  A:visited { color: #A00000 }       /* visited links */
  A:active { color: #00A000 }        /* active links */
  
  
  
  1.1                  xml-forrest/src/resources/entities/CatalogManager.properties
  
  Index: CatalogManager.properties
  ===================================================================
  # CatalogManager.properties
  #
  # This is the default properties file for Apache Cocoon. This facilitates local
  # configuration of application-specific catalogs. You can also use cocoon.xconf
  # to over-ride or supplement these settings.
  #
  # Apache Cocoon will automatically load a default catalog from
  #  webapps/cocoon/resources/entities/catalog
  #
  # See the documentation (catalog.html).
  
  # verbosity ... level of messages for status/debug (messages go to STDOUT)
  # The following messages are provided ...
  #  0 = none
  #  1 = ?
  #  2 = 1+, Loading catalog, Resolved public, Resolved system
  #  3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
  #  10 = 3+, List all catalog entries when loading a catalog
  # (Cocoon also logs the "Resolved public" messages.) 
  # TODO: determine all messages at each level
  #
  verbosity=1
  
  # catalogs ... list of additional catalogs to load
  # use full pathnames
  # pathname separator is always semi-colon (;) regardless of operating system
  # directory separator is always slash (/) regardless of operating system
  #
  #catalogs=/path/to/local/catalog
  catalogs=
  
  # prefer ... we prefer to use Public Identifiers for entity resolution
  #
  prefer=public
  
  # static-catalog ... see the Sun doco
  #  TODO: ? what impact does this setting have for Apache Cocoon
  #
  static-catalog=yes
  
  # allow-oasis-xml-catalog-pi ... see the Sun doco
  #  TODO: ? what impact does this setting have for Apache Cocoon
  #
  allow-oasis-xml-catalog-pi=yes
  
  # catalog-class-name ... specify an alternate class name to use
  #  Apache Cocoon does not need this setting - we already have a named class
  #
  # catalog-class-name=com.sun.resolver.Resolver
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOdia.pen
  
  Index: ISOdia.pen
  ===================================================================
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % ISOdia PUBLIC
         "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML">
       %ISOdia;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 10646 as its document character set. 
       This includes XML documents and ISO HTML documents.
       This entity set uses hexadecimal numeric character references. 
            
       Creator: Rick Jelliffe, Allette Systems
       
       Version: 1997-07-07
  -->
  
  <!ENTITY acute  "&#180;" ><!--=acute accent-->
  <!ENTITY breve  "&#x2D8;" ><!--=breve-->
  <!ENTITY caron  "&#x2C7;" ><!--=caron-->
  <!ENTITY cedil  "&#184;" ><!--=cedilla-->
  <!ENTITY circ   "^" ><!--=circumflex accent-->
  <!ENTITY dblac  "&#x2DD;" ><!--=double acute accent-->
  <!ENTITY die    "&#168;" ><!--=dieresis-->
  <!ENTITY dot    "&#x2D9;" ><!--=dot above-->
  <!ENTITY grave  "`" ><!--=grave accent-->
  <!ENTITY macr   "&#175;" ><!--=macron-->
  <!ENTITY ogon   "&#x2DB;" ><!--=ogonek-->
  <!ENTITY ring   "&#x2DA;" ><!--=ring-->
  <!ENTITY tilde  "&#x2DC;" ><!--=tilde-->
  <!ENTITY uml    "&#168;" ><!--=umlaut mark-->
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOgrk1.pen
  
  Index: ISOgrk1.pen
  ===================================================================
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  
      Creator: version from ISO 8879:1986
      
      Version: 0.21 1992-12-04
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % ISOGRK1 PUBLIC
         "ISO 9573-15:1993//ENTITIES Greek Letters//EN//XML">
       %ISOGRK1;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 10646 as its document character set. 
       This includes XML documents and ISO HTML documents.
       
       Creator: Rick Jelliffe, from HTMLlat1
       
       Version: 1997-07-07
  -->
  
  <!ENTITY agr     "&#945;" ><!--small alpha, Greek, U03B1 -->
  <!ENTITY Agr     "&#913;" ><!--capital Alpha, Greek, U0391 -->
  <!ENTITY bgr     "&#946;" ><!--small beta, Greek, U03B2 -->
  <!ENTITY Bgr     "&#914;" ><!--capital Beta, Greek, U0392 -->
  <!ENTITY ggr     "&#947;" ><!--small gamma, Greek, U03B3 -->
  <!ENTITY Ggr     "&#915;" ><!--capital Gamma, Greek, U0393 -->
  <!ENTITY dgr     "&#948;" ><!--small delta, Greek, U03B4 -->
  <!ENTITY Dgr     "&#916;" ><!--capital Delta, Greek, U0394 -->
  <!ENTITY egr     "&#949;" ><!--small epsilon, Greek, U03B5 -->
  <!ENTITY Egr     "&#917;" ><!--capital Epsilon, Greek, U0395 -->
  <!ENTITY zgr     "&#950;" ><!--small zeta, Greek, U03B6 -->
  <!ENTITY Zgr     "&#918;" ><!--capital Zeta, Greek, U0396 -->
  <!ENTITY eegr    "&#951;" ><!--small eta, Greek, U03B7 -->
  <!ENTITY EEgr    "&#919;" ><!--capital Eta, Greek, U0397 -->
  <!ENTITY thgr    "&#952;" ><!--small theta, Greek, U03B8 -->
  <!ENTITY THgr    "&#920;" ><!--capital Theta, Greek, U0398 -->
  <!ENTITY igr     "&#953;" ><!--small iota, Greek, U03B9 -->
  <!ENTITY Igr     "&#921;" ><!--capital Iota, Greek, U0399 -->
  <!ENTITY kgr     "&#954;" ><!--small kappa, Greek, U03BA -->
  <!ENTITY Kgr     "&#922;" ><!--capital Kappa, Greek, U039A -->
  <!ENTITY lgr     "&#955;" ><!--small lambda, Greek, U03BB -->
  <!ENTITY Lgr     "&#923;" ><!--capital Lambda, Greek, U039B -->
  <!ENTITY mgr     "&#956;" ><!--small mu, Greek, U03BC -->
  <!ENTITY Mgr     "&#924;" ><!--capital Mu, Greek, U039C -->
  <!ENTITY ngr     "&#957;" ><!--small nu, Greek, U03BD -->
  <!ENTITY Ngr     "&#925;" ><!--capital Nu, Greek, U039D -->
  <!ENTITY xgr     "&#958;" ><!--small xi, Greek, U03BE -->
  <!ENTITY Xgr     "&#926;" ><!--capital Xi, Greek, U039E -->
  <!ENTITY ogr     "&#959;" ><!--small omicron, Greek, U03BF -->
  <!ENTITY Ogr     "&#927;" ><!--capital Omicron, Greek, U039F -->
  <!ENTITY pgr     "&#960;" ><!--small pi, Greek, U03C0 -->
  <!ENTITY Pgr     "&#928;" ><!--capital Pi, Greek, U03A0 -->
  <!ENTITY rgr     "&#961;" ><!--small rho, Greek, U03C1 -->
  <!ENTITY Rgr     "&#929;" ><!--capital Rho, Greek, U03A1 -->
  <!ENTITY sfgr    "&#962;" ><!--final small sigma, Greek, U03C2 --> 
  <!ENTITY sgr     "&#963;" ><!--small sigma, Greek, U03C3 -->
  <!ENTITY Sgr     "&#931;" ><!--capital Sigma, Greek, U03A3 -->
  <!ENTITY tgr     "&#964;" ><!--small tau, Greek, U03C4 -->
  <!ENTITY Tgr     "&#932;" ><!--capital Tau, Greek, U03A4 -->
  <!ENTITY ugr     "&#965;" ><!--small upsilon, Greek, U03C5 -->
  <!ENTITY Ugr     "&#933;" ><!--capital Upsilon, Greek, U03A5 -->
  <!ENTITY phgr    "&#966;" ><!--small phi, Greek, U03C6 -->
  <!ENTITY PHgr    "&#934;" ><!--capital Phi, Greek, U03A6 -->
  <!ENTITY khgr    "&#967;" ><!--small chi, Greek, U03C7 -->
  <!ENTITY KHgr    "&#935;" ><!--capital Chi, Greek, U03A7 -->
  <!ENTITY psgr    "&#968;" ><!--small psi, Greek, U03C8 -->
  <!ENTITY PSgr    "&#936;" ><!--capital Psi, Greek, U03A8 -->
  <!ENTITY ohgr    "&#969;" ><!--small omega, Greek, U03C9 -->
  <!ENTITY OHgr    "&#937;" ><!--capital Omega, Greek, U03A9 -->
   
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOlat1.pen
  
  Index: ISOlat1.pen
  ===================================================================
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % HTMLlat1 PUBLIC
         "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML">
       %ISOlat1;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 8859-1 or ISO 10646 as its document character 
       set. This includes XML documents and ISO HTML documents. 
  -->
   
      <!ENTITY Agrave  "&#192;" ><!-- capital A, grave accent -->
      <!ENTITY Aacute  "&#193;" ><!-- capital A, acute accent -->
      <!ENTITY Acirc   "&#194;" ><!-- capital A, circumflex accent -->
      <!ENTITY Atilde  "&#195;" ><!-- capital A, tilde -->
      <!ENTITY Auml    "&#196;" ><!-- capital A, dieresis or umlaut mark -->
      <!ENTITY Aring   "&#197;" ><!-- capital A, ring -->
      <!ENTITY AElig   "&#198;" ><!-- capital AE diphthong (ligature) -->
      <!ENTITY Ccedil  "&#199;" ><!-- capital C, cedilla -->
      <!ENTITY Egrave  "&#200;" ><!-- capital E, grave accent -->
      <!ENTITY Eacute  "&#201;" ><!-- capital E, acute accent -->
      <!ENTITY Ecirc   "&#202;" ><!-- capital E, circumflex accent -->
      <!ENTITY Euml    "&#203;" ><!-- capital E, dieresis or umlaut mark -->
      <!ENTITY Igrave  "&#204;" ><!-- capital I, grave accent -->
      <!ENTITY Iacute  "&#205;" ><!-- capital I, acute accent -->
      <!ENTITY Icirc   "&#206;" ><!-- capital I, circumflex accent -->
      <!ENTITY Iuml    "&#207;" ><!-- capital I, dieresis or umlaut mark -->
      <!ENTITY ETH     "&#208;" ><!-- capital Eth, Icelandic -->
      <!ENTITY Ntilde  "&#209;" ><!-- capital N, tilde -->
      <!ENTITY Ograve  "&#210;" ><!-- capital O, grave accent -->
      <!ENTITY Oacute  "&#211;" ><!-- capital O, acute accent -->
      <!ENTITY Ocirc   "&#212;" ><!-- capital O, circumflex accent -->
      <!ENTITY Otilde  "&#213;" ><!-- capital O, tilde -->
      <!ENTITY Ouml    "&#214;" ><!-- capital O, dieresis or umlaut mark -->
      <!ENTITY Oslash  "&#216;" ><!-- capital O, slash -->
      <!ENTITY Ugrave  "&#217;" ><!-- capital U, grave accent -->
      <!ENTITY Uacute  "&#218;" ><!-- capital U, acute accent -->
      <!ENTITY Ucirc   "&#219;" ><!-- capital U, circumflex accent -->
      <!ENTITY Uuml    "&#220;" ><!-- capital U, dieresis or umlaut mark -->
      <!ENTITY Yacute  "&#221;" ><!-- capital Y, acute accent -->
      <!ENTITY THORN   "&#222;" ><!-- capital THORN, Icelandic -->
      <!ENTITY szlig   "&#223;" ><!-- small sharp s, German (sz ligature) -->
      <!ENTITY agrave  "&#224;" ><!-- small a, grave accent -->   
      <!ENTITY aacute  "&#225;" ><!-- small a, acute accent -->
      <!ENTITY acirc   "&#226;" ><!-- small a, circumflex accent -->
      <!ENTITY atilde  "&#227;" ><!-- small a, tilde -->
      <!ENTITY auml    "&#228;" ><!-- small a, dieresis or umlaut mark -->
      <!ENTITY aring   "&#229;" ><!-- small a, ring -->
      <!ENTITY aelig   "&#230;" ><!-- small ae diphthong (ligature) -->
      <!ENTITY ccedil  "&#231;" ><!-- small c, cedilla -->
      <!ENTITY egrave  "&#232;" ><!-- small e, grave accent -->
      <!ENTITY eacute  "&#233;" ><!-- small e, acute accent -->
      <!ENTITY ecirc   "&#234;" ><!-- small e, circumflex accent -->
      <!ENTITY euml    "&#235;" ><!-- small e, dieresis or umlaut mark -->
      <!ENTITY igrave  "&#236;" ><!-- small i, grave accent -->
      <!ENTITY iacute  "&#237;" ><!-- small i, acute accent -->
      <!ENTITY icirc   "&#238;" ><!-- small i, circumflex accent -->
      <!ENTITY iuml    "&#239;" ><!-- small i, dieresis or umlaut mark -->
      <!ENTITY eth     "&#240;" ><!-- small eth, Icelandic -->
      <!ENTITY ntilde  "&#241;" ><!-- small n, tilde -->
      <!ENTITY ograve  "&#242;" ><!-- small o, grave accent -->
      <!ENTITY oacute  "&#243;" ><!-- small o, acute accent -->
      <!ENTITY ocirc   "&#244;" ><!-- small o, circumflex accent -->
      <!ENTITY otilde  "&#245;" ><!-- small o, tilde -->
      <!ENTITY ouml    "&#246;" ><!-- small o, dieresis or umlaut mark -->
  
      <!ENTITY oslash  "&#248;" ><!-- small o, slash -->
      <!ENTITY ugrave  "&#249;" ><!-- small u, grave accent -->
      <!ENTITY uacute  "&#250;" ><!-- small u, acute accent -->
      <!ENTITY ucirc   "&#251;" ><!-- small u, circumflex accent -->
      <!ENTITY uuml    "&#252;" ><!-- small u, dieresis or umlaut mark -->
      <!ENTITY yacute  "&#253;" ><!-- small y, acute accent -->
      <!ENTITY thorn   "&#254;" ><!-- small thorn, Icelandic -->
      <!ENTITY yuml    "&#255;" ><!-- small y, dieresis or umlaut mark -->
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOnum.pen
  
  Index: ISOnum.pen
  ===================================================================
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % ISOnum PUBLIC
         "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML">
       %ISOnum;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 10646 as its document character set. 
       This includes XML documents and ISO HTML documents.
       This entity set uses hexadecimal numeric character references. 
            
       Creator: Rick Jelliffe, Allette Systems
       
       Version: 1997-07-07
  -->
  
  <!ENTITY half   "&#189;" ><!--=fraction one-half-->
  <!ENTITY frac12 "&#189;" ><!--=fraction one-half-->
  <!ENTITY frac14 "&#188;" ><!--=fraction one-quarter-->
  <!ENTITY frac34 "&#190;" ><!--=fraction three-quarters-->
  <!ENTITY frac18 "&#x215B;" > 
      <!-- or "&#xB1;&#x202;&#x2044;&#x2088;" --><!--=fraction one-eighth-->
  <!ENTITY frac38 "&#x215C;" >
      <!-- or "&#xB3;&#x2044;&#x2088;" --><!--=fraction three-eighths-->
  <!ENTITY frac58 "&#x215D;" >
      <!-- or "&#x2075;&#x2044;&#x2088;" --><!--=fraction five-eighths-->
  <!ENTITY frac78 "&#x215E;" >
      <!-- or "&#x2077;&#x2044;&#x2088;" --><!--=fraction seven-eighths-->
  
  <!ENTITY sup1   "&#185;" ><!--=superscript one-->
  <!ENTITY sup2   "&#178;" ><!--=superscript two-->
  <!ENTITY sup3   "&#179;" ><!--=superscript three-->
  
  <!ENTITY plus   "+" ><!--=plus sign B:-->
  <!ENTITY plusmn "&#xB1;" ><!--/pm B: =plus-or-minus sign-->
  <!ENTITY lt     "&#38;#60;"      ><!--=less-than sign R:-->
  <!ENTITY equals "="      ><!--=equals sign R:-->
  <!ENTITY gt     ">"      ><!--=greater-than sign R:-->
  <!ENTITY divide "&#247;" ><!--/div B: =divide sign-->
  <!ENTITY times  "&#215;" ><!--/times B: =multiply sign-->
  
  <!ENTITY curren "&#164;" ><!--=general currency sign-->
  <!ENTITY pound  "&#163;" ><!--=pound sign-->
  <!ENTITY dollar "$"      ><!--=dollar sign-->
  <!ENTITY cent   "&#162;" ><!--=cent sign-->
  <!ENTITY yen    "&#165;" ><!--/yen =yen sign-->
  
  <!ENTITY num    "#" ><!--=number sign-->
  <!ENTITY percnt "&#37;" ><!--=percent sign-->
  <!ENTITY amp    "&#38;#38;" ><!--=ampersand-->
  <!ENTITY ast    "*" ><!--/ast B: =asterisk-->
  <!ENTITY commat "@" ><!--=commercial at-->
  <!ENTITY lsqb   "[" ><!--/lbrack O: =left square bracket-->
  <!ENTITY bsol   "\" ><!--/backslash =reverse solidus-->
  <!ENTITY rsqb   "]" ><!--/rbrack C: =right square bracket-->
  <!ENTITY lcub   "{" ><!--/lbrace O: =left curly bracket-->
  <!ENTITY horbar "&#x2015;" ><!--=horizontal bar-->
  <!ENTITY verbar "|" ><!--/vert =vertical bar-->
  <!ENTITY rcub   "}" ><!--/rbrace C: =right curly bracket-->
  <!ENTITY micro  "&#181;" ><!--=micro sign-->
  <!ENTITY ohm    "&#2126;" ><!--=ohm sign-->
  <!ENTITY deg    "&#176;" ><!--=degree sign-->
  <!ENTITY ordm   "&#186;" ><!--=ordinal indicator, masculine-->
  <!ENTITY ordf   "&#170;" ><!--=ordinal indicator, feminine-->
  <!ENTITY sect   "&#167;" ><!--=section sign-->
  <!ENTITY para   "&#182;" ><!--=pilcrow (paragraph sign)-->
  <!ENTITY middot "&#183;" ><!--/centerdot B: =middle dot-->
  <!ENTITY larr   "&#x2190;" ><!--/leftarrow /gets A: =leftward arrow-->
  <!ENTITY rarr   "&#x2192;" ><!--/rightarrow /to A: =rightward arrow-->
  <!ENTITY uarr   "&#x2191;" ><!--/uparrow A: =upward arrow-->
  <!ENTITY darr   "&#x2193;" ><!--/downarrow A: =downward arrow-->
  <!ENTITY copy   "&#169;" ><!--=copyright sign-->
  <!ENTITY reg    "&#174;" ><!--/circledR =registered sign-->
  <!ENTITY trade  "&#8482;" ><!--=trade mark sign-->
  <!ENTITY brvbar "&#xA6;" ><!--=bren (vertical) bar-->
  <!ENTITY not    "&#xAC;" ><!--/neg /lnot =not sign-->
  <!ENTITY sung   "&#x266A;" ><!--=music note (sung text sign)-->
  
  <!ENTITY excl   "!" ><!--=exclamation mark-->
  <!ENTITY iexcl  "&#xA1;" ><!--=inverted exclamation mark-->
  <!ENTITY quot   '"' ><!--=quotation mark-->
  <!ENTITY apos   "'" ><!--=apostrophe-->
  <!ENTITY lpar   "(" ><!--O: =left parenthesis-->
  <!ENTITY rpar   ")" ><!--C: =right parenthesis-->
  <!ENTITY comma  "," ><!--P: =comma-->
  <!ENTITY lowbar "_" ><!--=low line-->
  <!ENTITY hyphen "&#x2010;" ><!--=hyphen-->
  <!ENTITY period "." ><!--=full stop, period-->
  <!ENTITY sol    "/" ><!--=solidus-->
  <!ENTITY colon  ":" ><!--/colon P:-->
  <!ENTITY semi   ";" ><!--=semicolon P:-->
  <!ENTITY quest  "?" ><!--=question mark-->
  <!ENTITY iquest "&#xBF;" ><!--=inverted question mark-->
  <!ENTITY laquo  "&#x2039;" ><!--=angle quotation mark, left
   But note that Unicode 1 & Maler & el Andaloussi give &#xAB; -->
  <!ENTITY raquo  "&#x203A;" ><!--=angle quotation mark, right
   But note that Unicode 1 & Maler & el Andaloussi give &#xBB; -->
  <!ENTITY lsquo  "&#x2018;" ><!--=single quotation mark, left-->
  <!ENTITY rsquo  "&#x2019;" ><!--=single quotation mark, right-->
  <!ENTITY ldquo  "&#x201C;" ><!--=double quotation mark, left-->
  <!ENTITY rdquo  "&#x201D;" ><!--=double quotation mark, right-->
  <!ENTITY nbsp   "&#160;" ><!--=no break (required) space-->
  <!ENTITY shy    "&#173;" ><!--=soft hyphen-->
  
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOpub.pen
  
  Index: ISOpub.pen
  ===================================================================
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % ISOpub PUBLIC
         "ISO 8879:1986//ENTITIES Publishing//EN//XML">
       %ISOpub;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 10646 as its document character set. 
       This includes XML documents and ISO HTML documents.
       This entity set uses hexadecimal numeric character references. 
            
       Creator: Rick Jelliffe, Allette Systems
       
       Version: 1997-07-07
  -->
  <!ENTITY emsp   "&#x2003;" ><!--=em space-->
  <!ENTITY ensp   "&#x2002;" ><!--=en space (1/2-em)-->
  <!ENTITY emsp13 "&#x2004;" ><!--=1/3-em space-->
  <!ENTITY emsp14 "&#x2005;" ><!--=1/4-em space-->
  <!ENTITY numsp  "&#x2007;" ><!--=digit space (width of a number)-->
  <!ENTITY puncsp "&#x2008;" ><!--=punctuation space (width of comma)-->
  <!ENTITY thinsp "&#x2009;" ><!--=thin space (1/6-em)-->
  <!ENTITY hairsp "&#x200A;" ><!--=hair space-->
  <!ENTITY mdash  "&#x2014;" ><!--=em dash-->
  <!ENTITY ndash  "&#x2013;" ><!--=en dash-->
  <!ENTITY dash   "&#x2010;" ><!--=hyphen (true graphic)-->
  <!ENTITY blank  "&#x2423;" ><!--=significant blank symbol-->
  <!ENTITY hellip "&#x2026;" ><!--=ellipsis (horizontal)-->
  <!ENTITY nldr   "&#x2025;" ><!--=double baseline dot (en leader)-->
  <!ENTITY frac13 "&#x2153;" ><!--=fraction one-third-->
  <!ENTITY frac23 "&#x2154;" ><!--=fraction two-thirds-->
  <!ENTITY frac15 "&#x2155;" ><!--=fraction one-fifth-->
  <!ENTITY frac25 "&#x2156;" ><!--=fraction two-fifths-->
  <!ENTITY frac35 "&#x2157;" ><!--=fraction three-fifths-->
  <!ENTITY frac45 "&#x2158;" ><!--=fraction four-fifths-->
  <!ENTITY frac16 "&#x2159;" ><!--=fraction one-sixth-->
  <!ENTITY frac56 "&#x215a;" ><!--=fraction five-sixths-->
  <!ENTITY incare "&#x2105;" ><!--=in-care-of symbol-->
  <!ENTITY block  "&#x2588;" ><!--=full block-->
  <!ENTITY uhblk  "&#x2580;" ><!--=upper half block-->
  <!ENTITY lhblk  "&#x2584;" ><!--=lower half block-->
  <!ENTITY blk14  "&#x2591;" ><!--=25% shaded block-->
  <!ENTITY blk12  "&#x2592;" ><!--=50% shaded block-->
  <!ENTITY blk34  "&#x2593;" ><!--=75% shaded block-->
  <!ENTITY marker "&#x25AE;" ><!--=histogram marker-->
  <!ENTITY cir    "&#x25CB;" ><!--/circ B: =circle, open-->
  <!ENTITY squ    "&#x25A1;" ><!--=square, open-->
  <!ENTITY rect   "&#x25AD;" ><!--=rectangle, open-->
  <!ENTITY utri   "&#x25B5;" ><!--/triangle =up triangle, open-->
  <!ENTITY dtri   "&#x25BF;" ><!--/triangledown =down triangle, open-->
  <!ENTITY star   "&#x2606;" ><!--=star, open-->
  <!ENTITY bull   "&#x2022;" ><!--/bullet B: =round bullet, filled-->
  <!ENTITY squf   "&#x25AA;" ><!--/blacksquare =sq bullet, filled-->
  <!ENTITY utrif  "&#x25B4;" ><!--/blacktriangle =up tri, filled-->
  <!ENTITY dtrif  "&#x25BE;" ><!--/blacktriangledown =dn tri, filled-->
  <!ENTITY ltrif  "&#x25C2;" ><!--/blacktriangleleft R: =l tri, filled-->
  <!ENTITY rtrif  "&#x25B8;" ><!--/blacktriangleright R: =r tri, filled-->
  <!ENTITY clubs  "&#x2663;" ><!--/clubsuit =club suit symbol-->
  <!ENTITY diams  "&#x2662;" ><!--/diamondsuit =diamond suit symbol-->
  <!ENTITY hearts "&#x2661;" ><!--/heartsuit =heart suit symbol-->
  <!ENTITY spades "&#x2660;" ><!--/spadesuit =spades suit symbol-->
  <!ENTITY malt   "&#x2720;" ><!--/maltese =maltese cross-->
  <!ENTITY dagger "&#x2020;" ><!--/dagger B: =dagger-->
  <!ENTITY Dagger "&#x2021;" ><!--/ddagger B: =double dagger-->
  <!ENTITY check  "&#x2713;" ><!--/checkmark =tick, check mark-->
  <!ENTITY cross  "&#x2717;" ><!--=ballot cross-->
  <!ENTITY sharp  "&#x266F;" ><!--/sharp =musical sharp-->
  <!ENTITY flat   "&#x266D;" ><!--/flat =musical flat-->
  <!ENTITY male   "&#x2642;" ><!--=male symbol-->
  <!ENTITY female "&#x2640;" ><!--=female symbol-->
  <!ENTITY phone  "&#x26E0;" ><!--=telephone symbol-->
  <!ENTITY telrec "&#x2315;" ><!--=telephone recorder symbol-->
  <!ENTITY copysr "&#x2117;" ><!--=sound recording copyright sign-->
  <!ENTITY caret  "&#x2041;" ><!--=caret (insertion mark)-->
  <!ENTITY lsquor "&#x201A;" ><!--=rising single quote, left (low)-->
  <!ENTITY ldquor "&#x201E;" ><!--=rising dbl quote, left (low)-->
  
  <!ENTITY fflig  "&#xFB00;" ><!--small ff ligature-->
  <!ENTITY filig  "&#xFB01;" ><!--small fi ligature-->
  <!ENTITY fjlig  "fj" ><!--small fj ligature-->
  <!ENTITY ffilig "&#xFB03;" ><!--small ffi ligature-->
  <!ENTITY ffllig "&#xFB04;" ><!--small ffl ligature-->
  <!ENTITY fllig  "&#xFB02;" ><!--small fl ligature-->
  
  <!ENTITY mldr   "&#x2025;" ><!--em leader-->
  <!ENTITY rdquor "&#x201D;" ><!--rising dbl quote, right (high)-->
  <!ENTITY rsquor "&#x2019;" ><!--rising single quote, right (high)-->
  <!ENTITY vellip "&#x22EE;" ><!--vertical ellipsis-->
  
  <!ENTITY hybull "&#x2043;" ><!--rectangle, filled (hyphen bullet)-->
  <!ENTITY loz    "&#x2727;" ><!--/lozenge - lozenge or total mark-->
  <!ENTITY lozf   "&#x2726;" ><!--/blacklozenge - lozenge, filled-->
  <!ENTITY ltri   "&#x25C3;" ><!--/triangleleft B: l triangle, open-->
  <!ENTITY rtri   "&#x25B9;" ><!--/triangleright B: r triangle, open-->
  <!ENTITY starf  "&#x2605;" ><!--/bigstar - star, filled-->
  
  <!ENTITY natur  "&#x266E;" ><!--/natural - music natural-->
  <!ENTITY rx     "&#x211E;" ><!--pharmaceutical prescription (Rx)-->
  <!ENTITY sext   "&#x2736;" ><!--sextile (6-pointed star)-->
  
  <!ENTITY target "&#x2316;" ><!--register mark or target-->
  <!ENTITY dlcrop "&#x230D;" ><!--downward left crop mark -->
  <!ENTITY drcrop "&#x230C;" ><!--downward right crop mark -->
  <!ENTITY ulcrop "&#x230F;" ><!--upward left crop mark -->
  <!ENTITY urcrop "&#x230E;" ><!--upward right crop mark -->
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/ISOtech.pen
  
  Index: ISOtech.pen
  ===================================================================
  
  <!-- (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  <!-- Character entity set. Typical invocation:
       <!ENTITY % ISOtech PUBLIC
         "ISO 8879:1986//ENTITIES General Technical//EN//XML" 
         "ISOtech.pen">
       %ISOtech;
  -->
  <!-- This version of the entity set can be used with any SGML document
       which uses ISO 10646 as its document character set. 
       This includes XML documents and ISO HTML documents.
       This entity set uses hexadecimal numeric character references. 
            
       Creator: Rick Jelliffe, Allette Systems
       
       Version: 1997-07-07
  -->
  <!ENTITY aleph  "&#x2135;" ><!--/aleph =aleph, Hebrew-->
  <!ENTITY and    "&#x2227;" ><!--/wedge /land B: =logical and-->
  <!ENTITY ang90  "&#x221F;" ><!--=right (90 degree) angle-->
  <!ENTITY angsph "&#x2222;" ><!--/sphericalangle =angle-spherical-->
  <!ENTITY ap     "&#x2249;" ><!--/approx R: =approximate-->
  <!ENTITY becaus "&#x2235;" ><!--/because R: =because-->
  <!ENTITY bottom "&#x22A5;" ><!--/bot B: =perpendicular-->
  <!ENTITY cap    "&#x2229;" ><!--/cap B: =intersection-->
  <!ENTITY cong   "&#x2245;" ><!--/cong R: =congruent with-->
  <!ENTITY conint "&#x222E;" ><!--/oint L: =contour integral operator-->
  <!ENTITY cup    "&#x222A;" ><!--/cup B: =union or logical sum-->
  <!ENTITY equiv  "&#x2261;" ><!--/equiv R: =identical with-->
  <!ENTITY exist  "&#x2203;" ><!--/exists =at least one exists-->
  <!ENTITY forall "&#x2200;" ><!--/forall =for all-->
  <!ENTITY fnof   "&#x192;" ><!--=function of (italic small f)-->
  <!ENTITY ge     "&#x2265;" ><!--/geq /ge R: =greater-than-or-equal-->
  <!ENTITY iff    "&#x21D4;" ><!--/iff =if and only if-->
  <!ENTITY infin  "&#x221E;" ><!--/infty =infinity-->
  <!ENTITY int    "&#x222B;" ><!--/int L: =integral operator-->
  <!ENTITY isin   "&#x2208;" ><!--/in R: =set membership-->
  <!ENTITY lang   "&#x2329;" ><!--/langle O: =left angle bracket-->
  <!ENTITY lArr   "&#x21D0;" ><!--/Leftarrow A: =is implied by-->
  <!ENTITY le     "&#x2264;" ><!--/leq /le R: =less-than-or-equal-->
  <!ENTITY minus  "-" ><!--B: =minus sign-->
  <!ENTITY mnplus "&#x2213;" ><!--/mp B: =minus-or-plus sign-->
  <!ENTITY nabla  "&#x2207;" ><!--/nabla =del, Hamilton operator-->
  <!ENTITY ne     "&#x2260;" ><!--/ne /neq R: =not equal-->
  <!ENTITY ni     "&#x220B;" ><!--/ni /owns R: =contains-->
  <!ENTITY or     "&#x2228;" ><!--/vee /lor B: =logical or-->
  <!ENTITY par    "&#x2225;" ><!--/parallel R: =parallel-->
  <!ENTITY part   "&#x2202;" ><!--/partial =partial differential-->
  <!ENTITY permil "&#x2030;" ><!--=per thousand-->
  <!ENTITY perp   "&#x22A5;" ><!--/perp R: =perpendicular-->
  <!ENTITY prime  "&#x2032;" ><!--/prime =prime or minute-->
  <!ENTITY Prime  "&#x2033;" ><!--=double prime or second-->
  <!ENTITY prop   "&#x221D;" ><!--/propto R: =is proportional to-->
  <!ENTITY radic  "&#x221A;" ><!--/surd =radical-->
  <!ENTITY rang   "&#x232A;" ><!--/rangle C: =right angle bracket-->
  <!ENTITY rArr   "&#x21D2;" ><!--/Rightarrow A: =implies-->
  <!ENTITY sim    "&#x223C;" ><!--/sim R: =similar-->
  <!ENTITY sime   "&#x2243;" ><!--/simeq R: =similar, equals-->
  <!ENTITY square "&#x25A1;" ><!--/square B: =square-->
  <!ENTITY sub    "&#x2282;" ><!--/subset R: =subset or is implied by-->
  <!ENTITY sube   "&#x2286;" ><!--/subseteq R: =subset, equals-->
  <!ENTITY sup    "&#x2283;" ><!--/supset R: =superset or implies-->
  <!ENTITY supe   "&#x2287;" ><!--/supseteq R: =superset, equals-->
  <!ENTITY there4 "&#x2234;" ><!--/therefore R: =therefore-->
  <!ENTITY Verbar "&#x2016;" ><!--/Vert =dbl vertical bar-->
  
  <!ENTITY angst  "&#x212B;" ><!--Angstrom =capital A, ring-->
  <!ENTITY bernou "&#x212C;" ><!--Bernoulli function (script capital B)-->
  <!ENTITY compfn "&#x2218;" ><!--B: composite function (small circle)-->
  <!ENTITY Dot    "&#xA8;" ><!--=dieresis or umlaut mark-->
  <!ENTITY DotDot "&#x20DC;" ><!--four dots above-->
  <!ENTITY hamilt "&#x210B;" ><!--Hamiltonian (script capital H)-->
  <!ENTITY lagran "&#x2112;" ><!--Lagrangian (script capital L)-->
  <!ENTITY lowast "&#x2217;" ><!--low asterisk-->
  <!ENTITY notin  "&#x2209;" ><!--N: negated set membership-->
  <!ENTITY order  "&#x2134;" ><!--order of (script small o)-->
  <!ENTITY phmmat "&#x2133;" ><!--physics M-matrix (script capital M)-->
  <!ENTITY tdot   "&#x20DB;" ><!--three dots above-->
  <!ENTITY tprime "&#x2034;" ><!--triple prime-->
  <!ENTITY wedgeq "&#x2259;" ><!--R: corresponds to (wedge, equals)-->
  
  
  
  
  1.1                  xml-forrest/src/resources/entities/README
  
  Index: README
  ===================================================================
  See Apache Cocoon documentation
  "Entity resolution with catalogs" (catalog.html)
  
  Note: You must move the CatalogManager.properties file to
  some filesystem location that is accessible to your classpath.
  
  
  
  1.1                  xml-forrest/src/resources/entities/XMLSchema.dtd
  
  Index: XMLSchema.dtd
  ===================================================================
  <!-- DTD for XML Schemas: Part 1: Structures
       Public Identifier: "-//W3C//DTD XMLSCHEMA 200010//EN"
       Official Location: http://www.w3.org/2000/10/XMLSchema.dtd -->
  <!-- $Id: XMLSchema.dtd,v 1.1 2002/02/26 23:50:26 stevenn Exp $ -->
  <!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
  <!-- prose copy in the structures REC is the definitive version -->    <!--d-->
  <!-- (which shouldn't differ from this one except for this -->         <!--d-->
  <!-- comment and entity expansions, but just in case) -->              <!--d-->
  <!-- With the exception of cases with multiple namespace
       prefixes for the XML Schema namespace, any XML document which is
       not valid per this DTD given redefinitions in its internal subset of the
       'p' and 's' parameter entities below appropriate to its namespace
       declaration of the XML Schema namespace is almost certainly not
       a valid schema. -->
  
  <!-- The simpleType element and its constituent parts
       are defined in XML Schema: Part 2: Datatypes -->
  <!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
  
  <!ENTITY % p ''> <!-- can be overriden in the internal subset of a
                        schema document to establish a namespace prefix -->
  <!ENTITY % s ''> <!-- if %p is defined (e.g. as foo:) then you must
                        also define %s as the suffix for the appropriate
                        namespace declaration (e.g. :foo) -->
  <!ENTITY % nds 'xmlns%s;'>
  
  <!-- Define all the element names, with optional prefix -->
  <!ENTITY % schema "%p;schema">
  <!ENTITY % complexType "%p;complexType">
  <!ENTITY % complexContent "%p;complexContent">
  <!ENTITY % simpleContent "%p;simpleContent">
  <!ENTITY % extension "%p;extension">
  <!ENTITY % element "%p;element">
  <!ENTITY % unique "%p;unique">
  <!ENTITY % key "%p;key">
  <!ENTITY % keyref "%p;keyref">
  <!ENTITY % selector "%p;selector">
  <!ENTITY % field "%p;field">
  <!ENTITY % group "%p;group">
  <!ENTITY % all "%p;all">
  <!ENTITY % choice "%p;choice">
  <!ENTITY % sequence "%p;sequence">
  <!ENTITY % any "%p;any">
  <!ENTITY % anyAttribute "%p;anyAttribute">
  <!ENTITY % attribute "%p;attribute">
  <!ENTITY % attributeGroup "%p;attributeGroup">
  <!ENTITY % include "%p;include">
  <!ENTITY % import "%p;import">
  <!ENTITY % redefine "%p;redefine">
  <!ENTITY % notation "%p;notation">
  
  <!-- annotation elements -->
  <!ENTITY % annotation "%p;annotation">
  <!ENTITY % appinfo "%p;appinfo">
  <!ENTITY % documentation "%p;documentation">
  
  <!-- Customisation entities for the ATTLIST of each element type.
       Define one of these if your schema takes advantage of the
       anyAttribute='##other' in the schema for schemas -->
  
  <!ENTITY % schemaAttrs ''>
  <!ENTITY % complexTypeAttrs ''>
  <!ENTITY % complexContentAttrs ''>
  <!ENTITY % simpleContentAttrs ''>
  <!ENTITY % extensionAttrs ''>
  <!ENTITY % elementAttrs ''>
  <!ENTITY % groupAttrs ''>
  <!ENTITY % allAttrs ''>
  <!ENTITY % choiceAttrs ''>
  <!ENTITY % sequenceAttrs ''>
  <!ENTITY % anyAttrs ''>
  <!ENTITY % anyAttributeAttrs ''>
  <!ENTITY % attributeAttrs ''>
  <!ENTITY % attributeGroupAttrs ''>
  <!ENTITY % uniqueAttrs ''>
  <!ENTITY % keyAttrs ''>
  <!ENTITY % keyrefAttrs ''>
  <!ENTITY % selectorAttrs ''>
  <!ENTITY % fieldAttrs ''>
  <!ENTITY % includeAttrs ''>
  <!ENTITY % importAttrs ''>
  <!ENTITY % redefineAttrs ''>
  <!ENTITY % notationAttrs ''>
  
  <!ENTITY % complexDerivationChoice "(extension|restriction)">
  <!ENTITY % complexDerivationSet "CDATA">
        <!-- #all or space-separated list drawn from derivationChoice -->
  <!ENTITY % blockSet "CDATA">
        <!-- #all or space-separated list drawn from
                        derivationChoice + 'substitution' -->
  
  <!ENTITY % mgs '%all; | %choice; | %sequence;'>
  <!ENTITY % cs '%choice; | %sequence;'>
  <!ENTITY % formValues '(qualified|unqualified)'>
  
  
  <!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
  
  <!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
  
  <!-- This is used in part2 -->
  <!ENTITY % restriction1 '((%mgs; | %group;)?)'>
  
  %xs-datatypes;
  
  <!-- the duplication below is to produce an unambiguous content model
       which allows annotation everywhere -->
  <!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
                      ((%simpleType; | %complexType;
                        | %element; | %attribute;
                        | %attributeGroup; | %group;
                        | %notation; ),
                       (%annotation;)*)* )>
  <!ATTLIST %schema;
     targetNamespace      %URIref;               #IMPLIED
     version              CDATA                  #IMPLIED
     %nds;                %URIref;               #FIXED 'http://www.w3.org/2000/10/XMLSchema'
     finalDefault         %complexDerivationSet; ''
     blockDefault         %blockSet;             ''
     id                   ID                     #IMPLIED
     elementFormDefault   %formValues;           'unqualified'
     attributeFormDefault %formValues;           'unqualified'
     %schemaAttrs;>
  <!-- Note the xmlns declaration is NOT in the Schema for Schemas,
       because at the Infoset level where schemas operate,
       xmlns(:prefix) is NOT an attribute! -->
   
  <!-- The id attribute here and below is for use in external references
       from non-schemas using simple fragment identifiers.
       It is NOT used for schema-to-schema reference, internal or
       external. -->
  
  <!-- a type is a named content type specification which allows attribute
       declarations-->
  <!-- -->
  
  <!ELEMENT %complexType; ((%annotation;)?,
                           (%simpleContent;|%complexContent;|
                            %particleAndAttrs;))>
  
  <!ATTLIST %complexType;
            name      %NCName;                        #IMPLIED
            id        ID                              #IMPLIED
            abstract  %boolean;                       'false'
            final     %complexDerivationSet;          #IMPLIED
            block     %complexDerivationSet;          ''
            mixed (true|false) 'false'
            %complexTypeAttrs;>
  
  <!-- particleAndAttrs is shorthand for a root type -->
  <!-- mixed is disallowed if simpleContent, overriden if complexContent
       has one too. -->
  
  <!-- If anyAttribute appears in one or more referenced attributeGroups
       and/or explicitly, the intersection of the permissions is used -->
  
  <!ELEMENT %complexContent; (%restriction;|%extension;)>
  <!ATTLIST %complexContent;
            mixed (true|false) #IMPLIED
            id    ID           #IMPLIED
            %complexContentAttrs;>
  
  <!-- restriction should use the branch defined above, not the simple
       one from part2; extension should use the full model  -->
  
  <!ELEMENT %simpleContent; (%restriction;|%extension;)>
  <!ATTLIST %simpleContent;
            id    ID           #IMPLIED
            %simpleContentAttrs;>
  
  <!-- restriction should use the simple branch from part2, not the 
       one defined above; extension should have no particle  -->
  
  <!ELEMENT %extension; (%particleAndAttrs;)>
  <!ATTLIST %extension;
            base  %QName;      #REQUIRED
            id    ID           #IMPLIED
            %extensionAttrs;>
  
  <!-- an element is declared by either:
   a name and a type (either nested or referenced via the type attribute)
   or a ref to an existing element declaration -->
  
  <!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
                       (%unique; | %key; | %keyref;)*)>
  <!-- simpleType or complexType only if no type|ref attribute -->
  <!-- ref not allowed at top level -->
  <!ATTLIST %element;
              name               %NCName;               #IMPLIED
              id                 ID                     #IMPLIED
              ref                %QName;                #IMPLIED
              type               %QName;                #IMPLIED
              minOccurs          %nonNegativeInteger;   #IMPLIED
              maxOccurs          CDATA                  #IMPLIED
              nullable           %boolean;              #IMPLIED
              substitutionGroup  %QName;                #IMPLIED
              abstract           %boolean;              'false'
              final              %complexDerivationSet; #IMPLIED
              block              %blockSet;             #IMPLIED
              default            CDATA                  #IMPLIED
              fixed              CDATA                  #IMPLIED
              form               %formValues;           #IMPLIED
              %elementAttrs;>
  <!-- type and ref are mutually exclusive.
       name and ref are mutually exclusive, one is required -->
  <!-- In the absence of type AND ref, type defaults to type of
       substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
  <!-- default and fixed are mutually exclusive -->
  
  <!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
  <!ATTLIST %group; 
            name        %NCName;               #IMPLIED
            ref         %QName;                #IMPLIED
            minOccurs   %nonNegativeInteger;   #IMPLIED
            maxOccurs   CDATA                  #IMPLIED
            id          ID                     #IMPLIED
            %groupAttrs;>
  
  <!ELEMENT %all; ((%annotation;)?, (%element;)*)>
  <!ATTLIST %all;
            minOccurs   (1)                    #FIXED '1'
            maxOccurs   (1)                    #FIXED '1'
            id          ID                     #IMPLIED
            %allAttrs;>
  
  <!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  <!ATTLIST %choice;
            minOccurs   %nonNegativeInteger;   '1'
            maxOccurs   CDATA                  '1'
            id          ID                     #IMPLIED
            %choiceAttrs;>
  
  <!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  <!ATTLIST %sequence;
            minOccurs   %nonNegativeInteger;   '1'
            maxOccurs   CDATA                  '1'
            id          ID                     #IMPLIED
            %sequenceAttrs;>
  
  <!-- an anonymous grouping in a model, or
       a top-level named group definition, or a reference to same -->
  
  <!-- Note that if order is 'all', group is not allowed inside.
       If order is 'all' THIS group must be alone (or referenced alone) at
       the top level of a content model -->
  <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
  <!-- Should allow minOccurs=0 inside order='all' . . . -->
  
  <!ELEMENT %any; (%annotation;)?>
  <!ATTLIST %any;
              namespace       CDATA                  '##any'
              processContents (skip|lax|strict)      'strict'
              minOccurs       %nonNegativeInteger;   '1'
              maxOccurs       CDATA                  '1'
              id              ID                     #IMPLIED
              %anyAttrs;>
  
  <!-- namespace is interpreted as follows:
                    ##any      - - any non-conflicting WFXML at all
  
                    ##other    - - any non-conflicting WFXML from namespace other
                                    than targetNamespace
  
                    ##local    - - any unqualified non-conflicting WFXML/attribute
                    one or     - - any non-conflicting WFXML from
                    more URI        the listed namespaces
                    references
  
                    ##targetNamespace ##local may appear in the above list,
                      with the obvious meaning -->
  
  <!ELEMENT %anyAttribute; (%annotation;)?>
  <!ATTLIST %anyAttribute;
              namespace       CDATA              '##any'
              processContents (skip|lax|strict)  'strict'
              id              ID                 #IMPLIED
              %anyAttributeAttrs;>
  <!-- namespace is interpreted as for 'any' above -->
  
  <!-- simpleType only if no type|ref attribute -->
  <!-- ref not allowed at top level, name iff at top level -->
  <!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
  <!ATTLIST %attribute;
            name      %NCName;      #IMPLIED
            id        ID            #IMPLIED
            ref       %QName;       #IMPLIED
            type      %QName;       #IMPLIED
            use       (prohibited|optional|required|fixed|default) #IMPLIED
            value     CDATA         #IMPLIED
            form      %formValues;  #IMPLIED
            %attributeAttrs;>
  <!-- type and ref are mutually exclusive.
       name and ref are mutually exclusive, one is required -->
  <!-- value only if use is fixed, required or default, or name -->
  <!-- name and use are mutually exclusive -->
  <!-- default for use is optional when nested, none otherwise -->
  <!-- type attr and simpleType content are mutually exclusive -->
  
  <!-- an attributeGroup is a named collection of attribute decls, or a
       reference thereto -->
  <!ELEMENT %attributeGroup; ((%annotation;)?,
                         (%attribute; | %attributeGroup;)*,
                         (%anyAttribute;)?) >
  <!ATTLIST %attributeGroup;
                   name       %NCName;       #IMPLIED
                   id         ID             #IMPLIED
                   ref        %QName;        #IMPLIED
                   %attributeGroupAttrs;>
  
  <!-- ref iff no content, no name.  ref iff not top level -->
  
  <!-- better reference mechanisms -->
  <!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %unique;
            name     %NCName;       #REQUIRED
  	  id       ID             #IMPLIED
  	  %uniqueAttrs;>
  
  <!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %key;
            name     %NCName;       #REQUIRED
  	  id       ID             #IMPLIED
  	  %keyAttrs;>
  
  <!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
  <!ATTLIST %keyref;
            name     %NCName;       #REQUIRED
  	  refer    %QName;        #REQUIRED
  	  id       ID             #IMPLIED
  	  %keyrefAttrs;>
  
  <!ELEMENT %selector; ((%annotation;)?)>
  <!ATTLIST %selector;
            xpath %XPathExpr; #REQUIRED
            id    ID          #IMPLIED
            %selectorAttrs;>
  <!ELEMENT %field; ((%annotation;)?)>
  <!ATTLIST %field;
            xpath %XPathExpr; #REQUIRED
            id    ID          #IMPLIED
            %fieldAttrs;>
  
  <!-- Schema combination mechanisms -->
  <!ELEMENT %include; (%annotation;)?>
  <!ATTLIST %include;
            schemaLocation %URIref; #REQUIRED
            id             ID       #IMPLIED
            %includeAttrs;>
  
  <!ELEMENT %import; (%annotation;)?>
  <!ATTLIST %import;
            namespace      %URIref; #IMPLIED
            schemaLocation %URIref; #IMPLIED
            id             ID       #IMPLIED
            %importAttrs;>
  
  <!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
                        %attributeGroup; | %group;)*>
  <!ATTLIST %redefine;
            schemaLocation %URIref; #REQUIRED
            id             ID       #IMPLIED
            %redefineAttrs;>
  
  <!ELEMENT %notation; (%annotation;)?>
  <!ATTLIST %notation;
  	  name        %NCName;    #REQUIRED
  	  id          ID          #IMPLIED
  	  public      CDATA       #REQUIRED
  	  system      %URIref;    #IMPLIED
  	  %notationAttrs;>
  
  <!-- Annotation is either application information or documentation -->
  <!-- By having these here they are available for datatypes as well
       as all the structures elements -->
  
  <!ELEMENT %annotation; (%appinfo; | %documentation;)*>
  
  <!-- User must define annotation elements in internal subset for this
       to work -->
  <!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
  <!ATTLIST %appinfo;
            source     %URIref;      #IMPLIED
            id         ID         #IMPLIED
            %appinfoAttrs;>
  <!ELEMENT %documentation; ANY>   <!-- too restrictive -->
  <!ATTLIST %documentation;
            source     %URIref;   #IMPLIED
            id         ID         #IMPLIED
            xml:lang   CDATA      #IMPLIED
            %documentationAttrs;>
  
  <!NOTATION XMLSchemaStructures PUBLIC
             'structures' 'http://www.w3.org/2000/10/XMLSchema.xsd' >
  <!NOTATION XML PUBLIC
             'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
  
  
  
  1.1                  xml-forrest/src/resources/entities/book-cocoon-v10.dtd
  
  Index: book-cocoon-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Cocoon Documentation Book DTD (Version 1.0)
  
  PURPOSE:
  This DTD defines the */book.xml documentation configuration files.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE book PUBLIC
         "-//APACHE//DTD Cocoon Documentation Book Vx.yz//EN"
         "http://xml.apache.org/DTD/book-cocoon-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:
  We need to replace this DTD with the proper one.
  We are only using this DTD to enable validation during "build docs"
  because every XML instance must declare its ruleset.
  
  This initial minimal DTD has been reverse-engineered from the structure
  of the current documents, e.g. 
   docuemntation/xdocs/book.xml
    
  AUTHORS:
    David Crossley <crossley@apache.org>
    
  FIXME:
    - find the proper DTD for book.xml
  
  CHANGE HISTORY:
    20011031 Initial version. (DC)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!ELEMENT book (menu+)> 
  <!ELEMENT menu (menu-item|external)*>
  <!ELEMENT menu-item EMPTY>
  <!ELEMENT external EMPTY>
  <!ATTLIST book software CDATA #REQUIRED
                 title CDATA #REQUIRED
                 copyright CDATA #REQUIRED
                 xmlns:xlink CDATA #IMPLIED
  >
  <!ATTLIST menu label CDATA #REQUIRED
  >
  <!ATTLIST menu-item label CDATA #REQUIRED
                      href CDATA #REQUIRED
                      type (visible|hidden) "visible"
  >
  <!ATTLIST external  label CDATA #REQUIRED
                      href CDATA #REQUIRED
                      type (visible|hidden) "visible"
  >
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/catalog
  
  Index: catalog
  ===================================================================
  -- this is the default OASIS catalog for Apache Cocoon --
  
  OVERRIDE YES
  
  -- ISO public identifiers for sets of character entities --
  PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML"
         "ISOlat1.pen"
  PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
         "ISOlat1.pen"
  PUBLIC "ISO 9573-15:1993//ENTITIES Greek Letters//EN//XML"
         "ISOgrk1.pen"
  PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN//XML"
         "ISOpub.pen"
  PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN//XML"
         "ISOtech.pen"
  PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
         "ISOnum.pen"
  
  -- Document Type Definitions --
  PUBLIC "-//APACHE//DTD Documentation V1.0//EN"
         "document-v10.dtd"
  PUBLIC "-//APACHE//DTD Changes V1.0//EN"
         "changes-v10.dtd"
  PUBLIC "-//APACHE//DTD FAQ V1.0//EN"
         "faq-v10.dtd"
  PUBLIC "-//APACHE//DTD JavaDoc V1.0//EN"
         "javadoc-v04draft.dtd"
  PUBLIC "-//APACHE//DTD Specification V1.0//EN"
         "specification-v10.dtd"
  PUBLIC "-//APACHE//DTD Todo V1.0//EN"
         "todo-v10.dtd"
  PUBLIC "-//APACHE//DTD Cocoon Sitemap V0.2//EN"
         "sitemap-v02.dtd"
  
  -- enabling validation during Cocoon's own "build docs" --
  --   all *.xml require DTD for validation during "build docs" --
  PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN"
         "book-cocoon-v10.dtd"
  
  --   Cocoon has extra <label/> element for documentation/svg/label-*.xml --
  --   which breaks validation against official svg10.dtd (why extra label?) --
  PUBLIC "-//APACHE//DTD Cocoon SVG minimal V1.1//EN"
         "svg-cocoon-v11.dtd"
  PUBLIC "-//W3C//DTD SVG 1.0//EN"
         "svg10.dtd"
  
  -- other DTDs that are yet without a Public Identifier --
  -- XMLSchema.dtd .. what is its purpose ? --
  
  -- Character entity set that is referenced by some DTDs --
  -- characters.ent --
  -- ... has no public identifier --
  -- should be OK because it will be resolved relative to the DTD --
  -- ... perhaps the DTD should use the ISO*.pen sets instead? --
  
  -- these entries are used for the catalog-demo sample application --
  OVERRIDE NO
  PUBLIC "-//Arbortext//TEXT Test Override//EN"
         "catalog-demo/override.xml"
  OVERRIDE YES
  PUBLIC "-//Arbortext//TEXT Test Public Identifier//EN"
         "catalog-demo/testpub.xml"
  SYSTEM "urn:x-arbortext:test-system-identifier"
         "catalog-demo/testsys.xml"
  PUBLIC "-//Indexgeo//DTD Catalog Demo v1.0//EN"
         "catalog-demo/catalog-demo-v10.dtd"
  -- end of entries for the catalog-demo sample application --
  
  
  
  1.1                  xml-forrest/src/resources/entities/changes-v10.dtd
  
  Index: changes-v10.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Changes DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document
    type for software development changes for use with the Apache projects.
    It is an XML-compliant DTD and it's maintained by the Apache XML
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Changes Vx.yz//EN"
         "http://xml.apache.org/DTD/changes-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
    It is important, expecially in open developped software projects, to keep
    track of software changes both to give users indications of bugs that might
    have been resolved, as well, and not less important, to provide credits
    for the support given to the project. It is considered vital to provide
    adequate payback using recognition and credits to let users and developers
    feel part of the community, thus increasing development power.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
  
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
    20000316 Added bugfixing attribute. (SM)
  
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
  
    Permission to copy in any form is granted provided this notice is
    included in all copies. Permission to redistribute is granted
    provided this file is distributed untouched in all its parts and
    included files.
  
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Common entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % types "add|remove|update|fix">
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT changes (devs, release*)>
  <!ATTLIST changes %common.att;
                    %title.att;>
  
      <!ELEMENT devs (person+)>
      <!ATTLIST devs %common.att;>
  
      <!ELEMENT release (action+)>
      <!ATTLIST release %common.att;
                        version  CDATA  #REQUIRED
                        date     CDATA  #REQUIRED>
  
          <!ELEMENT action (%content.mix;)*>
          <!ATTLIST action %common.att;
                           dev  IDREF  #REQUIRED
                           type (%types;)  #IMPLIED
                           due-to CDATA #IMPLIED
                           due-to-email CDATA #IMPLIED
                           fixes-bug CDATA #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/characters.ent
  
  Index: characters.ent
  ===================================================================
  <!-- 
       Portions (C) International Organization for Standardization 1986
       Permission to copy in any form is granted for use with
       conforming SGML systems and applications as defined in
       ISO 8879, provided this notice is included in all copies.
  -->
  
  <!-- 
       Character entity set.
  -->
  
  <!-- Latin A -->
  <!ENTITY nbsp     "&#160;">  <!-- U+00A0 ISOnum    - no-break space = non-breaking space                                   -->
  <!ENTITY iexcl    "&#161;">  <!-- U+00A1 ISOnum    - inverted exclamation mark                                             -->
  <!ENTITY cent     "&#162;">  <!-- U+00A2 ISOnum    - cent sign                                                             -->
  <!ENTITY pound    "&#163;">  <!-- U+00A3 ISOnum    - pound sign                                                            -->
  <!ENTITY curren   "&#164;">  <!-- U+00A4 ISOnum    - currency sign                                                         -->
  <!ENTITY yen      "&#165;">  <!-- U+00A5 ISOnum    - yen sign = yuan sign                                                  -->
  <!ENTITY brvbar   "&#166;">  <!-- U+00A6 ISOnum    - broken bar = broken vertical bar                                      -->
  <!ENTITY sect     "&#167;">  <!-- U+00A7 ISOnum    - section sign                                                          -->
  <!ENTITY uml      "&#168;">  <!-- U+00A8 ISOdia    - diaeresis = spacing diaeresis                                         -->
  <!ENTITY copy     "&#169;">  <!-- U+00A9 ISOnum    - copyright sign                                                        -->
  <!ENTITY ordf     "&#170;">  <!-- U+00AA ISOnum    - feminine ordinal indicator                                            -->
  <!ENTITY laquo    "&#171;">  <!-- U+00AB ISOnum    - left-pointing double angle quotation mark = left pointing guillemet   -->
  <!ENTITY not      "&#172;">  <!-- U+00AC ISOnum    - not sign                                                              -->
  <!ENTITY shy      "&#173;">  <!-- U+00AD ISOnum    - soft hyphen = discretionary hyphen                                    -->
  <!ENTITY reg      "&#174;">  <!-- U+00AE ISOnum    - registered sign = registered trade mark sign                          -->
  <!ENTITY macr     "&#175;">  <!-- U+00AF ISOdia    - macron = spacing macron = overline = APL overbar                      -->
  <!ENTITY deg      "&#176;">  <!-- U+00B0 ISOnum    - degree sign                                                           -->
  <!ENTITY plusmn   "&#177;">  <!-- U+00B1 ISOnum    - plus-minus sign = plus-or-minus sign                                  -->
  <!ENTITY sup2     "&#178;">  <!-- U+00B2 ISOnum    - superscript two = superscript digit two = squared                     -->
  <!ENTITY sup3     "&#179;">  <!-- U+00B3 ISOnum    - superscript three = superscript digit three = cubed                   -->
  <!ENTITY acute    "&#180;">  <!-- U+00B4 ISOdia    - acute accent = spacing acute                                          -->
  <!ENTITY micro    "&#181;">  <!-- U+00B5 ISOnum    - micro sign                                                            -->
  <!ENTITY para     "&#182;">  <!-- U+00B6 ISOnum    - pilcrow sign = paragraph sign                                         -->
  <!ENTITY middot   "&#183;">  <!-- U+00B7 ISOnum    - middle dot = Georgian comma = Greek middle dot                        -->
  <!ENTITY cedil    "&#184;">  <!-- U+00B8 ISOdia    - cedilla = spacing cedilla                                             -->
  <!ENTITY sup1     "&#185;">  <!-- U+00B9 ISOnum    - superscript one = superscript digit one                               -->
  <!ENTITY ordm     "&#186;">  <!-- U+00BA ISOnum    - masculine ordinal indicator                                           -->
  <!ENTITY raquo    "&#187;">  <!-- U+00BB ISOnum    - right-pointing double angle quotation mark = right pointing guillemet -->
  <!ENTITY frac14   "&#188;">  <!-- U+00BC ISOnum    - vulgar fraction one quarter = fraction one quarter                    -->
  <!ENTITY frac12   "&#189;">  <!-- U+00BD ISOnum    - vulgar fraction one half = fraction one half                          -->
  <!ENTITY frac34   "&#190;">  <!-- U+00BE ISOnum    - vulgar fraction three quarters = fraction three quarters              -->
  <!ENTITY iquest   "&#191;">  <!-- U+00BF ISOnum    - inverted question mark = turned question mark                         -->
  <!ENTITY Agrave   "&#192;">  <!-- U+00C0 ISOlat1   - latin capital letter A with grave = latin capital letter A grave      -->
  <!ENTITY Aacute   "&#193;">  <!-- U+00C1 ISOlat1   - latin capital letter A with acute                                     -->
  <!ENTITY Acirc    "&#194;">  <!-- U+00C2 ISOlat1   - latin capital letter A with circumflex                                -->
  <!ENTITY Atilde   "&#195;">  <!-- U+00C3 ISOlat1   - latin capital letter A with tilde                                     -->
  <!ENTITY Auml     "&#196;">  <!-- U+00C4 ISOlat1   - latin capital letter A with diaeresis                                 -->
  <!ENTITY Aring    "&#197;">  <!-- U+00C5 ISOlat1   - latin capital letter A with ring above = latin capital letter A ring  -->
  <!ENTITY AElig    "&#198;">  <!-- U+00C6 ISOlat1   - latin capital letter AE = latin capital ligature AE                   -->
  <!ENTITY Ccedil   "&#199;">  <!-- U+00C7 ISOlat1   - latin capital letter C with cedilla                                   -->
  <!ENTITY Egrave   "&#200;">  <!-- U+00C8 ISOlat1   - latin capital letter E with grave                                     -->
  <!ENTITY Eacute   "&#201;">  <!-- U+00C9 ISOlat1   - latin capital letter E with acute                                     -->
  <!ENTITY Ecirc    "&#202;">  <!-- U+00CA ISOlat1   - latin capital letter E with circumflex                                -->
  <!ENTITY Euml     "&#203;">  <!-- U+00CB ISOlat1   - latin capital letter E with diaeresis                                 -->
  <!ENTITY Igrave   "&#204;">  <!-- U+00CC ISOlat1   - latin capital letter I with grave                                     -->
  <!ENTITY Iacute   "&#205;">  <!-- U+00CD ISOlat1   - latin capital letter I with acute                                     -->
  <!ENTITY Icirc    "&#206;">  <!-- U+00CE ISOlat1   - latin capital letter I with circumflex                                -->
  <!ENTITY Iuml     "&#207;">  <!-- U+00CF ISOlat1   - latin capital letter I with diaeresis                                 -->
  <!ENTITY ETH      "&#208;">  <!-- U+00D0 ISOlat1   - latin capital letter ETH                                              -->
  <!ENTITY Ntilde   "&#209;">  <!-- U+00D1 ISOlat1   - latin capital letter N with tilde                                     -->
  <!ENTITY Ograve   "&#210;">  <!-- U+00D2 ISOlat1   - latin capital letter O with grave                                     -->
  <!ENTITY Oacute   "&#211;">  <!-- U+00D3 ISOlat1   - latin capital letter O with acute                                     -->
  <!ENTITY Ocirc    "&#212;">  <!-- U+00D4 ISOlat1   - latin capital letter O with circumflex                                -->
  <!ENTITY Otilde   "&#213;">  <!-- U+00D5 ISOlat1   - latin capital letter O with tilde                                     -->
  <!ENTITY Ouml     "&#214;">  <!-- U+00D6 ISOlat1   - latin capital letter O with diaeresis                                 -->
  <!ENTITY times    "&#215;">  <!-- U+00D7 ISOnum    - multiplication sign                                                   -->
  <!ENTITY Oslash   "&#216;">  <!-- U+00D8 ISOlat1   - latin capital letter O with stroke = latin capital letter O slash     -->
  <!ENTITY Ugrave   "&#217;">  <!-- U+00D9 ISOlat1   - latin capital letter U with grave                                     -->
  <!ENTITY Uacute   "&#218;">  <!-- U+00DA ISOlat1   - latin capital letter U with acute                                     -->
  <!ENTITY Ucirc    "&#219;">  <!-- U+00DB ISOlat1   - latin capital letter U with circumflex                                -->
  <!ENTITY Uuml     "&#220;">  <!-- U+00DC ISOlat1   - latin capital letter U with diaeresis                                 -->
  <!ENTITY Yacute   "&#221;">  <!-- U+00DD ISOlat1   - latin capital letter Y with acute                                     -->
  <!ENTITY THORN    "&#222;">  <!-- U+00DE ISOlat1   - latin capital letter THORN                                            -->
  <!ENTITY szlig    "&#223;">  <!-- U+00DF ISOlat1   - latin small letter sharp s = ess-zed                                  -->
  <!ENTITY agrave   "&#224;">  <!-- U+00E0 ISOlat1   - latin small letter a with grave = latin small letter a grave          -->
  <!ENTITY aacute   "&#225;">  <!-- U+00E1 ISOlat1   - latin small letter a with acute                                       -->
  <!ENTITY acirc    "&#226;">  <!-- U+00E2 ISOlat1   - latin small letter a with circumflex                                  -->
  <!ENTITY atilde   "&#227;">  <!-- U+00E3 ISOlat1   - latin small letter a with tilde                                       -->
  <!ENTITY auml     "&#228;">  <!-- U+00E4 ISOlat1   - latin small letter a with diaeresis                                   -->
  <!ENTITY aring    "&#229;">  <!-- U+00E5 ISOlat1   - latin small letter a with ring above = latin small letter a ring      -->
  <!ENTITY aelig    "&#230;">  <!-- U+00E6 ISOlat1   - latin small letter ae = latin small ligature ae                       -->
  <!ENTITY ccedil   "&#231;">  <!-- U+00E7 ISOlat1   - latin small letter c with cedilla                                     -->
  <!ENTITY egrave   "&#232;">  <!-- U+00E8 ISOlat1   - latin small letter e with grave                                       -->
  <!ENTITY eacute   "&#233;">  <!-- U+00E9 ISOlat1   - latin small letter e with acute                                       -->
  <!ENTITY ecirc    "&#234;">  <!-- U+00EA ISOlat1   - latin small letter e with circumflex                                  -->
  <!ENTITY euml     "&#235;">  <!-- U+00EB ISOlat1   - latin small letter e with diaeresis                                   -->
  <!ENTITY igrave   "&#236;">  <!-- U+00EC ISOlat1   - latin small letter i with grave                                       -->
  <!ENTITY iacute   "&#237;">  <!-- U+00ED ISOlat1   - latin small letter i with acute                                       -->
  <!ENTITY icirc    "&#238;">  <!-- U+00EE ISOlat1   - latin small letter i with circumflex                                  -->
  <!ENTITY iuml     "&#239;">  <!-- U+00EF ISOlat1   - latin small letter i with diaeresis                                   -->
  <!ENTITY eth      "&#240;">  <!-- U+00F0 ISOlat1   - latin small letter eth                                                -->
  <!ENTITY ntilde   "&#241;">  <!-- U+00F1 ISOlat1   - latin small letter n with tilde                                       -->
  <!ENTITY ograve   "&#242;">  <!-- U+00F2 ISOlat1   - latin small letter o with grave                                       -->
  <!ENTITY oacute   "&#243;">  <!-- U+00F3 ISOlat1   - latin small letter o with acute                                       -->
  <!ENTITY ocirc    "&#244;">  <!-- U+00F4 ISOlat1   - latin small letter o with circumflex                                  -->
  <!ENTITY otilde   "&#245;">  <!-- U+00F5 ISOlat1   - latin small letter o with tilde                                       -->
  <!ENTITY ouml     "&#246;">  <!-- U+00F6 ISOlat1   - latin small letter o with diaeresis                                   -->
  <!ENTITY divide   "&#247;">  <!-- U+00F7 ISOnum    - division sign                                                         -->
  <!ENTITY oslash   "&#248;">  <!-- U+00F8 ISOlat1   - latin small letter o with stroke = latin small letter o slash         -->
  <!ENTITY ugrave   "&#249;">  <!-- U+00F9 ISOlat1   - latin small letter u with grave                                       -->
  <!ENTITY uacute   "&#250;">  <!-- U+00FA ISOlat1   - latin small letter u with acute                                       -->
  <!ENTITY ucirc    "&#251;">  <!-- U+00FB ISOlat1   - latin small letter u with circumflex                                  -->
  <!ENTITY uuml     "&#252;">  <!-- U+00FC ISOlat1   - latin small letter u with diaeresis                                   -->
  <!ENTITY yacute   "&#253;">  <!-- U+00FD ISOlat1   - latin small letter y with acute                                       -->
  <!ENTITY thorn    "&#254;">  <!-- U+00FE ISOlat1   - latin small letter thorn                                              -->
  <!ENTITY yuml     "&#255;">  <!-- U+00FF ISOlat1   - latin small letter y with diaeresis                                   -->
  
  <!-- Latin Extended-A -->
  <!ENTITY OElig    "&#338;">  <!-- U+0152 ISOlat2   - latin capital ligature OE                                             -->
  <!ENTITY oelig    "&#339;">  <!-- U+0153 ISOlat2   - latin small ligature oe                                               -->
  
  <!-- ligature is a misnomer, this is a separate character in some languages -->
  <!ENTITY Scaron   "&#352;">  <!-- U+0160 ISOlat2   - latin capital letter S with caron                                     -->
  <!ENTITY scaron   "&#353;">  <!-- U+0161 ISOlat2   - latin small letter s with caron                                       -->
  <!ENTITY Yuml     "&#376;">  <!-- U+0178 ISOlat2   - latin capital letter Y with diaeresis                                 -->
  
  <!-- Spacing Modifier Letters -->
  <!ENTITY circ     "&#710;">  <!-- U+02C6 ISOpub    - modifier letter circumflex accent                                     -->
  <!ENTITY tilde    "&#732;">  <!-- U+02DC ISOdia    - small tilde                                                           -->
  
  <!-- General Punctuation -->
  <!ENTITY ensp     "&#8194;"> <!-- U+2002 ISOpub    - en space                                                              -->
  <!ENTITY emsp     "&#8195;"> <!-- U+2003 ISOpub    - em space                                                              -->
  <!ENTITY thinsp   "&#8201;"> <!-- U+2009 ISOpub    - thin space                                                            -->
  <!ENTITY zwnj     "&#8204;"> <!-- U+200C RFC 2070  - zero width non-joiner                                                 -->
  <!ENTITY zwj      "&#8205;"> <!-- U+200D RFC 2070  - zero width joiner                                                     -->
  <!ENTITY lrm      "&#8206;"> <!-- U+200E RFC 2070  - left-to-right mark                                                    -->
  <!ENTITY rlm      "&#8207;"> <!-- U+200F RFC 2070  - right-to-left mark                                                    -->
  <!ENTITY ndash    "&#8211;"> <!-- U+2013 ISOpub    - en dash                                                               -->
  <!ENTITY mdash    "&#8212;"> <!-- U+2014 ISOpub    - em dash                                                               -->
  <!ENTITY lsquo    "&#8216;"> <!-- U+2018 ISOnum    - left single quotation mark                                            -->
  <!ENTITY rsquo    "&#8217;"> <!-- U+2019 ISOnum    - right single quotation mark                                           -->
  <!ENTITY sbquo    "&#8218;"> <!-- U+201A NEW       - single low-9 quotation mark                                           -->
  <!ENTITY ldquo    "&#8220;"> <!-- U+201C ISOnum    - left double quotation mark                                            -->
  <!ENTITY rdquo    "&#8221;"> <!-- U+201D ISOnum    - right double quotation mark,                                          -->
  <!ENTITY bdquo    "&#8222;"> <!-- U+201E NEW       - double low-9 quotation mark                                           -->
  <!ENTITY dagger   "&#8224;"> <!-- U+2020 ISOpub    - dagger                                                                -->
  <!ENTITY Dagger   "&#8225;"> <!-- U+2021 ISOpub    - double dagger                                                         -->
  <!ENTITY permil   "&#8240;"> <!-- U+2030 ISOtech   - per mille sign                                                        -->
  <!ENTITY lsaquo   "&#8249;"> <!-- U+2039 ISO prop. - single left-pointing angle quotation mark                             -->
  
  <!-- lsaquo is proposed but not yet ISO standardized -->
  <!ENTITY rsaquo   "&#8250;"> <!-- U+203A ISO prop. -   single right-pointing angle quotation mark                          -->
  
  <!-- rsaquo is proposed but not yet ISO standardized -->
  <!ENTITY euro     "&#8364;"> <!-- U+20AC NEW       -   euro sign                                                           -->
  
  <!-- Latin Extended-B -->
  <!ENTITY fnof     "&#402;">  <!-- U+0192 ISOtech   - latin small f with hook = function = florin                           -->
  
  <!-- Greek -->
  <!ENTITY Alpha    "&#913;">  <!-- U+0391           - greek capital letter alpha                                            -->
  <!ENTITY Beta     "&#914;">  <!-- U+0392           - greek capital letter beta                                             -->
  <!ENTITY Gamma    "&#915;">  <!-- U+0393 ISOgrk3   - greek capital letter gamma                                            -->
  <!ENTITY Delta    "&#916;">  <!-- U+0394 ISOgrk3   - greek capital letter delta                                            -->
  <!ENTITY Epsilon  "&#917;">  <!-- U+0395           - greek capital letter epsilon                                          -->
  <!ENTITY Zeta     "&#918;">  <!-- U+0396           - greek capital letter zeta                                             -->
  <!ENTITY Eta      "&#919;">  <!-- U+0397           - greek capital letter eta                                              -->
  <!ENTITY Theta    "&#920;">  <!-- U+0398 ISOgrk3   - greek capital letter theta                                            -->
  <!ENTITY Iota     "&#921;">  <!-- U+0399           - greek capital letter iota                                             -->
  <!ENTITY Kappa    "&#922;">  <!-- U+039A           - greek capital letter kappa                                            -->
  <!ENTITY Lambda   "&#923;">  <!-- U+039B ISOgrk3   - greek capital letter lambda                                           -->
  <!ENTITY Mu       "&#924;">  <!-- U+039C           - greek capital letter mu                                               -->
  <!ENTITY Nu       "&#925;">  <!-- U+039D           - greek capital letter nu                                               -->
  <!ENTITY Xi       "&#926;">  <!-- U+039E ISOgrk3   - greek capital letter xi                                               -->
  <!ENTITY Omicron  "&#927;">  <!-- U+039F           - greek capital letter omicron                                          -->
  <!ENTITY Pi       "&#928;">  <!-- U+03A0 ISOgrk3   - greek capital letter pi                                               -->
  <!ENTITY Rho      "&#929;">  <!-- U+03A1           - greek capital letter rho                                              -->
  <!ENTITY Sigma    "&#931;">  <!-- U+03A3 ISOgrk3   - greek capital letter sigma                                            -->
  <!ENTITY Tau      "&#932;">  <!-- U+03A4           - greek capital letter tau                                              -->
  <!ENTITY Upsilon  "&#933;">  <!-- U+03A5 ISOgrk3   - greek capital letter upsilon                                          -->
  <!ENTITY Phi      "&#934;">  <!-- U+03A6 ISOgrk3   - greek capital letter phi                                              -->
  <!ENTITY Chi      "&#935;">  <!-- U+03A7           - greek capital letter chi                                              -->
  <!ENTITY Psi      "&#936;">  <!-- U+03A8 ISOgrk3   - greek capital letter psi                                              -->
  <!ENTITY Omega    "&#937;">  <!-- U+03A9 ISOgrk3   - greek capital letter omega                                            -->
  <!ENTITY alpha    "&#945;">  <!-- U+03B1 ISOgrk3   - greek small letter alpha                                              -->
  <!ENTITY beta     "&#946;">  <!-- U+03B2 ISOgrk3   - greek small letter beta                                               -->
  <!ENTITY gamma    "&#947;">  <!-- U+03B3 ISOgrk3   - greek small letter gamma                                              -->
  <!ENTITY delta    "&#948;">  <!-- U+03B4 ISOgrk3   - greek small letter delta                                              -->
  <!ENTITY epsilon  "&#949;">  <!-- U+03B5 ISOgrk3   - greek small letter epsilon                                            -->
  <!ENTITY zeta     "&#950;">  <!-- U+03B6 ISOgrk3   - greek small letter zeta                                               -->
  <!ENTITY eta      "&#951;">  <!-- U+03B7 ISOgrk3   - greek small letter eta                                                -->
  <!ENTITY theta    "&#952;">  <!-- U+03B8 ISOgrk3   - greek small letter theta                                              -->
  <!ENTITY iota     "&#953;">  <!-- U+03B9 ISOgrk3   - greek small letter iota                                               -->
  <!ENTITY kappa    "&#954;">  <!-- U+03BA ISOgrk3   - greek small letter kappa                                              -->
  <!ENTITY lambda   "&#955;">  <!-- U+03BB ISOgrk3   - greek small letter lambda                                             -->
  <!ENTITY mu       "&#956;">  <!-- U+03BC ISOgrk3   - greek small letter mu                                                 -->
  <!ENTITY nu       "&#957;">  <!-- U+03BD ISOgrk3   - greek small letter nu                                                 -->
  <!ENTITY xi       "&#958;">  <!-- U+03BE ISOgrk3   - greek small letter xi                                                 -->
  <!ENTITY omicron  "&#959;">  <!-- U+03BF NEW       - greek small letter omicron                                            -->
  <!ENTITY pi       "&#960;">  <!-- U+03C0 ISOgrk3   - greek small letter pi                                                 -->
  <!ENTITY rho      "&#961;">  <!-- U+03C1 ISOgrk3   - greek small letter rho                                                -->
  <!ENTITY sigmaf   "&#962;">  <!-- U+03C2 ISOgrk3   - greek small letter final sigma                                        -->
  <!ENTITY sigma    "&#963;">  <!-- U+03C3 ISOgrk3   - greek small letter sigma                                              -->
  <!ENTITY tau      "&#964;">  <!-- U+03C4 ISOgrk3   - greek small letter tau                                                -->
  <!ENTITY upsilon  "&#965;">  <!-- U+03C5 ISOgrk3   - greek small letter upsilon                                            -->
  <!ENTITY phi      "&#966;">  <!-- U+03C6 ISOgrk3   - greek small letter phi                                                -->
  <!ENTITY chi      "&#967;">  <!-- U+03C7 ISOgrk3   - greek small letter chi                                                -->
  <!ENTITY psi      "&#968;">  <!-- U+03C8 ISOgrk3   - greek small letter psi                                                -->
  <!ENTITY omega    "&#969;">  <!-- U+03C9 ISOgrk3   - greek small letter omega                                              -->
  <!ENTITY thetasym "&#977;">  <!-- U+03D1 NEW       - greek small letter theta symbol                                       -->
  <!ENTITY upsih    "&#978;">  <!-- U+03D2 NEW       - greek upsilon with hook symbol                                        -->
  <!ENTITY piv      "&#982;">  <!-- U+03D6 ISOgrk3   - greek pi symbol                                                       -->
  
  <!-- General Punctuation -->
  <!ENTITY bull     "&#8226;"> <!-- U+2022 ISOpub    - bullet = black small circle                                           -->
  <!ENTITY hellip   "&#8230;"> <!-- U+2026 ISOpub    - horizontal ellipsis = three dot leader                                -->
  <!ENTITY prime    "&#8242;"> <!-- U+2032 ISOtech   - prime = minutes = feet                                                -->
  <!ENTITY Prime    "&#8243;"> <!-- U+2033 ISOtech   - double prime = seconds = inches                                       -->
  <!ENTITY oline    "&#8254;"> <!-- U+203E NEW       - overline = spacing overscore                                          -->
  <!ENTITY frasl    "&#8260;"> <!-- U+2044 NEW       - fraction slash                                                        -->
  
  <!-- Letterlike Symbols -->
  <!ENTITY weierp   "&#8472;"> <!-- U+2118 ISOamso   - script capital P = power set = Weierstrass p                          -->
  <!ENTITY image    "&#8465;"> <!-- U+2111 ISOamso   - blackletter capital I = imaginary part                                -->
  <!ENTITY real     "&#8476;"> <!-- U+211C ISOamso   - blackletter capital R = real part symbol                              -->
  <!ENTITY trade    "&#8482;"> <!-- U+2122 ISOnum    - trade mark sign                                                       -->
  <!ENTITY alefsym  "&#8501;"> <!-- U+2135 NEW       - alef symbol = first transfinite cardinal                              -->
  
  <!-- Arrows -->
  <!ENTITY larr     "&#8592;"> <!-- U+2190 ISOnum    - leftwards arrow                                                       -->
  <!ENTITY uarr     "&#8593;"> <!-- U+2191 ISOnum    - upwards arrow                                                         -->
  <!ENTITY rarr     "&#8594;"> <!-- U+2192 ISOnum    - rightwards arrow                                                      -->
  <!ENTITY darr     "&#8595;"> <!-- U+2193 ISOnum    - downwards arrow                                                       -->
  <!ENTITY harr     "&#8596;"> <!-- U+2194 ISOamsa   - left right arrow                                                      -->
  <!ENTITY crarr    "&#8629;"> <!-- U+21B5 NEW       - downwards arrow with corner leftwards = carriage return               -->
  <!ENTITY lArr     "&#8656;"> <!-- U+21D0 ISOtech   - leftwards double arrow                                                -->
  <!ENTITY uArr     "&#8657;"> <!-- U+21D1 ISOamsa   - upwards double arrow                                                  -->
  <!ENTITY rArr     "&#8658;"> <!-- U+21D2 ISOtech   - rightwards double arrow                                               -->
  <!ENTITY dArr     "&#8659;"> <!-- U+21D3 ISOamsa   - downwards double arrow                                                -->
  <!ENTITY hArr     "&#8660;"> <!-- U+21D4 ISOamsa   - left right double arrow                                               -->
  
  <!-- Mathematical Operators -->
  <!ENTITY forall   "&#8704;"> <!-- U+2200 ISOtech   - for all                                                               -->
  <!ENTITY part     "&#8706;"> <!-- U+2202 ISOtech   - partial differential                                                  -->
  <!ENTITY exist    "&#8707;"> <!-- U+2203 ISOtech   - there exists                                                          -->
  <!ENTITY empty    "&#8709;"> <!-- U+2205 ISOamso   - empty set = null set = diameter                                       -->
  <!ENTITY nabla    "&#8711;"> <!-- U+2207 ISOtech   - nabla = backward difference                                           -->
  <!ENTITY isin     "&#8712;"> <!-- U+2208 ISOtech   - element of                                                            -->
  <!ENTITY notin    "&#8713;"> <!-- U+2209 ISOtech   - not an element of                                                     -->
  <!ENTITY ni       "&#8715;"> <!-- U+220B ISOtech   - contains as member                                                    -->
  <!ENTITY prod     "&#8719;"> <!-- U+220F ISOamsb   - n-ary product = product sign                                          -->
  <!ENTITY sum      "&#8721;"> <!-- U+2211 ISOamsb   - n-ary sumation                                                        -->
  <!ENTITY minus    "&#8722;"> <!-- U+2212 ISOtech   - minus sign                                                            -->
  <!ENTITY lowast   "&#8727;"> <!-- U+2217 ISOtech   - asterisk operator                                                     -->
  <!ENTITY radic    "&#8730;"> <!-- U+221A ISOtech   - square root = radical sign                                            -->
  <!ENTITY prop     "&#8733;"> <!-- U+221D ISOtech   - proportional to                                                       -->
  <!ENTITY infin    "&#8734;"> <!-- U+221E ISOtech   - infinity                                                              -->
  <!ENTITY ang      "&#8736;"> <!-- U+2220 ISOamso   - angle                                                                 -->
  <!ENTITY and      "&#8743;"> <!-- U+2227 ISOtech   - logical and = wedge                                                   -->
  <!ENTITY or       "&#8744;"> <!-- U+2228 ISOtech   - logical or = vee                                                      -->
  <!ENTITY cap      "&#8745;"> <!-- U+2229 ISOtech   - intersection = cap                                                    -->
  <!ENTITY cup      "&#8746;"> <!-- U+222A ISOtech   - union = cup                                                           -->
  <!ENTITY int      "&#8747;"> <!-- U+222B ISOtech   - integral                                                              -->
  <!ENTITY there4   "&#8756;"> <!-- U+2234 ISOtech   - therefore                                                             -->
  <!ENTITY sim      "&#8764;"> <!-- U+223C ISOtech   - tilde operator = varies with = similar to                             -->
  <!ENTITY cong     "&#8773;"> <!-- U+2245 ISOtech   - approximately equal to                                                -->
  <!ENTITY asymp    "&#8776;"> <!-- U+2248 ISOamsr   - almost equal to = asymptotic to                                       -->
  <!ENTITY ne       "&#8800;"> <!-- U+2260 ISOtech   - not equal to                                                          -->
  <!ENTITY equiv    "&#8801;"> <!-- U+2261 ISOtech   - identical to                                                          -->
  <!ENTITY le       "&#8804;"> <!-- U+2264 ISOtech   - less-than or equal to                                                 -->
  <!ENTITY ge       "&#8805;"> <!-- U+2265 ISOtech   - greater-than or equal to                                              -->
  <!ENTITY sub      "&#8834;"> <!-- U+2282 ISOtech   - subset of                                                             -->
  <!ENTITY sup      "&#8835;"> <!-- U+2283 ISOtech   - superset of                                                           -->
  <!ENTITY nsub     "&#8836;"> <!-- U+2284 ISOamsn   - not a subset of                                                       -->
  <!ENTITY sube     "&#8838;"> <!-- U+2286 ISOtech   - subset of or equal to                                                 -->
  <!ENTITY supe     "&#8839;"> <!-- U+2287 ISOtech   - superset of or equal to                                               -->
  <!ENTITY oplus    "&#8853;"> <!-- U+2295 ISOamsb   - circled plus = direct sum                                             -->
  <!ENTITY otimes   "&#8855;"> <!-- U+2297 ISOamsb   - circled times = vector product                                        -->
  <!ENTITY perp     "&#8869;"> <!-- U+22A5 ISOtech   - up tack = orthogonal to = perpendicular                               -->
  <!ENTITY sdot     "&#8901;"> <!-- U+22C5 ISOamsb   - dot operator                                                          -->
  
  <!-- Miscellaneous Technical -->
  <!ENTITY lceil    "&#8968;"> <!-- U+2308 ISOamsc   - left ceiling = apl upstile                                            -->
  <!ENTITY rceil    "&#8969;"> <!-- U+2309 ISOamsc   - right ceiling                                                         -->
  <!ENTITY lfloor   "&#8970;"> <!-- U+230A ISOamsc   - left floor = apl downstile                                            -->
  <!ENTITY rfloor   "&#8971;"> <!-- U+230B ISOamsc   - right floor                                                           -->
  <!ENTITY lang     "&#9001;"> <!-- U+2329 ISOtech   - left-pointing angle bracket = bra                                     -->
  <!ENTITY rang     "&#9002;"> <!-- U+232A ISOtech   - right-pointing angle bracket = ket                                    -->
  
  <!-- Geometric Shapes -->
  <!ENTITY loz      "&#9674;"> <!-- U+25CA ISOpub    - lozenge                                                               -->
  
  <!-- Miscellaneous Symbols -->
  <!ENTITY spades   "&#9824;"> <!-- U+2660 ISOpub    - black spade suit                                                      -->
  <!ENTITY clubs    "&#9827;"> <!-- U+2663 ISOpub    - black club suit = shamrock                                            -->
  <!ENTITY hearts   "&#9829;"> <!-- U+2665 ISOpub    - black heart suit = valentine                                          -->
  <!ENTITY diams    "&#9830;"> <!-- U+2666 ISOpub    - black diamond suit                                                    -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/datatypes.dtd
  
  Index: datatypes.dtd
  ===================================================================
  <!-- DTD for XML Schemas: Part 2: Datatypes -->
  <!-- Id: datatypes.dtd,v 1.14 2000/10/23 08:58:09 ht Exp  -->
  
  <!-- This DTD cannot be used on its own, it is intended only for incorporation
       in XMLSchema.dtd, q.v. -->
  
  <!-- Define all the element names, with optional prefix -->
  <!ENTITY % simpleType "%p;simpleType">
  <!ENTITY % restriction "%p;restriction">
  <!ENTITY % list "%p;list">
  <!ENTITY % union "%p;union">
  <!ENTITY % maxExclusive "%p;maxExclusive">
  <!ENTITY % minExclusive "%p;minExclusive">
  <!ENTITY % maxInclusive "%p;maxInclusive">
  <!ENTITY % minInclusive "%p;minInclusive">
  <!ENTITY % precision "%p;precision">
  <!ENTITY % scale "%p;scale">
  <!ENTITY % length "%p;length">
  <!ENTITY % minLength "%p;minLength">
  <!ENTITY % maxLength "%p;maxLength">
  <!ENTITY % enumeration "%p;enumeration">
  <!ENTITY % whiteSpace "%p;whiteSpace">
  <!ENTITY % pattern "%p;pattern">
  <!ENTITY % encoding "%p;encoding">
  <!ENTITY % period "%p;period">
  <!ENTITY % duration "%p;duration">
  
  <!-- Customisation entities for the ATTLIST of each element type.
       Define one of these if your schema takes advantage of the
       anyAttribute='##other' in the schema for schemas -->
  
  <!ENTITY % simpleTypeAttrs "">
  <!ENTITY % restrictionAttrs "">
  <!ENTITY % listAttrs "">
  <!ENTITY % unionAttrs "">
  <!ENTITY % simpleTypeAttrs "">
  <!ENTITY % maxExclusiveAttrs "">
  <!ENTITY % minExclusiveAttrs "">
  <!ENTITY % maxInclusiveAttrs "">
  <!ENTITY % minInclusiveAttrs "">
  <!ENTITY % precisionAttrs "">
  <!ENTITY % scaleAttrs "">
  <!ENTITY % lengthAttrs "">
  <!ENTITY % minLengthAttrs "">
  <!ENTITY % maxLengthAttrs "">
  <!ENTITY % enumerationAttrs "">
  <!ENTITY % whiteSpaceAttrs "">
  <!ENTITY % patternAttrs "">
  <!ENTITY % encodingAttrs "">
  <!ENTITY % periodAttrs "">
  <!ENTITY % durationAttrs "">
  <!ENTITY % appinfoAttrs "">
  <!ENTITY % documentationAttrs "">
  
  <!-- Define some entities for informative use as attribute types -->
  <!ENTITY % URIref "CDATA">
  <!ENTITY % XPathExpr "CDATA">
  <!ENTITY % QName "NMTOKEN">
  <!ENTITY % QNames "NMTOKENS">
  <!ENTITY % NCName "NMTOKEN">
  <!ENTITY % nonNegativeInteger "NMTOKEN">
  <!ENTITY % boolean "(true|false)">
  
  <!-- Note that the use of 'facet' below is less restrictive than is
       really intended:  There should in fact be no more than one of each of
       minInclusive, minExclusive, maxInclusive, maxExclusive,
       precision, scale,
       length, maxLength, minLength, encoding, period within datatype,
       and the min- and max- variants of Inclusive and Exclusive are
       mutually exclusive.
       On the other hand,  pattern and enumeration may repeat -->
  <!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
  <!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
  <!ENTITY % bounds "%minBound; | %maxBound;">
  <!ENTITY % numeric "%precision; | %scale;">
  <!ENTITY % ordered "%bounds; | %numeric;">
  <!ENTITY % unordered
     "%pattern; | %enumeration; | %whiteSpace; | %length; | %maxLength; | %minLength;
      | %encoding; | %period; | %duration;">
  <!ENTITY % facet "%ordered; | %unordered;">
  <!ENTITY % facetAttr "value CDATA #REQUIRED">
  <!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
  <!ENTITY % facetModel "(%annotation;)?">
  <!ELEMENT %simpleType; ((%annotation;)?, (%restriction; | %list; | %union;))>
  <!ATTLIST %simpleType;
      name      %NCName; #IMPLIED
      id        ID       #IMPLIED
      %simpleTypeAttrs;>
  <!-- name is required at top level -->
  <!ELEMENT %restriction; ((%annotation;)?,
                           (%restriction1; |
                            ((%simpleType;)?,(%facet;)*)),
                           (%attrDecls;))>
  <!ATTLIST %restriction;
      base      %QName;                  #IMPLIED
      id        ID       #IMPLIED
      %restrictionAttrs;>
  <!-- base and simpleType child are mutually exclusive, one is required -->
  <!-- restriction is shared between simpleType and simpleContent and -->
  <!-- complexContent (in XMLSchema.xsd). restriction1 is for the latter -->
  <!-- cases, when this is restricting a complex type, as is attrDecls -->
  <!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
  <!ATTLIST %list;
      itemType      %QName;             #IMPLIED
      id        ID       #IMPLIED
      %listAttrs;>
  <!-- itemType and simpleType child are mutually exclusive, one is required -->
  <!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
  <!ATTLIST %union;
      id            ID       #IMPLIED
      memberTypes   %QNames;            #IMPLIED
      %unionAttrs;>
  <!-- At least one item in memberTypes or one simpleType child is required -->
  
  <!ELEMENT %maxExclusive; %facetModel;>
  <!ATTLIST %maxExclusive;
          %facetAttr;
          %fixedAttr;
      %maxExclusiveAttrs;>
  <!ELEMENT %minExclusive; %facetModel;>
  <!ATTLIST %minExclusive;
          %facetAttr;
          %fixedAttr;
          %minExclusiveAttrs;>
  
  <!ELEMENT %maxInclusive; %facetModel;>
  <!ATTLIST %maxInclusive;
          %facetAttr;
          %fixedAttr;
          %maxInclusiveAttrs;>
  <!ELEMENT %minInclusive; %facetModel;>
  <!ATTLIST %minInclusive;
          %facetAttr;
          %fixedAttr;
          %minInclusiveAttrs;>
  
  <!ELEMENT %precision; %facetModel;>
  <!ATTLIST %precision;
          %facetAttr;
          %fixedAttr;
          %precisionAttrs;>
  <!ELEMENT %scale; %facetModel;>
  <!ATTLIST %scale;
          %facetAttr;
          %fixedAttr;
          %scaleAttrs;>
  
  <!ELEMENT %length; %facetModel;>
  <!ATTLIST %length;
          %facetAttr;
          %fixedAttr;
          %lengthAttrs;>
  <!ELEMENT %minLength; %facetModel;>
  <!ATTLIST %minLength;
          %facetAttr;
          %fixedAttr;
          %minLengthAttrs;>
  <!ELEMENT %maxLength; %facetModel;>
  <!ATTLIST %maxLength;
          %facetAttr;
          %fixedAttr;
          %maxLengthAttrs;>
  
  <!-- This one can be repeated -->
  <!ELEMENT %enumeration; %facetModel;>
  <!ATTLIST %enumeration;
          %facetAttr;
          %enumerationAttrs;>
  
  <!ELEMENT %whiteSpace; %facetModel;>
  <!ATTLIST %whiteSpace;
          %facetAttr;
          %whiteSpaceAttrs;>
  
  <!-- This one can be repeated -->
  <!ELEMENT %pattern; %facetModel;>
  <!ATTLIST %pattern;
          %facetAttr;
          %patternAttrs;>
  
  <!ELEMENT %encoding; %facetModel;>
  <!ATTLIST %encoding;
          %facetAttr;
          %fixedAttr;
          %encodingAttrs;>
  <!ELEMENT %period; %facetModel;>
  <!ATTLIST %period;
          %facetAttr;
          %fixedAttr;
          %periodAttrs;>
  <!ELEMENT %duration; %facetModel;>
  <!ATTLIST %duration;
          %facetAttr;
          %fixedAttr;
          %durationAttrs;>
  
  
  
  1.1                  xml-forrest/src/resources/entities/document-v10.dtd
  
  Index: document-v10.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Documentation DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document
    type for software documentation for use with the Apache projects.
    It is an XML-compliant DTD and it's maintained by the Apache XML
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Documentation Vx.yz//EN"
         "http://xml.apache.org/DTD/document-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
    Many of the design patterns used in this DTD were take from the
    W3C XML Specification DTD edited by Eve Maler <elm@arbortext.com>.
  
    Where possible, great care has been used to reutilize HTML tag
    names to reduce learning efforts and to allow HTML editors to be
    used for complex authorings like tables and lists.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
  
  FIXME:
    - how can we include char entities without hardwiring them?
    - should "form" tags be included?
    - should all style-free HTML 4.0 markup tags be included?
    - how do we handle the idea of "soft" xlinks?
    - should we add "soft" links to images?
  
  CHANGE HISTORY:
    19991121 Initial version. (SM)
    19991123 Replaced "res" with more standard "strong" for emphasis. (SM)
    19991124 Added "fork" element for window forking behavior. (SM)
    19991124 Added "img-inline" element to separate from "img". (SM)
    19991129 Removed "affiliation" from "author". (SM)
    19991129 Made "author" empty and moved "name|email" as attributes. (SM)
    19991215 Simplified table section. (SM)
    19991215 Changed "img-block" in more friendly "figure". (SM)
    20000125 Added the "icon" image. (SM)
    20000126 Allowed "anchor" in all levels. (SM)
    20000404 Removed the "role" attribute from common-xxx.att. (SM)
    20000815 Allowed "code" inside "strong" and "em". (SM)
  
  COPYRIGHT:
    Copyright (c) 1999-2000 The Apache Software Foundation.
  
    Permission to copy in any form is granted provided this notice is
    included in all copies. Permission to redistribute is granted
    provided this file is distributed untouched in all its parts and
    included files.
  
  ==================================================================== -->
  
  
  
  
  <!-- =============================================================== -->
  <!-- Common character entities (included from external file) -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers of ISO latin char sets -->
  <!ENTITY % charEntity SYSTEM "characters.ent">
  %charEntity;
  
  
  
  
  <!-- =============================================================== -->
  <!-- Userful entitieis for increased DTD readability -->
  <!-- =============================================================== -->
  
  <!ENTITY % text "#PCDATA">
  
  
  <!-- =============================================================== -->
  <!-- Entities for general XML compliance -->
  <!-- =============================================================== -->
  
  <!-- Common attributes
          Every element has an ID attribute (sometimes required,
          but usually optional) for links. %common.att;
          is for common attributes where the ID is optional, and
          %common-idreq.att; is for common attributes where the
          ID is required.
  -->
  <!ENTITY % common.att
          'id                     ID              #IMPLIED
           xml:lang               NMTOKEN         #IMPLIED'>
  <!ENTITY % common-idreq.att
          'id                     ID              #REQUIRED
           xml:lang               NMTOKEN         #IMPLIED'>
  
  
  <!-- xml:space attribute ===============================================
          Indicates that the element contains white space
          that the formatter or other application should retain,
          as appropriate to its function.
  ==================================================================== -->
  <!ENTITY % xmlspace.att
          'xml:space (default|preserve) #FIXED "preserve"'>
  
  
  <!-- def attribute =====================================================
          Points to the element where the relevant definition can be
          found, using the IDREF mechanism.  %def.att; is for optional
          def attributes, and %def-req.att; is for required def
          attributes.
  ==================================================================== -->
  <!ENTITY % def.att
          'def                    IDREF           #IMPLIED'>
  <!ENTITY % def-req.att
          'def                    IDREF           #REQUIRED'>
  
  
  
  <!-- ref attribute =====================================================
          Points to the element where more information can be found,
          using the IDREF mechanism.  %ref.att; is for optional
          ref attributes, and %ref-req.att; is for required ref
          attributes.
  ================================================================== -->
  <!ENTITY % ref.att
          'ref                    IDREF           #IMPLIED'>
  <!ENTITY % ref-req.att
          'ref                    IDREF           #REQUIRED'>
  
  
  <!-- =============================================================== -->
  <!-- Entities for XLink compliance -->
  <!-- =============================================================== -->
  
  <!ENTITY % xlink-simple.att
          'type      (simple|extended|locator|arc) #FIXED "simple"
           href      CDATA                         #IMPLIED
           role      CDATA                         #IMPLIED
           title     CDATA                         #IMPLIED '>
  <!--    'xmlns     CDATA                         #FIXED "http://www.w3.org/XML/XLink/0.9" -->
  <!-- FIXME: brain-dead IE5 has broken support for
       namespace validation and since I use it for editing
       I remove this for now -->
  
  <!ENTITY % xlink-user-replace.att
          'show      (new|parsed|replace)   #FIXED "replace"
           actuate   (user|auto)            #FIXED "user" '>
  
  <!ENTITY % xlink-user-new.att
          'show      (new|parsed|replace)   #FIXED "new"
           actuate   (user|auto)            #FIXED "user" '>
  
  <!ENTITY % xlink-auto-parsed.att
          'show      (new|parsed|replace)   #FIXED "parsed"
           actuate   (user|auto)            #FIXED "auto" '>
  
  <!-- FIXME (SM): XLink doesn't yet cover the idea of soft links so
       introducing it here using the same namespace is _somewhat_
       illegal. Should we create it own namespace?
  -->
  <!ENTITY % xlink-soft.att
          'mode      (hard|soft)            #FIXED "soft" '>
  
  
  <!-- =============================================================== -->
  <!-- Entities for general usage -->
  <!-- =============================================================== -->
  
  
  <!-- Key attribute =====================================================
          Optionally provides a sorting or indexing key, for cases when
          the element content is inappropriate for this purpose.
  ==================================================================== -->
  <!ENTITY % key.att
          'key                    CDATA           #IMPLIED'>
  
  
  
  <!-- Title attributes ==================================================
          Indicates that the element requires to have a title.
  ==================================================================== -->
  <!ENTITY % title.att
          'title                  CDATA           #REQUIRED'>
  
  
  
  <!-- Name attributes ==================================================
          Indicates that the element requires to have a name.
  ==================================================================== -->
  <!ENTITY % name.att
          'name                   CDATA           #REQUIRED'>
  
  
  
  <!-- Email attributes ==================================================
          Indicates that the element requires to have an email.
  ==================================================================== -->
  <!ENTITY % email.att
          'email                  CDATA           #REQUIRED'>
  
  
  
  
  
  <!-- =============================================================== -->
  <!-- General definitions -->
  <!-- =============================================================== -->
  
  <!-- A person is a general human entity -->
  <!ELEMENT person EMPTY>
  <!ATTLIST person %common.att;
                   %name.att;
                   %email.att;>
  
  
  
  
  <!-- =============================================================== -->
  <!-- Content definitions -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.content.mix "">
  
  <!ENTITY % markup "strong|em|code|sub|sup">
  
  <!ENTITY % links "link|connect|jump|fork|anchor">
  
  <!ENTITY % special "br|img|icon">
  
  <!ENTITY % link-content.mix "%text;|%markup;|%special;%local.content.mix;">
  
  <!ENTITY % content.mix "%link-content.mix;|%links;">
  
      <!-- ==================================================== -->
      <!-- Phrase Markup -->
      <!-- ==================================================== -->
  
      <!-- Code (typically monospaced) -->
      <!ELEMENT code (%text;)>
      <!ATTLIST code %common.att;>
  
      <!-- Strong (typically bold) -->
      <!ELEMENT strong (%text;|code)*>
      <!ATTLIST strong %common.att;>
  
      <!-- Emphasis (typically italic) -->
      <!ELEMENT em (%text;|code)*>
      <!ATTLIST em %common.att;>
  
      <!-- Superscript (typically smaller and higher) -->
      <!ELEMENT sup (%text;)>
      <!ATTLIST sup %common.att;>
  
      <!-- Subscript (typically smaller and lower) -->
      <!ELEMENT sub (%text;)>
      <!ATTLIST sub %common.att;>
  
      <!-- FIXME (SM): should we add these HTML 4.0 markups
           which are style-free?
  
            -dfn
            -samp
            -kbd
            -var
            -cite
            -abbr
            -acronym
  
       -->
  
      <!-- ==================================================== -->
      <!-- Hypertextual Links -->
      <!-- ==================================================== -->
  
      <!-- hard replacing link (equivalent of <a ...>) -->
      <!ELEMENT link (%link-content.mix;)*>
      <!ATTLIST link %common.att;
                     %xlink-simple.att;
                     %xlink-user-replace.att;>
  
      <!-- Hard window replacing link (equivalent of <a ... target="_top">) -->
      <!ELEMENT jump (%link-content.mix;)*>
      <!ATTLIST jump %common.att;
                     %xlink-simple.att;
                     %xlink-user-new.att;>
  
      <!-- Hard window forking link (equivalent of <a ... target="_new">) -->
      <!ELEMENT fork (%link-content.mix;)*>
      <!ATTLIST fork %common.att;
                     %xlink-simple.att;
                     %xlink-user-new.att;>
  
      <!-- Anchor point (equivalent of <a name="...">) -->
      <!ELEMENT anchor EMPTY>
      <!ATTLIST anchor %common-idreq.att;>
  
      <!-- Soft link between processed pages (no equivalent in HTML) -->
      <!ELEMENT connect (%link-content.mix;)*>
      <!ATTLIST connect %common.att;
                        %xlink-simple.att;
                        %xlink-user-replace.att;
                        %xlink-soft.att;>
  
      <!-- ==================================================== -->
      <!-- Specials -->
      <!-- ==================================================== -->
  
      <!-- Breakline Object (typically forces line break) -->
      <!ELEMENT br EMPTY>
      <!ATTLIST br %common.att;>
  
      <!-- Image Object (typically an inlined image) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT img EMPTY>
      <!ATTLIST img src    CDATA  #REQUIRED
                    alt    CDATA  #REQUIRED
                    height CDATA  #IMPLIED
                    width  CDATA  #IMPLIED
                    usemap CDATA  #IMPLIED
                    ismap  (ismap) #IMPLIED
                    %common.att;>
  
      <!-- Image Icon (typically an inlined image placed as graphical item) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT icon EMPTY>
      <!ATTLIST icon src    CDATA  #REQUIRED
                     alt    CDATA  #REQUIRED
                     height CDATA  #IMPLIED
                     width  CDATA  #IMPLIED
                     %common.att;>
  
  
  
  
  <!-- =============================================================== -->
  <!-- Blocks definitions -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.blocks "">
  
  <!ENTITY % local.lists "">
  
  <!ENTITY % paragraphs "p|source|note|fixme|figure">
  
  <!ENTITY % tables "table">
  
  <!ENTITY % lists "ol|ul|sl|dl %local.lists;">
  
  <!ENTITY % blocks "anchor|%paragraphs;|%tables;|%lists; %local.blocks;">
  
      <!-- ==================================================== -->
      <!-- Paragraphs -->
      <!-- ==================================================== -->
  
      <!-- Text Paragraph (normally vertically space delimited) -->
      <!ELEMENT p (%content.mix;)*>
      <!ATTLIST p %common.att;>
  
      <!-- Source Paragraph (normally space is preserved) -->
      <!ELEMENT source (%content.mix;)*>
      <!ATTLIST source %common.att;
                       %xmlspace.att;>
  
      <!-- Note Paragraph (normally shown encapsulated) -->
      <!ELEMENT note (%content.mix;)*>
      <!ATTLIST note %common.att;>
  
      <!-- Fixme Paragraph (normally not shown) -->
      <!ELEMENT fixme (%content.mix;)*>
      <!-- the "author" attribute should match the "key" attribute of the
           <author> element -->
      <!ATTLIST fixme author CDATA #REQUIRED
                      %common.att;>
  
      <!-- ==================================================== -->
      <!-- Tables -->
      <!-- ==================================================== -->
  
      <!-- Attributes that indicate the spanning of the table cell -->
      <!ENTITY % cell.span 
          'colspan CDATA "1"
           rowspan CDATA "1"'>
  
      <!-- Table element -->
      <!ELEMENT table (caption?, tr+)>
      <!ATTLIST table %common.att;>
  
          <!-- The table title -->
          <!ELEMENT caption (%content.mix;)*>
          <!ATTLIST caption %common.att;>
  
          <!-- The table row element -->
          <!ELEMENT tr (th|td)+>
          <!ATTLIST tr %common.att;>
  
              <!-- The table row header element -->
              <!ELEMENT th (%content.mix;)*>
              <!ATTLIST th %common.att;
                           %cell.span;>
  
              <!-- The table row description element -->
              <!ELEMENT td (%content.mix;)*>
              <!ATTLIST td %common.att;
                           %cell.span;>
  
      <!-- ==================================================== -->
      <!-- Lists -->
      <!-- ==================================================== -->
  
      <!-- Unordered list (typically bulleted) -->
      <!ELEMENT ul (li|%lists;)+>
      <!--    spacing attribute:
              Use "normal" to get normal vertical spacing for items;
              use "compact" to get less spacing.  The default is dependent
              on the stylesheet. -->
      <!ATTLIST ul
              %common.att;
              spacing         (normal|compact)        #IMPLIED>
  
      <!-- Ordered list (typically numbered) -->
      <!ELEMENT ol (li|%lists;)+>
      <!--    spacing attribute:
              Use "normal" to get normal vertical spacing for items;
              use "compact" to get less spacing.  The default is dependent
              on the stylesheet. -->
      <!ATTLIST ol
              %common.att;
              spacing         (normal|compact)        #IMPLIED>
  
      <!-- Simple list (typically with no mark) -->
      <!ELEMENT sl (li|%lists;)+>
      <!ATTLIST sl %common.att;>
  
          <!-- List item -->
          <!ELEMENT li (%content.mix;|%lists;)*>
          <!ATTLIST li %common.att;>
  
      <!-- Definition list (typically two-column) -->
      <!ELEMENT dl (dt,dd)+>
      <!ATTLIST dl %common.att;>
  
          <!-- Definition term -->
          <!ELEMENT dt (%content.mix;)*>
          <!ATTLIST dt %common.att;>
  
          <!-- Definition description -->
          <!ELEMENT dd (%content.mix;)*>
          <!ATTLIST dd %common.att;>
  
      <!-- ==================================================== -->
      <!-- Special Blocks -->
      <!-- ==================================================== -->
  
      <!-- Image Block (typically a separated and centered image) -->
      <!-- FIXME (SM): should we have the notion of soft links even here
           for inlined objects? -->
      <!ELEMENT figure EMPTY>
      <!ATTLIST figure src    CDATA  #REQUIRED
                       alt    CDATA  #REQUIRED
                       height CDATA  #IMPLIED
                       width  CDATA  #IMPLIED
                       usemap CDATA  #IMPLIED
                       ismap  (ismap) #IMPLIED
                       %common.att;>
  
  
  
  
  
  <!-- =============================================================== -->
  <!-- Document -->
  <!-- =============================================================== -->
  
  <!ELEMENT document (header?, body, footer?)>
  <!ATTLIST document %common.att;>
  
      <!-- ==================================================== -->
      <!-- Header -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.headers "">
  
      <!ELEMENT header (title, subtitle?, version?, type?, authors,
                        notice*, abstract? %local.headers;)>
      <!ATTLIST header %common.att;>
  
      <!ELEMENT title (%text;)>
      <!ATTLIST title %common.att;>
  
      <!ELEMENT subtitle (%text;)>
      <!ATTLIST subtitle %common.att;>
  
      <!ELEMENT version (%text;)>
      <!ATTLIST version %common.att;>
  
      <!ELEMENT type (%text;)>
      <!ATTLIST type %common.att;>
  
      <!ELEMENT authors (person+)>
      <!ATTLIST authors %common.att;>
  
      <!ELEMENT notice (%content.mix;)*>
      <!ATTLIST notice %common.att;>
  
      <!ELEMENT abstract (%content.mix;)*>
      <!ATTLIST abstract %common.att;>
  
      <!-- ==================================================== -->
      <!-- Body -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.sections "">
  
      <!ENTITY % sections "s1|anchor %local.sections;">
  
      <!ELEMENT body (%sections;)+>
      <!ATTLIST body %common.att;>
  
          <!ELEMENT s1 (s2|%blocks;)*>
          <!ATTLIST s1 %title.att; %common.att;>
  
              <!ELEMENT s2 (s3|%blocks;)*>
              <!ATTLIST s2 %title.att; %common.att;>
  
                  <!ELEMENT s3 (s4|%blocks;)*>
                  <!ATTLIST s3 %title.att; %common.att;>
  
                      <!ELEMENT s4 (%blocks;)*>
                      <!ATTLIST s4 %title.att; %common.att;>
  
      <!-- ==================================================== -->
      <!-- Footer -->
      <!-- ==================================================== -->
  
      <!ENTITY % local.footers "">
  
      <!ELEMENT footer (legal %local.footers;)>
  
          <!ELEMENT legal (%content.mix;)*>
          <!ATTLIST legal %common.att;>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/faq-v10.dtd
  
  Index: faq-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache FAQ DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software FAQ's for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD FAQ Vx.yz//EN"
         "http://xml.apache.org/DTD/faq-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    FAQs represent a powerful knowledge base and a very good way of solving
    common user problems reducing messages on mail lists and reducing the effort
    required for software installation and usage. Thid DTD want to be a common
    format for FAQ interchange to allow FAQ-O-Matic-type workgroup services to 
    be published in other formats as well as enhancing data interchange.
    
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT faqs (authors?, faq)+>
  <!ATTLIST faqs %common.att; 
                 %title.att;>
  
      <!ELEMENT faq (question, answer)>
      <!ATTLIST faq %common.att;>
      
          <!ELEMENT question (%content.mix;)*>
          <!ATTLIST question %common.att;>
              
          <!ELEMENT answer (%blocks;)*>
          <!ATTLIST answer author IDREF #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/javadoc-v04draft.dtd
  
  Index: javadoc-v04draft.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache JavaDoc DTD (version 0.4-draft)
  
  PURPOSE:
    This DTD is designed to capture the output of JavaDoc as an XML document
    through the use of the JavaDocXML Doclet. The hope is that by having the
    JavaDoc documentation in an XML format, it will be easier for application
    developers working with XML to treat their java source documentation in the
    same way they treat any other XML document within their publication framework.
    
    This DTD should reflect the information contained within the RootDoc object 
    passed to the JavaDocXML Doclet by JavaDoc. The RootDoc object and the rest 
    of the javaDoc Doclet API is specified at
    
    http://java.sun.com/products/jdk/1.2/docs/tooldocs/javadoc/doclet/index.html
    
    The only information that appears to be difficult to derive from this DTD
    that is easy to obtain from the RootDoc object is the information about 
    serialization. However, this information should be derivable by manually 
    looking for the correct serialization methods and other related structures.
    
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD JavaDoc Vx.yz//EN"
         "http://xml.apache.org/DTD/javadoc-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    The authors would like to thank the Cocoon's mail list subscribers for 
    providing such great support and feedback for this DTD.
    
  AUTHORS:
    Kenneth Murphy <murphyk@umsystem.edu>
    
  FIXME:
  
  CHANGE HISTORY:
    199909?? Original idea of XML doclet. (KM)
    199910?? Initial version of this DTD. (KM)
    19991129 Cleaned up DTD. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Common Attribute Entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % name 'name CDATA #REQUIRED'>
  <!ENTITY % dimension 'dimension CDATA #REQUIRED'>
  
  <!ENTITY % abstract 'abstract (true | false) "false"'>
  <!ENTITY % anonymous 'anonymous (true | false) "false"'>
  <!ENTITY % synthetic 'synthetic (true | false) "false"'>
  <!ENTITY % static 'static (true | false) "false"'>
  <!ENTITY % final 'final (true | false) "false"'>
  <!ENTITY % transient 'transient (true | false) "false"'>
  <!ENTITY % volatile 'volatile (true | false) "false"'>
  <!ENTITY % native 'native (true | false) "false"'>
  <!ENTITY % synchronized 'synchronized (true | false) "false"'>
  
  <!ENTITY % access 'access (private | package | protected | public) "package"'>
  <!ENTITY % class.access 'access (package | public) "package"'>
  
  <!ENTITY % extensibility 'extensibility (abstract | final | default) "default"'>
  
  
  <!-- =============================================================== -->
  <!-- Javadoc -->
  <!-- =============================================================== -->
  
  <!ELEMENT javadoc (package*, class*, interface*)>
  
  <!-- =============================================================== -->
  <!-- Package -->
  <!-- =============================================================== -->
  
  <!ELEMENT package (doc?, package*, class*, interface*)>
  <!ATTLIST package %name;>
  
  <!-- =============================================================== -->
  <!-- Class -->
  <!-- =============================================================== -->
  
  <!ELEMENT class (doc?,
                   extends_class?,
                   implements?,
                   field*, 
                   constructor*, 
                   method*,
                   innerclass*)>
  <!ATTLIST class
            %name;
            %extensibility;
            %class.access;>
  
  <!ELEMENT extends_class (classref+)>
            
  <!ELEMENT innerclass (doc?,
                        extends?,
                        implements?,
                        field*, 
                        constructor*, 
                        method*)>
  <!ATTLIST innerclass
            %name;
            %access;
            %abstract;
            %anonymous;
            %final;
            %static;>
            
  <!-- =============================================================== -->
  <!-- Interface -->
  <!-- =============================================================== -->
            
  <!ELEMENT interface (doc?,
                       extends_interface?,
                       field*,
                       method*)>
  <!ATTLIST interface
            %name;
            %access;>
            
  <!ELEMENT extends_interface (interfaceref+)>
  
  <!-- =============================================================== -->
  <!-- Elements -->
  <!-- =============================================================== -->
  
  <!ELEMENT implements (interfaceref+)>
  
  <!ELEMENT throws (classref)+>
  
  <!ELEMENT classref EMPTY>
  <!ATTLIST classref %name;>
            
  <!ELEMENT interfaceref EMPTY>
  <!ATTLIST interfaceref %name;>
            
  <!ELEMENT methodref EMPTY>
  <!ATTLIST methodref %name;>
            
  <!ELEMENT packageref EMPTY>
  <!ATTLIST packageref %name;>
            
  <!ELEMENT primitive EMPTY>
  <!ATTLIST primitive
            type (void | boolean | int | long | byte | short | double | float | char) #REQUIRED>
            
  <!ELEMENT field (doc?, (classref | interfaceref | primitive))>
  <!ATTLIST field
            %name;
            %access;
            %dimension;
            %synthetic;
            %static;
            %final;
            %transient;
            %volatile;>
            
  <!ELEMENT constructor (doc?, parameter*, throws*)>
  <!ATTLIST constructor
            %name;
            %access;
            %synthetic;>
            
  <!ELEMENT method (doc?, returns, parameter*, throws*)>
  <!ATTLIST method
            %name;
            %access;
            %extensibility;
            %native;
            %synthetic;
            %static;
            %synchronized;>
            
  <!ELEMENT returns (classref | interfaceref | primitive)>
  <!ATTLIST returns %dimension;>
            
  <!ELEMENT parameter (classref | interfaceref | primitive)>
  <!ATTLIST parameter
            %name;
            %final;
            %dimension;>
            
  <!ELEMENT dimension (#PCDATA)>
  
  <!ELEMENT doc (#PCDATA | 
                 linktag |
                 authortag |
                 versiontag |
                 paramtag |
                 returntag |
                 exceptiontag |
                 throwstag |
                 seetag |
                 sincetag |
                 deprecatedtag |
                 serialtag |
                 serialfieldtag |
                 serialdatatag)*>
                 
  <!ELEMENT linktag (#PCDATA)>
  <!ATTLIST linktag
            src CDATA #REQUIRED>
            
  <!ELEMENT authortag (#PCDATA | linktag)*>
  
  <!ELEMENT versiontag (#PCDATA | linktag)*>
  
  <!ELEMENT paramtag (#PCDATA | linktag)*>
  <!ATTLIST paramtag %name;>
            
  <!ELEMENT returntag (#PCDATA | linktag)*>
  
  <!ELEMENT exceptiontag (#PCDATA | classref | linktag)*>
  
  <!ELEMENT throwstag (#PCDATA | classref | linktag)*>
  
  <!ELEMENT seetag (#PCDATA | linktag)*>
  <!ATTLIST seetag
            src CDATA #REQUIRED>
            
  <!ELEMENT sincetag (#PCDATA | linktag)*>
  
  <!ELEMENT deprecatedtag (#PCDATA | linktag)*>
  
  <!ELEMENT serialtag (#PCDATA | linktag)*>
  
  <!ELEMENT serialfieldtag (#PCDATA | linktag)*>
  <!ATTLIST serialfieldtag
            fieldname CDATA #REQUIRED
            fieldtype CDATA #REQUIRED>
            
  <!ELEMENT serialdatatag (#PCDATA | linktag)*>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/sitemap-v02.dtd
  
  Index: sitemap-v02.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Cocoon Sitemap DTD (Version 0.2)
  
  PURPOSE:
    INITIAL DRAFT DTD for the Cocoon2 sitemap.xmap files.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE map:sitemap PUBLIC
         "-//APACHE//DTD Cocoon Sitemap Vx.yz//EN"
         "sitemap-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
  * ATTENTION: This initial DTD was reverse-engineered from the various
    sitemap.xmap instances included in the current distribution. This is
    just an attempt to document the existing rules for sitemap structure.
    In many cases a very lax content model is used, simply to get around
    validation issues.
    A proper design process is still required.
  * Needed by XML editing tools for creation of reliable documents.
  * Can generate XSD once DTD is locked down.
  * We need to synchronise this DTD with the relax-ng work
    by <Bruno.Dumon@the-ecorp.com> ... cocoon-dev 2001-07-18
    http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=99545886226916&w=2
  * This DTD has been tested with various XML validating parsers.
  * The big questions (still) are: 
    "What possibilities were not included in the examples?" and 
    "What in the example sitemap.xmap files is mandatory versus optional?"
  
  AUTHORS:
    Jeffrey Ricker NG (Usonia Holdings) <rickerng@usonia.net>
    David Crossley <crossley@indexgeo.com.au>
  
  FIXME:
    - map:act is used in various contexts, so it has a loose definition
    - Completely rewrite this DTD looking from the application
      point-of-view (do not rely on this temporary initial DTD)
    - map:when and map:otherwise are shown in xdocs/sitemap.xml but are
      not used in the sitemap.xmap files
    - align elements and attributes with sitemap*.xsl
    - review all xdocs/userdocs/generators/*.xml etc. and sync with this DTD
  
  CHANGE HISTORY:
    20010715 V0.1 Initial version. (RNG)
    20011106 V0.2 Reviewed all */sitemap.xmap and added definitions (DC)
    20011106 V0.2 All elements now have "map:" prefix. (DC)
    20011106 V0.2 Incorporated comments Bruno Dumon cocoon-dev 20010718 (DC)
    20011116 V0.2 Changes from label/view discussion cocoon-dev 20011115 (DC)
    20011219 V0.2 Deprecated 'redirect-to resource'. Added 'map:call resource'(CH)
  
  ==================================================================== -->
  
  <!ELEMENT map:sitemap (map:components, map:views?, map:resources?,
                         map:action-sets?, map:pipelines)>
  <!ATTLIST map:sitemap
          xmlns:map CDATA #FIXED "http://apache.org/cocoon/sitemap/1.0"
  >
  
  <!-- =============================================================== -->
  <!-- Components -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:components (map:generators, map:transformers, map:readers,
                            map:serializers, map:selectors?, map:matchers?,
                            map:actions?)>
  <!-- RNG: must they appear in this order?
            must they all appear, even if they are empty? -->
  <!-- DC: it seems that some sitemaps do not contain all components
           e.g. documentation/sitemap.xmap does not have map:selectors -->
  
    <!-- Generators ======================================== -->
  <!ELEMENT map:generators (map:generator*)>
  <!ATTLIST map:generators
          default CDATA #IMPLIED
  >
  <!ELEMENT map:generator EMPTY>
  <!ATTLIST map:generator
          name CDATA #REQUIRED
          src CDATA #REQUIRED
          label CDATA #IMPLIED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  
  <!-- RNG: with all attributes, which are required and which are implied? -->
  
    <!-- Transformers ====================================== -->
  <!ELEMENT map:transformers (map:transformer*)>
  <!ATTLIST map:transformers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:transformer ANY>
  <!-- RNG: surely the content is not ANY. However, there were so many
            children here that I did not know where to begin -->
  <!-- DC: here are some that are currently used -->
  <!ELEMENT use-store (#PCDATA)>
  <!ELEMENT use-request-parameters (#PCDATA)>
  <!ELEMENT use-browser-capabilities-db (#PCDATA)>
  <!ELEMENT catalogue-name (#PCDATA)>
  <!ELEMENT catalogue-location (#PCDATA)>
  <!ATTLIST map:transformer
          name CDATA #REQUIRED
          src CDATA #REQUIRED
          label CDATA #IMPLIED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  
    <!-- Readers =========================================== -->
  <!ELEMENT map:readers (map:reader*)>
  <!ATTLIST map:readers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:reader EMPTY>
  <!-- RNG: does reader ever have children? Its peers do. -->
  <!ATTLIST map:reader
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  
    <!-- Serializers ======================================= -->
  <!ELEMENT map:serializers (map:serializer*)>
  <!ATTLIST map:serializers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:serializer (doctype-public|doctype-system|encoding|
                            omit-xml-declaration|parameter)*>
  <!-- RNG: are these the only children of serializer? -->
  <!ATTLIST map:serializer
          name CDATA #REQUIRED
          mime-type CDATA #REQUIRED
          src CDATA #REQUIRED
          pool-max CDATA #IMPLIED
          pool-min CDATA #IMPLIED
          pool-grow CDATA #IMPLIED
  >
  <!ELEMENT doctype-public (#PCDATA)>
  <!ELEMENT doctype-system (#PCDATA)>
  <!ELEMENT encoding (#PCDATA)>
  <!ELEMENT omit-xml-declaration (#PCDATA)>
  <!ELEMENT parameter EMPTY>
  <!ATTLIST parameter
          name CDATA #REQUIRED
          value CDATA #REQUIRED
          type CDATA #IMPLIED
  >
  
    <!-- Selectors ========================================= -->
  <!ELEMENT map:selectors (map:selector*)>
  <!ATTLIST map:selectors
          default CDATA #IMPLIED
  >
  <!ELEMENT map:selector (browser*)>
  <!ATTLIST map:selector
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  <!ELEMENT browser EMPTY>
  <!ATTLIST browser
          name CDATA #REQUIRED
          useragent CDATA #REQUIRED
  >
  
    <!-- Matchers ========================================== -->
  <!ELEMENT map:matchers (map:matcher*)>
  <!ATTLIST map:matchers
          default CDATA #IMPLIED
  >
  <!ELEMENT map:matcher (attribute-name|parameter-name|header-name)*>
  <!ATTLIST map:matcher
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  <!ELEMENT attribute-name (#PCDATA)>
  <!ELEMENT parameter-name (#PCDATA)>
  <!ELEMENT header-name (#PCDATA)>
  
    <!-- Actions =========================================== -->
  <!ELEMENT map:actions (map:action*)>
  <!ATTLIST map:actions
          default CDATA #IMPLIED
  >
  <!ELEMENT map:action EMPTY>
  <!ATTLIST map:action
          name CDATA #REQUIRED
          src CDATA #REQUIRED
  >
  
  <!-- =============================================================== -->
  <!-- Views -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:views (map:view*)>
  <!ELEMENT map:view (map:transform*,map:serialize)>
  <!ATTLIST map:view
          name CDATA #REQUIRED
          from-label CDATA #IMPLIED
          from-position (first|last) "last"
  >
  <!ELEMENT map:serialize (map:parameter*)>
  <!ATTLIST map:serialize
          type CDATA #REQUIRED
          mime-type CDATA #IMPLIED
          status-code CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Resources -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:resources (map:resource*)>
  <!ELEMENT map:resource ((map:generate,map:transform+,map:serialize) | map:act)>
  <!ATTLIST map:resource
          name CDATA #REQUIRED
  >
  <!-- generate and transform defined in PIPELINE section -->
  
  <!-- =============================================================== -->
  <!-- Action Sets -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:action-sets (map:action-set*)>
  <!ELEMENT map:action-set (map:act+)>
  <!ATTLIST map:action-set
          name CDATA #REQUIRED
  >
  <!ELEMENT map:act (map:parameter|map:redirect-to|map:call|map:generate|
                     map:transform|map:serialize|map:act|map:match)*>
  <!ATTLIST map:act
          type CDATA #IMPLIED
          action CDATA #IMPLIED
          set CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Pipelines -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:pipelines (map:pipeline*)>
  <!ELEMENT map:pipeline (map:match*, map:handle-errors?)>
  
  <!ELEMENT map:match (map:mount | map:redirect-to | map:call | map:generate |
                       map:transform | map:serialize | map:read |
                       map:aggregate | map:act | map:match)*>
  <!-- RNG: It seemed from the example that match should be defined as
    match (map:mount*|map:redirect-to*|(map:generate*,map:transform*,map:serialize*)*|map:read*|map:aggregate*)
    but I have no way of knowing.
  -->
  <!-- DC: Now map:act complicates the content model even further -->
  <!ATTLIST map:match
          type CDATA #IMPLIED
          pattern CDATA #REQUIRED
  >
  
  <!-- map:act is already defined in the Action Sets section -->
  
  <!ELEMENT map:mount EMPTY>
  <!ATTLIST map:mount
          uri-prefix CDATA #REQUIRED
          src CDATA #REQUIRED
          reload-method (synchron|asynchron) "asynchron"
          check-reload (true|false|yes|no) "no"
  >
  
  <!ELEMENT map:redirect-to EMPTY>
  <!ATTLIST map:redirect-to
          uri CDATA #IMPLIED
          session (true|false|yes|no) "no"
  >
  <!-- CH: redirects to resources are now deprecated
  <!ATTLIST map:redirect-to
          uri CDATA #IMPLIED
          resource CDATA #IMPLIED
          target CDATA #IMPLIED
          session (true|false|yes|no) "no"
  >
  -->
  
  <!ELEMENT map:call (map:parameter*)>
  <!ATTLIST map:call
          resource CDATA #REQUIRED
  >
  
  <!ELEMENT map:generate (map:parameter*)>
  <!ATTLIST map:generate
          type CDATA #IMPLIED
          src CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  <!ELEMENT map:parameter EMPTY>
  <!ATTLIST map:parameter
          name CDATA #REQUIRED
          value CDATA #REQUIRED
  >
  
  <!ELEMENT map:transform (map:parameter*)>
  <!ATTLIST map:transform
          type CDATA #IMPLIED
          src CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  
  <!-- map:serialize is already defined in VIEWS section -->
  
  <!ELEMENT map:read EMPTY>
  <!ATTLIST map:read
          src CDATA #REQUIRED
          mime-type CDATA #REQUIRED
          type CDATA #IMPLIED
  >
  
  <!ELEMENT map:aggregate (map:part*)>
  <!ATTLIST map:aggregate
          element CDATA #IMPLIED
          prefix CDATA #IMPLIED
          ns CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  <!ELEMENT map:part EMPTY>
  <!ATTLIST map:part
          src CDATA #IMPLIED
          element CDATA #IMPLIED
          ns CDATA #IMPLIED
          strip-root CDATA #IMPLIED
          label CDATA #IMPLIED
  >
  
  <!ELEMENT map:handle-errors (map:generate*,map:transform*,map:serialize*)>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/specification-v10.dtd
  
  Index: specification-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Specification DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software specifications for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Specification Vx.yz//EN"
         "http://xml.apache.org/DTD/specification-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- extend the local.xxx entities -->
  <!ENTITY % local.lists "|bl">
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT specification (header?, body, appendices?, footer?)>
  <!ATTLIST specification %common.att;>
  
      <!ELEMENT appendices (%sections;)+>
      <!ATTLIST appendices %common.att;>
  
  <!-- =============================================================== -->
  <!-- Bibliography List -->
  <!-- =============================================================== -->
  
      <!-- Bibliography list -->
      <!ELEMENT bl (bi)+>
      <!ATTLIST bl %common.att;>
  
          <!-- Book item -->
          <!ELEMENT bi EMPTY>
          <!ATTLIST bi %common.att;
                       %name.att;
                       %title.att;
                       %xlink-simple.att;
                       %xlink-user-new.att;
                       authors CDATA #REQUIRED
                       date    CDATA #IMPLIED>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/svg-cocoon-v11.dtd
  
  Index: svg-cocoon-v11.dtd
  ===================================================================
  <!--
  
  PURPOSE:
  This is a minimal SVG DTD intended solely for Apache Cocoon internal use.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE svg PUBLIC
         "-//APACHE//DTD Cocoon SVG minimal Vx.yz//EN"
         "http://xml.apache.org/DTD/svg-cocoon-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
  The Official SVG DTD is using some entities that cannot yet be resolved
  so this is a hack DTD to get us started. We are only using this DTD to
  enable validation during "build docs" because every XML instance must
  declare its ruleset.
  
  This initial minimal DTD has been reverse-engineered from the structure
  of the current documents at documentation/svg/*.xml
  
  See:
  http://www.w3.org/TR/2001/REC-SVG-20010904/
  http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
  
  CHANGE HISTORY:
    20011031 1.0 Initial version (DC)
    20011102 1.1 Added more elements for new svg/*.xml from Klaus (DC)
  -->
  
  <!ELEMENT svg (defs|image|g|rect|text)*>
  <!ELEMENT defs (filter)*>
  <!ELEMENT filter (feGaussianBlur)*>
  <!ELEMENT feGaussianBlur EMPTY>
  <!ELEMENT g (path)*>
  <!ELEMENT path EMPTY>
  <!ELEMENT image EMPTY>
  <!ELEMENT rect EMPTY>
  <!ELEMENT text (label?)>
  <!ELEMENT label EMPTY>
  
  <!ATTLIST svg height CDATA #REQUIRED
                width CDATA #REQUIRED
                xmlns:xlink CDATA #IMPLIED
  >
   <!--  yikes ... this breaks build docs                            -->
   <!--            just like hacking the official DTD to add <label> -->
   <!--            see email 2001-11-08                              -->
   <!--              xmlns CDATA #FIXED "http://www.w3.org/2000/svg" -->
  
  <!ATTLIST filter id ID #IMPLIED
  >
  <!ATTLIST feGaussianBlur in CDATA #IMPLIED
                stdDeviation CDATA #IMPLIED
  >
  <!ATTLIST g transform CDATA #IMPLIED
  >
  <!ATTLIST path style CDATA #REQUIRED
                d CDATA #REQUIRED
  >
  <!ATTLIST image width CDATA #REQUIRED
                height CDATA #REQUIRED
                xlink:href CDATA #IMPLIED
  >
  <!ATTLIST rect width CDATA #REQUIRED
                height CDATA #REQUIRED
                x CDATA #IMPLIED
                y CDATA #IMPLIED
                fill CDATA #IMPLIED
                style CDATA #IMPLIED
  >
  <!ATTLIST text style CDATA #REQUIRED
                x CDATA #REQUIRED
                y CDATA #REQUIRED
                text-anchor CDATA #IMPLIED
                fill CDATA #IMPLIED
  >
  
  
  
  1.1                  xml-forrest/src/resources/entities/svg10.dtd
  
  Index: svg10.dtd
  ===================================================================
  <!-- =====================================================================
    This is the DTD for SVG 1.0.
  
    The specification for SVG that corresponds to this DTD is available at:
  
      http://www.w3.org/TR/2001/REC-SVG-20010904/
  
    Copyright (c) 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
  
    For SVG 1.0:
  
      Namespace:
        http://www.w3.org/2000/svg  
  
      Public identifier:
        PUBLIC "-//W3C//DTD SVG 1.0//EN"
  
      URI for the DTD:
        http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
  ============================================================================= -->
  <!-- ==============================================================
       ENTITY DECLARATIONS: Data types 
       ============================================================== -->
  <!ENTITY % BaselineShiftValue "CDATA">
  <!-- 'baseline-shift' property/attribute value (e.g., 'baseline', 'sub', etc.) -->
  <!ENTITY % Boolean "(false | true)">
  <!-- feature specification -->
  <!ENTITY % ClassList "CDATA">
  <!-- list of classes -->
  <!ENTITY % ClipValue "CDATA">
  <!-- 'clip' property/attribute value (e.g., 'auto', rect(...)) -->
  <!ENTITY % ClipPathValue "CDATA">
  <!-- 'clip-path' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % ClipFillRule "(nonzero | evenodd | inherit)">
  <!-- 'clip-rule' or fill-rule property/attribute value -->
  <!ENTITY % ContentType "CDATA">
  <!-- media type, as per [RFC2045] -->
  <!ENTITY % Coordinate "CDATA">
  <!-- a <coordinate> -->
  <!ENTITY % Coordinates "CDATA">
  <!-- a list of <coordinate>s -->
  <!ENTITY % Color "CDATA">
  <!-- a <color> value -->
  <!ENTITY % CursorValue "CDATA">
  <!-- 'cursor' property/attribute value (e.g., 'crosshair', %URI;) -->
  <!ENTITY % EnableBackgroundValue "CDATA">
  <!-- 'enable-background' property/attribute value (e.g., 'new', 'accumulate') -->
  <!ENTITY % ExtensionList "CDATA">
  <!-- extension list specification -->
  <!ENTITY % FeatureList "CDATA">
  <!-- feature list specification -->
  <!ENTITY % FilterValue "CDATA">
  <!-- 'filter' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % FontFamilyValue "CDATA">
  <!-- 'font-family' property/attribute value (i.e., list of fonts) -->
  <!ENTITY % FontSizeValue "CDATA">
  <!-- 'font-size' property/attribute value -->
  <!ENTITY % FontSizeAdjustValue "CDATA">
  <!-- 'font-size-adjust' property/attribute value -->
  <!ENTITY % GlyphOrientationHorizontalValue "CDATA">
  <!-- 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) -->
  <!ENTITY % GlyphOrientationVerticalValue "CDATA">
  <!-- 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) -->
  <!ENTITY % Integer "CDATA">
  <!-- a <integer> -->
  <!ENTITY % KerningValue "CDATA">
  <!-- 'kerning' property/attribute value (e.g., auto | <length>) -->
  <!ENTITY % LanguageCode "NMTOKEN">
  <!-- a language code, as per [RFC3066] -->
  <!ENTITY % LanguageCodes "CDATA">
  <!-- comma-separated list of language codes, as per [RFC3066] -->
  <!ENTITY % Length "CDATA">
  <!-- a <length> -->
  <!ENTITY % Lengths "CDATA">
  <!-- a list of <length>s -->
  <!ENTITY % LinkTarget "NMTOKEN">
  <!-- link to this target -->
  <!ENTITY % MarkerValue "CDATA">
  <!-- 'marker' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % MaskValue "CDATA">
  <!-- 'mask' property/attribute value (e.g., 'none', %URI;) -->
  <!ENTITY % MediaDesc "CDATA">
  <!-- comma-separated list of media descriptors. -->
  <!ENTITY % Number "CDATA">
  <!-- a <number> -->
  <!ENTITY % NumberOptionalNumber "CDATA">
  <!-- list of <number>s, but at least one and at most two -->
  <!ENTITY % NumberOrPercentage "CDATA">
  <!-- a <number> or a  <percentage> -->
  <!ENTITY % Numbers "CDATA">
  <!-- a list of <number>s -->
  <!ENTITY % OpacityValue "CDATA">
  <!-- opacity value (e.g., <number>) -->
  <!ENTITY % Paint "CDATA">
  <!-- a 'fill' or 'stroke' property/attribute value: <paint> -->
  <!ENTITY % PathData "CDATA">
  <!-- a path data specification -->
  <!ENTITY % Points "CDATA">
  <!-- a list of points -->
  <!ENTITY % PreserveAspectRatioSpec "CDATA">
  <!-- 'preserveAspectRatio' attribute specification -->
  <!ENTITY % Script "CDATA">
  <!-- script expression -->
  <!ENTITY % SpacingValue "CDATA">
  <!-- 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) -->
  <!ENTITY % StrokeDashArrayValue "CDATA">
  <!-- 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) -->
  <!ENTITY % StrokeDashOffsetValue "CDATA">
  <!-- 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>) -->
  <!ENTITY % StrokeMiterLimitValue "CDATA">
  <!-- 'stroke-miterlimit' property/attribute value (e.g., <number>) -->
  <!ENTITY % StrokeWidthValue "CDATA">
  <!-- 'stroke-width' property/attribute value (e.g., <length>) -->
  <!ENTITY % StructuredText "content CDATA #FIXED 'structured text'">
  <!ENTITY % StyleSheet "CDATA">
  <!-- style sheet data -->
  <!ENTITY % SVGColor "CDATA">
  <!-- An SVG color value (RGB plus optional ICC) -->
  <!ENTITY % Text "CDATA">
  <!-- arbitrary text string -->
  <!ENTITY % TextDecorationValue "CDATA">
  <!-- 'text-decoration' property/attribute value (e.g., 'none', 'underline') -->
  <!ENTITY % TransformList "CDATA">
  <!-- list of transforms -->
  <!ENTITY % URI "CDATA">
  <!-- a Uniform Resource Identifier, see [URI] -->
  <!ENTITY % ViewBoxSpec "CDATA">
  <!-- 'viewBox' attribute specification -->
  <!-- ==============================================================
       ENTITY DECLARATIONS: Collections of common attributes 
       ============================================================== -->
  <!-- All elements have an ID. -->
  <!ENTITY % stdAttrs "id ID #IMPLIED
    xml:base %URI; #IMPLIED">
  <!-- Common attributes for elements that might contain character data content. -->
  <!ENTITY % langSpaceAttrs "xml:lang %LanguageCode; #IMPLIED
    xml:space (default|preserve) #IMPLIED">
  <!-- Common attributes to check for system capabilities. -->
  <!ENTITY % testAttrs "requiredFeatures %FeatureList; #IMPLIED
    requiredExtensions %ExtensionList; #IMPLIED
    systemLanguage %LanguageCodes; #IMPLIED">
  <!-- For most uses of URI referencing:
          standard XLink attributes other than xlink:href. -->
  <!ENTITY % xlinkRefAttrs "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
    xlink:type (simple) #FIXED 'simple' 
    xlink:role %URI; #IMPLIED
    xlink:arcrole %URI; #IMPLIED
    xlink:title CDATA #IMPLIED
    xlink:show (other) 'other'
    xlink:actuate (onLoad) #FIXED 'onLoad'">
  <!-- Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' -->
  <!ENTITY % xlinkRefAttrsEmbed "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
    xlink:type (simple) #FIXED 'simple' 
    xlink:role %URI; #IMPLIED
    xlink:arcrole %URI; #IMPLIED
    xlink:title CDATA #IMPLIED
    xlink:show (embed) 'embed'
    xlink:actuate (onLoad) #FIXED 'onLoad'">
  <!ENTITY % graphicsElementEvents "onfocusin %Script; #IMPLIED
     onfocusout %Script; #IMPLIED
     onactivate %Script; #IMPLIED
     onclick %Script; #IMPLIED
     onmousedown %Script; #IMPLIED
     onmouseup %Script; #IMPLIED
     onmouseover %Script; #IMPLIED
     onmousemove %Script; #IMPLIED
     onmouseout %Script; #IMPLIED
     onload %Script; #IMPLIED">
  <!ENTITY % documentEvents "onunload %Script; #IMPLIED
     onabort %Script; #IMPLIED
     onerror %Script; #IMPLIED
     onresize %Script; #IMPLIED
     onscroll %Script; #IMPLIED
     onzoom %Script; #IMPLIED">
  <!ENTITY % animationEvents "onbegin %Script; #IMPLIED
     onend %Script; #IMPLIED
     onrepeat %Script; #IMPLIED">
  <!-- This entity allows for at most one of desc, title and metadata,
       supplied in any order -->
  <!ENTITY % descTitleMetadata "(((desc,((title,metadata?)|(metadata,title?))?)|
            (title,((desc,metadata?)|(metadata,desc?))?)|
            (metadata,((desc,title?)|(title,desc?))?))?)">
  <!-- ==============================================================
       ENTITY DECLARATIONS: Collections of presentation attributes 
       ============================================================== -->
  <!-- The following presentation attributes have to do with specifying color. -->
  <!ENTITY % PresentationAttributes-Color "color %Color; #IMPLIED
     color-interpolation (auto | sRGB | linearRGB | inherit) #IMPLIED
     color-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to container elements. -->
  <!ENTITY % PresentationAttributes-Containers "enable-background %EnableBackgroundValue; #IMPLIED ">
  <!-- The following presentation attributes apply to 'feFlood' elements. -->
  <!ENTITY % PresentationAttributes-feFlood "flood-color %SVGColor; #IMPLIED
     flood-opacity %OpacityValue; #IMPLIED ">
  <!-- The following presentation attributes apply to filling and stroking operations. -->
  <!ENTITY % PresentationAttributes-FillStroke "fill %Paint; #IMPLIED
     fill-opacity %OpacityValue; #IMPLIED
     fill-rule %ClipFillRule; #IMPLIED
     stroke %Paint; #IMPLIED
     stroke-dasharray %StrokeDashArrayValue; #IMPLIED
     stroke-dashoffset %StrokeDashOffsetValue; #IMPLIED
     stroke-linecap (butt | round | square | inherit) #IMPLIED
     stroke-linejoin (miter | round | bevel | inherit) #IMPLIED
     stroke-miterlimit %StrokeMiterLimitValue; #IMPLIED
     stroke-opacity %OpacityValue; #IMPLIED
     stroke-width %StrokeWidthValue; #IMPLIED ">
  <!-- The following presentation attributes apply to filter primitives. -->
  <!ENTITY % PresentationAttributes-FilterPrimitives "color-interpolation-filters (auto | sRGB | linearRGB | inherit) #IMPLIED ">
  <!-- The following presentation attributes have to do with selecting a font to use. -->
  <!ENTITY % PresentationAttributes-FontSpecification "font-family %FontFamilyValue; #IMPLIED
     font-size %FontSizeValue; #IMPLIED
     font-size-adjust %FontSizeAdjustValue; #IMPLIED
     font-stretch (normal | wider | narrower | ultra-condensed | extra-condensed |
                   condensed | semi-condensed | semi-expanded | expanded |
                   extra-expanded | ultra-expanded | inherit) #IMPLIED
     font-style (normal | italic | oblique | inherit) #IMPLIED
     font-variant (normal | small-caps | inherit) #IMPLIED
     font-weight (normal | bold | bolder | lighter | 100 | 200 | 300 |
                 400 | 500 | 600 | 700 | 800 | 900 | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to gradient 'stop' elements. -->
  <!ENTITY % PresentationAttributes-Gradients "stop-color %SVGColor; #IMPLIED
     stop-opacity %OpacityValue; #IMPLIED ">
  <!-- The following presentation attributes apply to graphics elements. -->
  <!ENTITY % PresentationAttributes-Graphics "clip-path %ClipPathValue; #IMPLIED
     clip-rule %ClipFillRule; #IMPLIED
     cursor %CursorValue; #IMPLIED
     display (inline | block | list-item | run-in | compact | marker |
              table | inline-table | table-row-group | table-header-group |
              table-footer-group | table-row | table-column-group | table-column |
              table-cell | table-caption | none | inherit) #IMPLIED
     filter %FilterValue; #IMPLIED
     image-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED
     mask %MaskValue; #IMPLIED
     opacity %OpacityValue; #IMPLIED
     pointer-events (visiblePainted | visibleFill | visibleStroke | visible |
                     painted | fill | stroke | all | none | inherit) #IMPLIED
     shape-rendering (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit) #IMPLIED
     text-rendering (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit) #IMPLIED
     visibility (visible | hidden | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to 'image' elements. -->
  <!ENTITY % PresentationAttributes-Images "color-profile CDATA #IMPLIED ">
  <!--The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements. -->
  <!ENTITY % PresentationAttributes-LightingEffects "lighting-color %SVGColor; #IMPLIED ">
  <!-- The following presentation attributes apply to marker operations. -->
  <!ENTITY % PresentationAttributes-Markers "marker-start %MarkerValue; #IMPLIED
     marker-mid %MarkerValue; #IMPLIED
     marker-end %MarkerValue; #IMPLIED ">
  <!-- The following presentation attributes apply to text content elements. -->
  <!ENTITY % PresentationAttributes-TextContentElements "alignment-baseline (baseline | top | before-edge | text-top | text-before-edge |
                          middle | bottom | after-edge | text-bottom | text-after-edge |
                          ideographic | lower | hanging | mathematical | inherit) #IMPLIED
     baseline-shift %BaselineShiftValue; #IMPLIED
     direction (ltr | rtl | inherit) #IMPLIED
     dominant-baseline (auto | autosense-script | no-change | reset|
                        ideographic | lower | hanging | mathematical | inherit ) #IMPLIED
     glyph-orientation-horizontal %GlyphOrientationHorizontalValue; #IMPLIED
     glyph-orientation-vertical %GlyphOrientationVerticalValue; #IMPLIED
     kerning %KerningValue; #IMPLIED
     letter-spacing %SpacingValue; #IMPLIED
     text-anchor (start | middle | end | inherit) #IMPLIED
     text-decoration %TextDecorationValue; #IMPLIED
     unicode-bidi (normal | embed | bidi-override | inherit) #IMPLIED
     word-spacing %SpacingValue; #IMPLIED ">
  <!-- The following presentation attributes apply to 'text' elements. -->
  <!ENTITY % PresentationAttributes-TextElements "writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED ">
  <!-- The following presentation attributes apply to elements that establish viewports. -->
  <!ENTITY % PresentationAttributes-Viewports "clip %ClipValue; #IMPLIED
     overflow (visible | hidden | scroll | auto | inherit) #IMPLIED ">
  <!--The following represents the complete list of presentation attributes. -->
  <!ENTITY % PresentationAttributes-All "%PresentationAttributes-Color;
     %PresentationAttributes-Containers;
     %PresentationAttributes-feFlood;
     %PresentationAttributes-FillStroke;
     %PresentationAttributes-FilterPrimitives;
     %PresentationAttributes-FontSpecification;
     %PresentationAttributes-Gradients;
     %PresentationAttributes-Graphics;
     %PresentationAttributes-Images;
     %PresentationAttributes-LightingEffects;
     %PresentationAttributes-Markers;
     %PresentationAttributes-TextContentElements;
     %PresentationAttributes-TextElements;
     %PresentationAttributes-Viewports;">
  <!-- ==============================================================
       ENTITY DECLARATIONS: DTD extensions 
       ============================================================== -->
  <!-- Allow for extending the DTD with internal subset for 
       container and graphics elements -->
  <!ENTITY % ceExt "">
  <!ENTITY % geExt "">
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Document Structure 
       ============================================================== -->
  <!ENTITY % svgExt "">
  <!ELEMENT svg (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%svgExt;)* >
  <!ATTLIST svg
  	xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	zoomAndPan (disable | magnify) "magnify"
  	%graphicsElementEvents; 
  	%documentEvents; 
  	version %Number; #FIXED "1.0"
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  	contentScriptType %ContentType; "text/ecmascript"
  	contentStyleType %ContentType; "text/css"
  >
  <!ENTITY % gExt "">
  <!ELEMENT g (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%gExt;)* >
  <!ATTLIST g
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!ENTITY % defsExt "">
  <!ELEMENT defs (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%defsExt;)* >
  <!ATTLIST defs
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!ENTITY % descExt "">
  <!ELEMENT desc (#PCDATA %descExt;)* >
  <!ATTLIST desc
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%StructuredText; 
  >
  <!ENTITY % titleExt "">
  <!ELEMENT title (#PCDATA %titleExt;)* >
  <!ATTLIST title
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%StructuredText; 
  >
  <!ENTITY % symbolExt "">
  <!ELEMENT symbol (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%symbolExt;)* >
  <!ATTLIST symbol
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	%graphicsElementEvents; 
  >
  <!ENTITY % useExt "">
  <!ELEMENT use (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                     %geExt;%useExt;)*) >
  <!ATTLIST use
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!ENTITY % imageExt "">
  <!ELEMENT image (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                     %geExt;%imageExt;)*) >
  <!ATTLIST image
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Images; 
  	%PresentationAttributes-Viewports; 
  	transform %TransformList; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  >
  <!ENTITY % switchExt "">
  <!ELEMENT switch (%descTitleMetadata;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a|foreignObject|
                     animate|set|animateMotion|animateColor|animateTransform
                     %ceExt;%switchExt;)*) >
  <!ATTLIST switch
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Styling 
       ============================================================== -->
  <!ELEMENT style (#PCDATA)>
  <!ATTLIST style
  	%stdAttrs; 
  	xml:space (preserve) #FIXED "preserve"
  	type %ContentType; #REQUIRED
  	media %MediaDesc; #IMPLIED
  	title %Text; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Paths
       ============================================================== -->
  <!ENTITY % pathExt "">
  <!ELEMENT path (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%pathExt;)*) >
  <!ATTLIST path
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	d %PathData; #REQUIRED
  	pathLength %Number; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Basic Shapes
       ============================================================== -->
  <!ENTITY % rectExt "">
  <!ELEMENT rect (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%rectExt;)*) >
  <!ATTLIST rect
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  	rx %Length; #IMPLIED
  	ry %Length; #IMPLIED
  >
  <!ENTITY % circleExt "">
  <!ELEMENT circle (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%circleExt;)*) >
  <!ATTLIST circle
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	r %Length; #REQUIRED
  >
  <!ENTITY % ellipseExt "">
  <!ELEMENT ellipse (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%ellipseExt;)*) >
  <!ATTLIST ellipse
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	rx %Length; #REQUIRED
  	ry %Length; #REQUIRED
  >
  <!ENTITY % lineExt "">
  <!ELEMENT line (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%lineExt;)*) >
  <!ATTLIST line
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x1 %Coordinate; #IMPLIED
  	y1 %Coordinate; #IMPLIED
  	x2 %Coordinate; #IMPLIED
  	y2 %Coordinate; #IMPLIED
  >
  <!ENTITY % polylineExt "">
  <!ELEMENT polyline (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%polylineExt;)*) >
  <!ATTLIST polyline
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	points %Points; #REQUIRED
  >
  <!ENTITY % polygonExt "">
  <!ELEMENT polygon (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                  %geExt;%polygonExt;)*) >
  <!ATTLIST polygon
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-Markers; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	points %Points; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Text
       ============================================================== -->
  <!ENTITY % textExt "">
  <!ELEMENT text (#PCDATA|desc|title|metadata|
                  tspan|tref|textPath|altGlyph|a|animate|set|
                  animateMotion|animateColor|animateTransform
                  %geExt;%textExt;)* >
  <!ATTLIST text
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%PresentationAttributes-TextElements; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % tspanExt "">
  <!ELEMENT tspan (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                  %tspanExt;)* >
  <!ATTLIST tspan
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % trefExt "">
  <!ELEMENT tref (desc|title|metadata|animate|set|animateColor
                  %trefExt;)* >
  <!ATTLIST tref
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  >
  <!ENTITY % textPathExt "">
  <!ELEMENT textPath (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                  %textPathExt;)* >
  <!ATTLIST textPath
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%langSpaceAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	startOffset %Length; #IMPLIED
  	textLength %Length; #IMPLIED
  	lengthAdjust (spacing | spacingAndGlyphs) #IMPLIED
  	method (align | stretch) #IMPLIED
  	spacing (auto | exact) #IMPLIED
  >
  <!ENTITY % altGlyphExt "">
  <!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
  <!ATTLIST altGlyph
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	glyphRef CDATA #IMPLIED
  	format CDATA #IMPLIED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%graphicsElementEvents; 
  	x %Coordinates; #IMPLIED
  	y %Coordinates; #IMPLIED
  	dx %Lengths; #IMPLIED
  	dy %Lengths; #IMPLIED
  	rotate %Numbers; #IMPLIED
  >
  <!ENTITY % altGlyphDefExt "">
  <!ELEMENT altGlyphDef ((glyphRef+|altGlyphItem+) %altGlyphDefExt;) >
  <!ATTLIST altGlyphDef
  	%stdAttrs; 
  >
  <!ENTITY % altGlyphItemExt "">
  <!ELEMENT altGlyphItem (glyphRef+ %altGlyphItemExt;) >
  <!ATTLIST altGlyphItem
  	%stdAttrs; 
  >
  <!ELEMENT glyphRef EMPTY>
  <!ATTLIST glyphRef
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-FontSpecification; 
  	glyphRef CDATA #IMPLIED
  	format CDATA #IMPLIED
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	dx %Number; #IMPLIED
  	dy %Number; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Painting: Filling, Stroking and Marker Symbols 
       ============================================================== -->
  <!ENTITY % markerExt "">
  <!ELEMENT marker (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%markerExt;)* >
  <!ATTLIST marker
  	%stdAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	refX %Coordinate; #IMPLIED
  	refY %Coordinate; #IMPLIED
  	markerUnits (strokeWidth | userSpaceOnUse) #IMPLIED
  	markerWidth %Length; #IMPLIED
  	markerHeight %Length; #IMPLIED
  	orient CDATA #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Color 
       ============================================================== -->
  <!ELEMENT color-profile (%descTitleMetadata;)>
  <!ATTLIST color-profile
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	local CDATA #IMPLIED
  	name CDATA #REQUIRED
  	rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Gradients and Patterns 
       ============================================================== -->
  <!ENTITY % linearGradientExt "">
  <!ELEMENT linearGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                     %linearGradientExt;)*) >
  <!ATTLIST linearGradient
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	gradientTransform %TransformList; #IMPLIED
  	x1 %Coordinate; #IMPLIED
  	y1 %Coordinate; #IMPLIED
  	x2 %Coordinate; #IMPLIED
  	y2 %Coordinate; #IMPLIED
  	spreadMethod (pad | reflect | repeat) #IMPLIED
  >
  <!ENTITY % radialGradientExt "">
  <!ELEMENT radialGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                     %radialGradientExt;)*) >
  <!ATTLIST radialGradient
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	gradientTransform %TransformList; #IMPLIED
  	cx %Coordinate; #IMPLIED
  	cy %Coordinate; #IMPLIED
  	r %Length; #IMPLIED
  	fx %Coordinate; #IMPLIED
  	fy %Coordinate; #IMPLIED
  	spreadMethod (pad | reflect | repeat) #IMPLIED
  >
  <!ENTITY % stopExt "">
  <!ELEMENT stop (animate|set|animateColor
                     %stopExt;)* >
  <!ATTLIST stop
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-Gradients; 
  	offset %NumberOrPercentage; #REQUIRED
  >
  <!ENTITY % patternExt "">
  <!ELEMENT pattern (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%patternExt;)* >
  <!ATTLIST pattern
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	patternUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	patternContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	patternTransform %TransformList; #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Clipping, Masking and Compositing 
       ============================================================== -->
  <!ENTITY % clipPathExt "">
  <!ELEMENT clipPath (%descTitleMetadata;,
                      (path|text|rect|circle|ellipse|line|polyline|polygon|
                       use|animate|set|animateMotion|animateColor|animateTransform
                       %ceExt;%clipPathExt;)*) >
  <!ATTLIST clipPath
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FillStroke; 
  	%PresentationAttributes-FontSpecification; 
  	%PresentationAttributes-Graphics; 
  	%PresentationAttributes-TextContentElements; 
  	%PresentationAttributes-TextElements; 
  	transform %TransformList; #IMPLIED
  	clipPathUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  >
  <!ENTITY % maskExt "">
  <!ELEMENT mask (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%maskExt;)*  >
  <!ATTLIST mask
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	maskUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	maskContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Filter Effects
       ============================================================== -->
  <!ENTITY % filterExt "">
  <!ELEMENT filter (%descTitleMetadata;,(feBlend|feFlood|
    feColorMatrix|feComponentTransfer|
    feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
    feGaussianBlur|feImage|feMerge|
    feMorphology|feOffset|feSpecularLighting|
    feTile|feTurbulence|
    animate|set
    %filterExt;)*) >
  <!ATTLIST filter
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	filterUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	primitiveUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #IMPLIED
  	height %Length; #IMPLIED
  	filterRes %NumberOptionalNumber; #IMPLIED
  >
  <!ENTITY % filter_primitive_attributes "x %Coordinate; #IMPLIED
     y %Coordinate; #IMPLIED
     width %Length; #IMPLIED
     height %Length; #IMPLIED
     result CDATA #IMPLIED">
  <!ENTITY % filter_primitive_attributes_with_in "%filter_primitive_attributes;
     in CDATA #IMPLIED">
  <!ELEMENT feDistantLight (animate | set)*>
  <!ATTLIST feDistantLight
  	%stdAttrs; 
  	azimuth %Number; #IMPLIED
  	elevation %Number; #IMPLIED
  >
  <!ELEMENT fePointLight (animate | set)*>
  <!ATTLIST fePointLight
  	%stdAttrs; 
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	z %Number; #IMPLIED
  >
  <!ELEMENT feSpotLight (animate | set)*>
  <!ATTLIST feSpotLight
  	%stdAttrs; 
  	x %Number; #IMPLIED
  	y %Number; #IMPLIED
  	z %Number; #IMPLIED
  	pointsAtX %Number; #IMPLIED
  	pointsAtY %Number; #IMPLIED
  	pointsAtZ %Number; #IMPLIED
  	specularExponent %Number; #IMPLIED
  	limitingConeAngle %Number; #IMPLIED
  >
  <!ELEMENT feBlend (animate | set)*>
  <!ATTLIST feBlend
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	mode (normal | multiply | screen | darken | lighten) "normal"
  >
  <!ELEMENT feColorMatrix (animate | set)*>
  <!ATTLIST feColorMatrix
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
  	values CDATA #IMPLIED
  >
  <!ELEMENT feComponentTransfer (feFuncR?, feFuncG?, feFuncB?, feFuncA?)>
  <!ATTLIST feComponentTransfer
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ENTITY % component_transfer_function_attributes "type (identity | table | discrete | linear | gamma) #REQUIRED
     tableValues CDATA #IMPLIED
     slope %Number; #IMPLIED
     intercept %Number; #IMPLIED
     amplitude %Number; #IMPLIED
     exponent %Number; #IMPLIED
     offset %Number; #IMPLIED">
  <!ELEMENT feFuncR (animate | set)*>
  <!ATTLIST feFuncR
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncG (animate | set)*>
  <!ATTLIST feFuncG
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncB (animate | set)*>
  <!ATTLIST feFuncB
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feFuncA (animate | set)*>
  <!ATTLIST feFuncA
  	%stdAttrs; 
  	%component_transfer_function_attributes; 
  >
  <!ELEMENT feComposite (animate | set)*>
  <!ATTLIST feComposite
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	operator (over | in | out | atop | xor | arithmetic) "over"
  	k1 %Number; #IMPLIED
  	k2 %Number; #IMPLIED
  	k3 %Number; #IMPLIED
  	k4 %Number; #IMPLIED
  >
  <!ELEMENT feConvolveMatrix (animate | set)*>
  <!ATTLIST feConvolveMatrix
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	order %NumberOptionalNumber; #REQUIRED
  	kernelMatrix CDATA #REQUIRED
  	divisor %Number; #IMPLIED
  	bias %Number; #IMPLIED
  	targetX %Integer; #IMPLIED
  	targetY %Integer; #IMPLIED
  	edgeMode (duplicate | wrap | none) "duplicate"
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  	preserveAlpha %Boolean; #IMPLIED
  >
  <!ELEMENT feDiffuseLighting ((feDistantLight | fePointLight | feSpotLight), (animate | set | animateColor)*)>
  <!ATTLIST feDiffuseLighting
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FilterPrimitives; 
  	%PresentationAttributes-LightingEffects; 
  	%filter_primitive_attributes_with_in; 
  	surfaceScale %Number; #IMPLIED
  	diffuseConstant %Number; #IMPLIED
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feDisplacementMap (animate | set)*>
  <!ATTLIST feDisplacementMap
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	in2 CDATA #REQUIRED
  	scale %Number; #IMPLIED
  	xChannelSelector (R | G | B | A) "A"
  	yChannelSelector (R | G | B | A) "A"
  >
  <!ELEMENT feFlood (animate | set | animateColor)*>
  <!ATTLIST feFlood
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-feFlood; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ELEMENT feGaussianBlur (animate | set)*>
  <!ATTLIST feGaussianBlur
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	stdDeviation %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feImage (animate | set | animateTransform)*>
  <!ATTLIST feImage
  	%stdAttrs; 
  	%xlinkRefAttrsEmbed; 
  	xlink:href %URI; #REQUIRED
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	%filter_primitive_attributes;
  >
  <!ELEMENT feMerge (feMergeNode)*>
  <!ATTLIST feMerge
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes; 
  >
  <!ELEMENT feMergeNode (animate | set)*>
  <!ATTLIST feMergeNode
  	%stdAttrs; 
  	in CDATA #IMPLIED
  >
  <!ELEMENT feMorphology (animate | set)*>
  <!ATTLIST feMorphology
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	operator (erode | dilate) "erode"
  	radius %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feOffset (animate | set)*>
  <!ATTLIST feOffset
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  	dx %Number; #IMPLIED
  	dy %Number; #IMPLIED
  >
  <!ELEMENT feSpecularLighting ((feDistantLight | fePointLight | feSpotLight), (animate | set | animateColor)*)>
  <!ATTLIST feSpecularLighting
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-Color; 
  	%PresentationAttributes-FilterPrimitives; 
  	%PresentationAttributes-LightingEffects; 
  	%filter_primitive_attributes_with_in; 
  	surfaceScale %Number; #IMPLIED
  	specularConstant %Number; #IMPLIED
  	specularExponent %Number; #IMPLIED
  	kernelUnitLength %NumberOptionalNumber; #IMPLIED
  >
  <!ELEMENT feTile (animate | set)*>
  <!ATTLIST feTile
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes_with_in; 
  >
  <!ELEMENT feTurbulence (animate | set)*>
  <!ATTLIST feTurbulence
  	%stdAttrs; 
  	%PresentationAttributes-FilterPrimitives; 
  	%filter_primitive_attributes; 
  	baseFrequency %NumberOptionalNumber; #IMPLIED
  	numOctaves %Integer; #IMPLIED
  	seed %Number; #IMPLIED
  	stitchTiles (stitch | noStitch) "noStitch"
  	type (fractalNoise | turbulence) "turbulence"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Interactivity 
       ============================================================== -->
  <!ELEMENT cursor (%descTitleMetadata;)>
  <!ATTLIST cursor
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Linking
       ============================================================== -->
  <!ENTITY % aExt "">
  <!ELEMENT a (#PCDATA|desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %ceExt;%aExt;)* >
  <!ATTLIST a
  	%stdAttrs; 
  	xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
  	xlink:type (simple) #FIXED "simple"
  	xlink:role %URI; #IMPLIED
  	xlink:arcrole %URI; #IMPLIED
  	xlink:title CDATA #IMPLIED
  	xlink:show (new | replace) "replace"
  	xlink:actuate (onRequest) #FIXED "onRequest"
  	xlink:href %URI; #REQUIRED
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	target %LinkTarget; #IMPLIED
  >
  <!ENTITY % viewExt "">
  <!ELEMENT view (%descTitleMetadata;%viewExt;) >
  <!ATTLIST view
  	%stdAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	viewBox %ViewBoxSpec; #IMPLIED
  	preserveAspectRatio %PreserveAspectRatioSpec; "xMidYMid meet"
  	zoomAndPan (disable | magnify) "magnify"
  	viewTarget CDATA #IMPLIED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Scripting 
       ============================================================== -->
  <!ELEMENT script (#PCDATA)>
  <!ATTLIST script
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #IMPLIED
  	externalResourcesRequired %Boolean; #IMPLIED
  	type %ContentType; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Animation 
       ============================================================== -->
  <!ENTITY % animElementAttrs "%xlinkRefAttrs;
    xlink:href %URI; #IMPLIED">
  <!ENTITY % animAttributeAttrs "attributeName  CDATA  #REQUIRED
    attributeType  CDATA  #IMPLIED">
  <!ENTITY % animTimingAttrs "begin CDATA #IMPLIED 
    dur CDATA #IMPLIED
    end CDATA #IMPLIED
    min CDATA #IMPLIED
    max CDATA #IMPLIED
    restart (always | never | whenNotActive) 'always'
    repeatCount CDATA #IMPLIED 
    repeatDur CDATA #IMPLIED
    fill (remove | freeze) 'remove'">
  <!ENTITY % animValueAttrs "calcMode (discrete | linear | paced | spline) 'linear'
    values CDATA #IMPLIED
    keyTimes CDATA #IMPLIED
    keySplines CDATA #IMPLIED
    from CDATA #IMPLIED
    to CDATA #IMPLIED
    by CDATA #IMPLIED">
  <!ENTITY % animAdditionAttrs "additive       (replace | sum) 'replace'
    accumulate     (none | sum) 'none'">
  <!ENTITY % animateExt "">
  <!ELEMENT animate (%descTitleMetadata;%animateExt;) >
  <!ATTLIST animate
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  >
  <!ENTITY % setExt "">
  <!ELEMENT set (%descTitleMetadata;%setExt;) >
  <!ATTLIST set
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	to CDATA #IMPLIED
  >
  <!ENTITY % animateMotionExt "">
  <!ELEMENT animateMotion (%descTitleMetadata;,mpath? %animateMotionExt;) >
  <!ATTLIST animateMotion
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animTimingAttrs; 
  	calcMode (discrete | linear | paced | spline) "paced"
  	values CDATA #IMPLIED
  	keyTimes CDATA #IMPLIED
  	keySplines CDATA #IMPLIED
  	from CDATA #IMPLIED
  	to CDATA #IMPLIED
  	by CDATA #IMPLIED
  	%animAdditionAttrs; 
  	path CDATA #IMPLIED
  	keyPoints CDATA #IMPLIED
  	rotate CDATA #IMPLIED
  	origin CDATA #IMPLIED
  >
  <!ENTITY % mpathExt "">
  <!ELEMENT mpath (%descTitleMetadata;%mpathExt;) >
  <!ATTLIST mpath
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  	externalResourcesRequired %Boolean; #IMPLIED
  >
  <!ENTITY % animateColorExt "">
  <!ELEMENT animateColor (%descTitleMetadata;%animateColorExt;) >
  <!ATTLIST animateColor
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  >
  <!ENTITY % animateTransformExt "">
  <!ELEMENT animateTransform (%descTitleMetadata;%animateTransformExt;) >
  <!ATTLIST animateTransform
  	%stdAttrs; 
  	%testAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	%animationEvents; 
  	%animElementAttrs; 
  	%animAttributeAttrs; 
  	%animTimingAttrs; 
  	%animValueAttrs; 
  	%animAdditionAttrs; 
  	type (translate | scale | rotate | skewX | skewY) "translate"
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Fonts 
       ============================================================== -->
  <!ENTITY % fontExt "">
  <!ELEMENT font (%descTitleMetadata;,font-face,
                     missing-glyph,(glyph|hkern|vkern %fontExt;)*) >
  <!ATTLIST font
  	%stdAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	horiz-origin-x %Number; #IMPLIED
  	horiz-origin-y %Number; #IMPLIED
  	horiz-adv-x %Number; #REQUIRED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ENTITY % glyphExt "">
  <!ELEMENT glyph (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %glyphExt;)* >
  <!ATTLIST glyph
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	unicode CDATA #IMPLIED
  	glyph-name CDATA #IMPLIED
  	d %PathData; #IMPLIED
  	orientation CDATA #IMPLIED
  	arabic-form CDATA #IMPLIED
  	lang %LanguageCodes; #IMPLIED
  	horiz-adv-x %Number; #IMPLIED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ENTITY % missing-glyphExt "">
  <!ELEMENT missing-glyph (desc|title|metadata|defs|
                     path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|view|switch|a|altGlyphDef|
                     script|style|symbol|marker|clipPath|mask|
                     linearGradient|radialGradient|pattern|filter|cursor|font|
                     animate|set|animateMotion|animateColor|animateTransform|
                     color-profile|font-face
                     %missing-glyphExt;)* >
  <!ATTLIST missing-glyph
  	%stdAttrs; 
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	d %PathData; #IMPLIED
  	horiz-adv-x %Number; #IMPLIED
  	vert-origin-x %Number; #IMPLIED
  	vert-origin-y %Number; #IMPLIED
  	vert-adv-y %Number; #IMPLIED
  >
  <!ELEMENT hkern EMPTY>
  <!ATTLIST hkern
  	%stdAttrs; 
  	u1 CDATA #IMPLIED
  	g1 CDATA #IMPLIED
  	u2 CDATA #IMPLIED
  	g2 CDATA #IMPLIED
  	k %Number; #REQUIRED
  >
  <!ELEMENT vkern EMPTY>
  <!ATTLIST vkern
  	%stdAttrs; 
  	u1 CDATA #IMPLIED
  	g1 CDATA #IMPLIED
  	u2 CDATA #IMPLIED
  	g2 CDATA #IMPLIED
  	k %Number; #REQUIRED
  >
  <!ELEMENT font-face (%descTitleMetadata;, font-face-src?, definition-src?)>
  <!ATTLIST font-face
  	%stdAttrs; 
  	font-family CDATA #IMPLIED
  	font-style CDATA #IMPLIED
  	font-variant CDATA #IMPLIED
  	font-weight CDATA #IMPLIED
  	font-stretch CDATA #IMPLIED
  	font-size CDATA #IMPLIED
  	unicode-range CDATA #IMPLIED
  	units-per-em %Number; #IMPLIED
  	panose-1 CDATA #IMPLIED
  	stemv %Number; #IMPLIED
  	stemh %Number; #IMPLIED
  	slope %Number; #IMPLIED
  	cap-height %Number; #IMPLIED
  	x-height %Number; #IMPLIED
  	accent-height %Number; #IMPLIED
  	ascent %Number; #IMPLIED
  	descent %Number; #IMPLIED
  	widths CDATA #IMPLIED
  	bbox CDATA #IMPLIED
  	ideographic %Number; #IMPLIED
  	alphabetic %Number; #IMPLIED
  	mathematical %Number; #IMPLIED
  	hanging %Number; #IMPLIED
  	v-ideographic %Number; #IMPLIED
  	v-alphabetic %Number; #IMPLIED
  	v-mathematical %Number; #IMPLIED
  	v-hanging %Number; #IMPLIED
  	underline-position %Number; #IMPLIED
  	underline-thickness %Number; #IMPLIED
  	strikethrough-position %Number; #IMPLIED
  	strikethrough-thickness %Number; #IMPLIED
  	overline-position %Number; #IMPLIED
  	overline-thickness %Number; #IMPLIED
  >
  <!ELEMENT font-face-src (font-face-uri | font-face-name)+>
  <!ATTLIST font-face-src
  	%stdAttrs; 
  >
  <!ELEMENT font-face-uri (font-face-format*)>
  <!ATTLIST font-face-uri
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  >
  <!ELEMENT font-face-format EMPTY>
  <!ATTLIST font-face-format
  	%stdAttrs; 
  	string CDATA #IMPLIED
  >
  <!ELEMENT font-face-name EMPTY>
  <!ATTLIST font-face-name
  	%stdAttrs; 
  	name CDATA #IMPLIED
  >
  <!ELEMENT definition-src EMPTY>
  <!ATTLIST definition-src
  	%stdAttrs; 
  	%xlinkRefAttrs; 
  	xlink:href %URI; #REQUIRED
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Metadata 
       ============================================================== -->
  <!ENTITY % metadataExt "">
  <!ELEMENT metadata (#PCDATA %metadataExt;)* >
  <!ATTLIST metadata
  	%stdAttrs; 
  >
  <!-- ==============================================================
       DECLARATIONS CORRESPONDING TO: Extensibility 
       ============================================================== -->
  <!ENTITY % foreignObjectExt "">
  <!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
  <!ATTLIST foreignObject
  	%stdAttrs; 
  	%testAttrs; 
  	%langSpaceAttrs; 
  	externalResourcesRequired %Boolean; #IMPLIED
  	class %ClassList; #IMPLIED
  	style %StyleSheet; #IMPLIED
  	%PresentationAttributes-All; 
  	transform %TransformList; #IMPLIED
  	%graphicsElementEvents; 
  	x %Coordinate; #IMPLIED
  	y %Coordinate; #IMPLIED
  	width %Length; #REQUIRED
  	height %Length; #REQUIRED
  	%StructuredText; 
  >
  
  
  
  1.1                  xml-forrest/src/resources/entities/todo-v10.dtd
  
  Index: todo-v10.dtd
  ===================================================================
  <!-- ===================================================================
       
       Apache Todos DTD (Version 1.0)
  
  PURPOSE:
    This DTD was developed to create a simple yet powerful document 
    type for software development todo lists for use with the Apache projects.  
    It is an XML-compliant DTD and it's maintained by the Apache XML 
    project.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE document PUBLIC
         "-//APACHE//DTD Todo Vx.yz//EN"
         "http://xml.apache.org/DTD/todo-vxyz.dtd">
  
    where 
    
      x := major version
      y := minor version
      z := status identifier (optional)
        
  NOTES:  
    It is important, expecially in open developped software projects, to keep
    track of software changes that need to be done, planned features, development
    assignment, etc. in order to allow better work parallelization and create
    an entry point for people that want to help. This DTD wants to provide
    a solid foundation to provide such information and to allow it to be
    published as well as distributed in a common format.
  
  AUTHORS:
    Stefano Mazzocchi <stefano@apache.org>
    
  FIXME:
    - do we need anymore working contexts? (SM)
  
  CHANGE HISTORY:
    19991129 Initial version. (SM)
    19991225 Added actions element for better structure (SM)
      
  COPYRIGHT:
    Copyright (c) @year@ The Apache Software Foundation.
    
    Permission to copy in any form is granted provided this notice is 
    included in all copies. Permission to redistribute is granted 
    provided this file is distributed untouched in all its parts and 
    included files.
    
  ==================================================================== -->
  
  <!-- =============================================================== -->
  <!-- Extend the Documentation DTD -->
  <!-- =============================================================== -->
  
  <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
       possibly using public identifiers -->
  <!ENTITY % document-dtd SYSTEM "document-v10.dtd">
  %document-dtd;
  
  <!-- =============================================================== -->
  <!-- Common entities -->
  <!-- =============================================================== -->
  
  <!ENTITY % priorities "showstopper|high|medium|low|wish|dream">
  
  <!ENTITY % contexts "build|docs|code|admin|design">
  
  <!-- =============================================================== -->
  <!-- Document Type Definition -->
  <!-- =============================================================== -->
  
  <!ELEMENT todo (devs, actions*)>
  <!ATTLIST todo %common.att; 
                 %title.att;>
  
      <!ELEMENT devs (person+)>
      <!ATTLIST devs %common.att;>
  
      <!ELEMENT actions (action+)>
      <!ATTLIST actions %common.att;
                       priority     (%priorities;)  #IMPLIED>
  
          <!ELEMENT action (%content.mix;)*>
          <!ATTLIST action %common.att;
                           assigned-to  IDREF           #IMPLIED
                           context      (%contexts;)    #REQUIRED>
      
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-forrest/src/resources/entities/catalog-demo/catalog-demo-v10.dtd
  
  Index: catalog-demo-v10.dtd
  ===================================================================
  <!--
  This is the Document Type Definition for the Apache Cocoon sample
  demonstration "catalog-demo" which explains entity resolution
  using catalogs. See the Apache Cocoon documentation
  "Entity resolution with catalogs" (catalog.html).
  
  Version 1.0 2001-08-09
  -->
  
  <!ELEMENT catalog-demo (section+)>
  <!ELEMENT link (#PCDATA)>
  <!ATTLIST link href CDATA #IMPLIED>
  <!ELEMENT para (#PCDATA | link)*>
  <!ELEMENT section (para+)>
  
  
  
  1.1                  xml-forrest/src/resources/entities/catalog-demo/override.xml
  
  Index: override.xml
  ===================================================================
  <para>&note; This is content from the override.xml external file.
   This content will not actually be included, because the catalog
   was set with OVERRIDE NO for this public identifier.
  </para>
  
  
  
  1.1                  xml-forrest/src/resources/entities/catalog-demo/testpub.xml
  
  Index: testpub.xml
  ===================================================================
  <para>&note; This paragraph is automatically included from the
   testpub.xml external file.
   The entity declaration deliberately used a non-existent file
   as the system identifier. The catalog then used the declared
   public identifer to resolve to a specific location on the local
   filesystem.
  </para>
  
  
  
  1.1                  xml-forrest/src/resources/entities/catalog-demo/testsys.xml
  
  Index: testsys.xml
  ===================================================================
  <para>&note; This paragraph is automatically included from the
   testsys.xml external file.
   The declared SYSTEM identifier was resolved by the catalog to a
   specific location on the local filesystem.
  </para>
  
  
  
  1.1                  xml-forrest/src/scratchpad/lib/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/src/scratchpad/src/Manifest.mf
  
  Index: Manifest.mf
  ===================================================================
  Manifest-Version: 1.0
  
  
  1.1                  xml-forrest/src/scratchpad/targets/scratchpad.xtarget
  
  Index: scratchpad.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Interactive scratchpad builds                                       -->
    <!-- =================================================================== -->
    <target name="scratchpad" depends="init" description="Interactive Scratchpad Build">
      <echo message="--------------------------------------------------------------"/>
      <echo message=" "/>    
      <echo message="          ${fullname} ${version} SCRATCHPAD "/>
      <echo message=" "/>    
      <echo message="--------------------------------------------------------------"/>  
      <echo message="Building with ${ant.version}"/>  
      <echo message="using build file ${ant.file}"/>  
      <echo message="--------------------------------------------------------------"/>   
      <echo message=" "/>        
      <echo message=" These are SCRATCHPAD BUILDS. They are not guaranteed to work."/>
      <echo message=" You have been warned. "/>
      <echo message=" "/>
      <echo message=" --------------"/>
      <echo message=" --------------"/>
      <echo message=" --------------"/>
      <echo message=" --------------"/>
      <echo message=" --------------"/>
      <echo message=" --------------"/>
      <echo message=" "/>
  
      <property name="input.selection" value=""/>
      <user-input name="input.selection">Please select a target </user-input>
  
      <ant antfile="src/scratchpad/targets/${input.selection}.xml"/>
  
    </target>
  
  
  
  1.1                  xml-forrest/src/targets/interactive.xtarget
  
  Index: interactive.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Interactive build                                            -->
    <!-- =================================================================== -->
    <target name="interactive" description="Interactive Build" depends="init">          
      <echo message="--------------------------------------------------------------"/>
      <echo message=" "/>    
      <echo message="          ${fullname} ${version}  [${year}] "/>
      <echo message=" "/>    
      <echo message="--------------------------------------------------------------"/>
      <echo message="Building with ${ant.version}"/>  
      <echo message="using build file ${ant.file}"/>  
      <echo message="--------------------------------------------------------------"/>   
      <echo message=" These are the most common build targets."/>      
      <echo message=" You can also invoke them directly; see build.xml for more info. "/> 
      <echo message=" Builds will be in /build directory, distributions in /dist."/>        
      <echo message="  "/>    
      <echo message=" compile ------ compiles the source code "/>     
      <echo message=" docs --------- generates the html docs"/>        
      <echo message=" cleandocs ---- cleans the build docs directory"/>    
      <echo message=" javadocs ----- generates the API documentation"/>     
      <echo message=" test --------- performs the jUnit tests"/>       
      <echo message=" clean -------- cleans the build directory"/>    
      <echo message=" dist --------- creates src and bin distributions"/>    
      <echo message=" scratchpad --- build-run scratchpad code"/>       
      <echo message=" contrib ------ build-run contributed code"/>    
  
      <property name="input.selection" value="compile"/>        
      <user-input name="input.selection">Please select a target </user-input>   
  
      <antcall target="${input.selection}"/>
      
    </target>
  
  
  
  1.1                  xml-forrest/src/targets/project.xtarget
  
  Index: project.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Extra targets for this project                                      -->
    <!-- =================================================================== -->
  
    <!--    
    <target name="ABC" description="Abc" depends="init">          
  
    </target>
    -->
  
  
  
  1.1                  xml-forrest/src/targets/try.xml
  
  Index: try.xml
  ===================================================================
  <!-- try.xml ... these are trial build targets which are currently
    undergoing testing. When ready they can be moved into the main build.xml -->
  
  <project default="trial-init" basedir="." name="Trial builds">
  
    <!-- =================================================================== -->
    <!-- Initialization target                                               -->
    <!-- =================================================================== -->
    <target name="trial-init">
  
    </target>
  
  </project>
  
  <!-- End of file -->
  
  
  
  1.1                  xml-forrest/src/testcases/placeholder
  
  Index: placeholder
  ===================================================================
  CVS happy
  
  
  
  1.1                  xml-forrest/tools/ant/bin/ant
  
  Index: ant
  ===================================================================
  #! /bin/sh
  
  if [ -f "$HOME/.antrc" ] ; then 
    . $HOME/.antrc
  fi
  
  # Cygwin support. $cygwin _must_ be set to either true or false.
  case "`uname`" in
    CYGWIN*) cygwin=true ;;
    *) cygwin=false ;;
  esac
  
  # For Cygwin, ensure paths are in UNIX format before anything is touched
  if $cygwin; then
    [ -n "$ANT_HOME" ] &&
      ANT_HOME=`cygpath --unix "$ANT_HOME"`
    [ -n "$JAVA_HOME" ] &&
      JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
    [ -n "$CLASSPATH" ] &&
      CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
  fi
  
  if [ "$ANT_HOME" = "" ] ; then
    # try to find ANT
    if [ -d /opt/ant ] ; then 
      ANT_HOME=/opt/ant
    fi
  
    if [ -d ${HOME}/opt/ant ] ; then 
      ANT_HOME=${HOME}/opt/ant
    fi
  
    ## resolve links - $0 may be a link to ant's home
    PRG=$0
    progname=`basename $0`
    
    while [ -h "$PRG" ] ; do
      ls=`ls -ld "$PRG"`
      link=`expr "$ls" : '.*-> \(.*\)$'`
      if expr "$link" : '.*/.*' > /dev/null; then
  	PRG="$link"
      else
  	PRG="`dirname $PRG`/$link"
      fi
    done
    
    ANT_HOME=`dirname "$PRG"`/..
  
  fi
  
  if [ "$JAVA_HOME" != "" ] ; then
    if [ "$JAVACMD" = "" ] ; then 
      JAVACMD=$JAVA_HOME/bin/java
    fi
  else
    if [ "$JAVACMD" = "" ] ; then 
      JAVACMD=java
    fi
  fi
   
  # add in the dependency .jar files
  DIRLIBS=${ANT_HOME}/lib/*.jar
  for i in ${DIRLIBS}
  do
      # if the directory is empty, then it will return the input string
      # this is stupid, so case for it
      if [ "$i" != "${DIRLIBS}" ] ; then
          LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
      fi
  done
  
  if [ "$CLASSPATH" != "" ] ; then
    LOCALCLASSPATH=$CLASSPATH:$LOCALCLASSPATH
  fi
  
  if [ "$JAVA_HOME" != "" ] ; then
    if test -f $JAVA_HOME/lib/tools.jar ; then
      LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar
    fi
  
    if test -f $JAVA_HOME/lib/classes.zip ; then
      LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip
    fi
  else
    echo "Warning: JAVA_HOME environment variable is not set."
    echo "  If build fails because sun.* classes could not be found"
    echo "  you will need to set the JAVA_HOME environment variable"
    echo "  to the installation directory of java."
  fi
  
  # supply JIKESPATH to Ant as jikes.class.path
  if [ "$JIKESPATH" != "" ] ; then
    if [ "$ANT_OPTS" != "" ] ; then
      ANT_OPTS="$ANT_OPTS -Djikes.class.path=$JIKESPATH"
    else
      ANT_OPTS=-Djikes.class.path=$JIKESPATH
    fi
  fi
  
  # For Cygwin, switch paths to Windows format before running java
  if $cygwin; then
    ANT_HOME=`cygpath --path --windows "$ANT_HOME"`
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
    LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
  fi
  
  $JAVACMD -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" $ANT_OPTS org.apache.tools.ant.Main "$@"
  
  
  
  1.1                  xml-forrest/tools/ant/bin/ant.bat
  
  Index: ant.bat
  ===================================================================
  @echo off
   
  if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
  
  if not "%OS%"=="Windows_NT" goto win9xStart
  :winNTStart
  @setlocal
  
  rem %~dp0 is name of current script under NT
  set DEFAULT_ANT_HOME=%~dp0
  
  rem : operator works similar to make : operator
  set DEFAULT_ANT_HOME=%DEFAULT_ANT_HOME:\bin\=%
  
  if %ANT_HOME%a==a set ANT_HOME=%DEFAULT_ANT_HOME%
  set DEFAULT_ANT_HOME=
  
  rem On NT/2K grab all arguments at once
  set ANT_CMD_LINE_ARGS=%*
  goto doneStart
  
  :win9xStart
  rem Slurp the command line arguments.  This loop allows for an unlimited number of 
  rem agruments (up to the command line limit, anyway).
  
  set ANT_CMD_LINE_ARGS=
  
  :setupArgs
  if %1a==a goto doneStart
  set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
  shift
  goto setupArgs
  
  :doneStart
  rem This label provides a place for the argument list loop to break out 
  rem and for NT handling to skip to.
  
  rem find ANT_HOME
  if not "%ANT_HOME%"=="" goto checkJava
  
  rem check for ant in Program Files on system drive
  if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive
  set ANT_HOME=%SystemDrive%\Program Files\ant
  goto checkJava
  
  :checkSystemDrive
  rem check for ant in root directory of system drive
  if not exist "%SystemDrive%\ant" goto noAntHome
  set ANT_HOME=%SystemDrive%\ant
  goto checkJava
  
  :noAntHome
  echo ANT_HOME is not set and ant could not be located. Please set ANT_HOME.
  goto end
  
  :checkJava
  set _JAVACMD=%JAVACMD%
  set LOCALCLASSPATH="%CLASSPATH%"
  for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" "%%i"
  
  if "%JAVA_HOME%" == "" goto noJavaHome
  if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java
  if exist "%JAVA_HOME%\lib\tools.jar" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\tools.jar"
  if exist "%JAVA_HOME%\lib\classes.zip" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\classes.zip"
  goto checkJikes
  
  :noJavaHome
  if "%_JAVACMD%" == "" set _JAVACMD=java
  echo.
  echo Warning: JAVA_HOME environment variable is not set.
  echo   If build fails because sun.* classes could not be found
  echo   you will need to set the JAVA_HOME environment variable
  echo   to the installation directory of java.
  echo.
  
  :checkJikes
  if not "%JIKESPATH%" == "" goto runAntWithJikes
  
  :runAnt
  %_JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
  goto end
  
  :runAntWithJikes
  %_JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" -Djikes.class.path=%JIKESPATH% %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
  
  :end
  set LOCALCLASSPATH=
  set _JAVACMD=
  set ANT_CMD_LINE_ARGS=
  
  if not "%OS%"=="Windows_NT" goto mainEnd
  :winNTend
  @endlocal
  
  :mainEnd
  if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
  
  
  
  
  1.1                  xml-forrest/tools/ant/bin/antRun
  
  Index: antRun
  ===================================================================
  #! /bin/sh
  
  # Args: DIR command
  cd "$1"
  CMD="$2"
  shift
  shift
  
  exec $CMD "$@"
  
  
  
  1.1                  xml-forrest/tools/ant/bin/antRun.bat
  
  Index: antRun.bat
  ===================================================================
  @echo off
   
  # Change drive and directory to %1 (Win9X only for NT/2K use "cd /d")
  cd %1
  %1\
  set ANT_RUN_CMD=%2
  shift
  shift
  
  set PARAMS=
  :loop
  if ""%1 == "" goto runCommand
  set PARAMS=%PARAMS% %1
  shift
  goto loop
  
  :runCommand
  rem echo %ANT_RUN_CMD% %PARAMS%
  %ANT_RUN_CMD% %PARAMS%
  
  
  
  
  1.1                  xml-forrest/tools/ant/bin/fix-packages.py
  
  Index: fix-packages.py
  ===================================================================
  #! /usr/bin/env python
  #
  # Mass string translation for java/xml files (change Wanted re for other files)
  #
  # Author: Peter Donald <donaldp@apache.org>
  #
  # Adapted from fixid.py in python distribution under Tools
  #
  
  import sys
  import re
  import string
  import os
  from stat import *
  import getopt
  
  err = sys.stderr.write
  dbg = err
  out = sys.stdout.write
  
  def usage():
  	progname = sys.argv[0]
  	err('Usage: ' + progname + ' [-s file] ... file-or-directory ...\n')
  	err('\n')
  	err('-s substfile : add a file of substitutions\n')
  	err('\n')
  	err('Each non-empty non-comment line in a substitution file must\n')
  	err('contain exactly two words separated by a | character.\n')
  
  def main():
  	try:
  		opts, args = getopt.getopt(sys.argv[1:], 'crs:')
  	except getopt.error, msg:
  		err('Options error: ' + str(msg) + '\n')
  		usage()
  		sys.exit(2)
  	bad = 0
  	if not args: # No arguments
  		usage()
  		sys.exit(2)
  	for opt, arg in opts:
  		if opt == '-s':
  			addsubst(arg)
  	initre()
  	for arg in args:
  		if os.path.isdir(arg):
  			if recursedown(arg): bad = 1
  		elif os.path.islink(arg):
  			err(arg + ': will not process symbolic links\n')
  			bad = 1
  		else:
  			if fix(arg): bad = 1
  	sys.exit(bad)
  
  # Change this regular expression to select a different set of files
  Wanted = '^[a-zA-Z0-9_\-]+\.(java|xml|xinfo)$'
  def wanted(name):
  	return None <> re.match(Wanted, name)
  
  def recursedown(dirname):
  	dbg('recursedown(' + `dirname` + ')\n')
  	bad = 0
  	try:
  		names = os.listdir(dirname)
  	except os.error, msg:
  		err(dirname + ': cannot list directory: ' + str(msg) + '\n')
  		return 1
  	names.sort()
  	subdirs = []
  	for name in names:
  		if name in (os.curdir, os.pardir): continue
  		fullname = os.path.join(dirname, name)
  		if os.path.islink(fullname): pass
  		elif os.path.isdir(fullname):
  			subdirs.append(fullname)
  		elif wanted(name):
  			if fix(fullname): bad = 1
  	for fullname in subdirs:
  		if recursedown(fullname): bad = 1
  	return bad
  
  def fix(filename):
  	dbg('fix(' + `filename` + ')\n')
      
      # File replacement mode
  	try:
  		f = open(filename, 'r')
  	except IOError, msg:
  		err(filename + ': cannot open: ' + str(msg) + '\n')
  		return 1
  
  	head, tail = os.path.split(filename)
  	tempname = os.path.join(head, '@' + tail)
  
  	# If we find a match, we rewind the file and start over but
  	# now copy everything to a temp file.
  	lineno = 0
  	g = None
  	while 1:
  		line = f.readline()
  		if not line: break
  		lineno = lineno + 1
  		newline = fixline(line)
  		if newline != line:
  			if g is None:
  				try:
  					g = open(tempname, 'w')
  				except IOError, msg:
  					f.close()
  					err(tempname+': cannot create: '+
  					    str(msg)+'\n')
  					return 1
  				f.seek(0)
  				lineno = 0
  				out(filename + ':\n')
  				continue # restart from the beginning
  			out(`lineno` + '\n')
  			out('< ' + line)
  			out('> ' + newline)
  		if g is not None:
  			g.write(newline)
  
  	# End of file
  	f.close()
  	if not g: return 0 # No changes
  
  	# Finishing touch -- move files
  
  	# First copy the file's mode to the temp file
  	try:
  		statbuf = os.stat(filename)
  		os.chmod(tempname, statbuf[ST_MODE] & 07777)
  	except os.error, msg:
  		err(tempname + ': warning: chmod failed (' + str(msg) + ')\n')
  
  	# Then make a backup of the original file as filename~
  	try:
  		os.rename(filename, filename + '~')
  	except os.error, msg:
  		err(filename + ': warning: backup failed (' + str(msg) + ')\n')
  
  	# Now move the temp file to the original file
  	try:
  		os.rename(tempname, filename)
  	except os.error, msg:
  		err(filename + ': rename failed (' + str(msg) + ')\n')
  		return 1
  
  	# Return succes
  	return 0
  
  def initre():
  	global SearcherExpr
  
  	keys = Dict.keys()
  	keyCount = len(keys)
  	i = 0
  	reStr = ""
  	while i < len(keys):
  		if i != 0: reStr = reStr + '|'
  		reStr = reStr + keys[i]
  		i = i + 1
  	SearcherExpr = re.compile( reStr )
  
  def fixline(line):
  	global Program
  ##	print '-->', `line`
  	i = 0
  
  	while i < len(line):
  		match = SearcherExpr.search(line, i)
  		if match == None: break
  		found = match.group(0)
  		i = match.start()
  		n = len(found)
  		if Dict.has_key(found):
  			subst = Dict[found]
  
  			line = line[:i] + subst + line[i+n:]
  			n = len(subst)
  		i = i + n
  	return line
  
  Dict = {}
  NotInComment = {}
  
  def addsubst(substfile):
  	try:
  		fp = open(substfile, 'r')
  	except IOError, msg:
  		err(substfile + ': cannot read substfile: ' + str(msg) + '\n')
  		sys.exit(1)
  	lineno = 0
      
  	while 1:
  		line = fp.readline()
  		if not line: break
  		lineno = lineno + 1
  		try:
  			i = string.index(line, '#')
  		except string.index_error:
  			i = -1		# Happens to delete trailing \n
  		words = string.split(line[:i],'|')
  		if not words: continue
  		if len(words) <> 2:
  			err(substfile + ':' + `lineno` + ': warning: bad line: ' + line)
  			continue
  		[key, value] = words
  
  ##		print 'Will replace ', key, ' with ', value
  
  		Dict[key] = value
          
  	fp.close()
  
  main()
  
  
  
  1.1                  xml-forrest/tools/ant/bin/lcp.bat
  
  Index: lcp.bat
  ===================================================================
  set LOCALCLASSPATH=%1;%LOCALCLASSPATH%
   
  
  
  
  1.1                  xml-forrest/tools/ant/bin/runant.pl
  
  Index: runant.pl
  ===================================================================
  #!/usr/bin/perl
  #######################################################################
  #
  # runant.pl
  #
  # wrapper script for invoking ant in a platform with Perl installed
  # this may include cgi-bin invocation, which is considered somewhat daft.
  # (slo: that should be a separate file which can be derived from this
  # and returns the XML formatted output)
  #
  # the code is not totally portable due to classpath and directory splitting
  # issues. oops. (NB, use File::Spec::Functions  will help and the code is
  # structured for the catfile() call, but because of perl version funnies
  # the code is not included. 
  #
  # created:         2000-8-24
  # last modified:   2000-8-24
  # author:          Steve Loughran steve_l@sourceforge.net
  #######################################################################
  #
  # Assumptions:
  #
  # - the "java" executable/script is on the command path
  # - ANT_HOME has been set
  # - target platform uses ":" as classpath separator or perl indicates it is dos/win32
  # - target platform uses "/" as directory separator.
  
  #be fussy about variables
  use strict;
  
  #platform specifics (disabled)
  #use File::Spec::Functions;
  
  #turn warnings on during dev; generates a few spurious uninitialised var access warnings
  #use warnings;
  
  #and set $debug to 1 to turn on trace info
  my $debug=0;
  
  #######################################################################
  #
  # check to make sure environment is setup
  #
  
  my $HOME = $ENV{ANT_HOME};
  if ($HOME eq "")
          {
      die "\n\nANT_HOME *MUST* be set!\n\n";
          }
  
  my $JAVACMD = $ENV{JAVACMD};
  $JAVACMD = "java" if $JAVACMD eq "";
  
  #ISSUE: what java wants to split up classpath varies from platform to platform 
  #and perl is not too hot at hinting which box it is on.
  #here I assume ":" 'cept on win32 and dos. Add extra tests here as needed.
  my $s=":";
  if(($^O eq "MSWin32") || ($^O eq "dos"))
          {
          $s=";";
          }
  
  #build up standard classpath
  my $localpath=$ENV{CLASSPATH};
  if ($localpath eq "")
          {
          print "warning: no initial classpath\n" if ($debug);
          $localpath="";
          }
  
  #add jar files. I am sure there is a perl one liner to do this.
  my $jarpattern="$HOME/lib/*.jar";
  my @jarfiles =glob($jarpattern);
  print "jarfiles=@jarfiles\n" if ($debug);
  my $jar;
  foreach $jar (@jarfiles )
          {
          $localpath.="$s$jar";
          }
  
  #if Java home is defined, look for tools.jar & classes.zip and add to classpath
  my $JAVA_HOME = $ENV{JAVA_HOME};
  if ($JAVA_HOME ne "")
          {
          my $tools="$JAVA_HOME/lib/tools.jar";
          if (-e "$tools")
                  {
                  $localpath .= "$s$tools";
                  }
          my $classes="$JAVA_HOME/lib/classes.zip";
          if (-e $classes)
                  {
                  $localpath .= "$s$classes";
                  }
          }
  else
          {
      print "\n\nWarning: JAVA_HOME environment variable is not set.\n".
                  "If the build fails because sun.* classes could not be found\n".
                  "you will need to set the JAVA_HOME environment variable\n".
                  "to the installation directory of java\n";
          }
  
  #jikes
  my @ANT_OPTS=split $ENV{ANT_OPTS};
  if($ENV{JIKESPATH} ne "")
          {
          push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
          }
  
  #construct arguments to java
  
  my @ARGS;
  push @ARGS, "-classpath", "$localpath", "-Dant.home=$HOME";
  push @ARGS, @ANT_OPTS;
  push @ARGS, "org.apache.tools.ant.Main";
  push @ARGS, @ARGV;
  
  print "\n $JAVACMD @ARGS\n\n" if ($debug);
  
  my $returnValue = system $JAVACMD, @ARGS;
  if ($returnValue eq 0)
          {
          exit 0;
          }
  else
          {
          # only 0 and 1 are widely recognized as exit values
          # so change the exit value to 1
          exit 1;
          }
  
  
  
  1.1                  xml-forrest/tools/ant/lib/ant-1.4.1-optional.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/ant/lib/ant-1.4.1.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/IzPress.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/VERSIONS
  
  Index: VERSIONS
  ===================================================================
  xalan-2.2.0.jar
  xerces-2.0.0.jar
  junit-3.7.jar
  
  
  1.1                  xml-forrest/tools/centipede/lib/jtidy.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/junit.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/xalan.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/xerces.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/lib/xml-apis.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/centipede/src/java/ClassAvailableTask.java
  
  Index: ClassAvailableTask.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  import java.io.*;
  import java.util.*;
  import java.util.zip.*;
  import org.apache.tools.ant.*;
  import org.apache.tools.ant.taskdefs.*;
  import org.apache.tools.ant.types.*;
  
  /**
   * Will set the given property if the requested class is available in the
   * specified classpath. The found class is not loaded!
   * This class is heavily based on the available task in the ant package:
   * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
   *
   * This task searches only in the defined path but not in the parents path
   * unless explicitly overridden by the value of ${build.sysclasspath}
   * like the original available task does.
   * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
   * @version CVS $Revision: 1.1 $ $Date: 2002/02/26 23:50:28 $
   */
  
  public class ClassAvailableTask extends Task {
  
      /**
       * A hashtable of zip files opened by the classloader
       */
      private Hashtable zipFiles = new Hashtable();
  
      private String property;
      private String classname;
      private Path classpath;
      private String value = "true";
  
      public void setClasspath(Path classpath) {
          createClasspath().append(classpath);
      }
  
      public Path createClasspath() {
          if (this.classpath == null) {
              this.classpath = new Path(this.project);
          }
          return this.classpath.createPath();
      }
  
      public void setClasspathRef(Reference r) {
          createClasspath().setRefid(r);
      }
  
      public void setProperty(String property) {
          this.property = property;
      }
  
      public void setValue(String value) {
          this.value = value;
      }
  
      public void setClassname(String classname) {
          if (!"".equals(classname)) {
              this.classname = classname;
          }
      }
  
      public void execute() throws BuildException {
          if (property == null) {
              throw new BuildException("property attribute is required", location);
          }
  
          if (eval()) {
              this.project.setProperty(property, value);
          }
      }
  
      public boolean  eval() throws BuildException {
          if (classname == null) {
              throw new BuildException("At least one of (classname|file|resource) is required", location);
          }
  
          if (classpath != null) {
              classpath.setProject(project);
              classpath = classpath.concatSystemClasspath("ignore");
          }
  
          if (!findClassInComponents(classname)) {
              log("Unable to load class " + classname + " to set property " + property, Project.MSG_VERBOSE);
              return false;
          }
  
          return true;
      }
  
      /**
       * Get an inputstream to a given resource in the given file which may
       * either be a directory or a zip file.
       *
       * @param file the file (directory or jar) in which to search for the resource.
       * @param resourceName the name of the resource for which a stream is required.
       *
       * @return a stream to the required resource or null if the resource cannot be
       * found in the given file object
       */
      private boolean contains(File file, String resourceName) {
          try {
              if (!file.exists()) {
                  return false;
              }
  
              if (file.isDirectory()) {
                  File resource = new File(file, resourceName);
  
                  if (resource.exists()) {
                      return true;
                  }
              }
              else {
                  // is the zip file in the cache
                  ZipFile zipFile = (ZipFile)zipFiles.get(file);
                  if (zipFile == null) {
                      zipFile = new ZipFile(file);
                      zipFiles.put(file, zipFile);
                  }
                  ZipEntry entry = zipFile.getEntry(resourceName);
                  if (entry != null) {
                      return true;
                  }
              }
          }
          catch (Exception e) {
              log("Ignoring Exception " + e.getClass().getName() + ": " + e.getMessage() +
                  " reading resource " + resourceName + " from " + file, Project.MSG_VERBOSE);
          }
  
          return false;
      }
  
      /**
       * Find a class on the given classpath.
       */
      private boolean findClassInComponents(String name) {
          // we need to search the components of the path to see if we can find the
          // class we want.
          final String classname = name.replace('.', '/') + ".class";
          final String[] list = classpath.list();
          boolean found = false;
          int i = 0;
          while (i < list.length && found == false) {
              final File pathComponent = (File)project.resolveFile(list[i]);
              found = this.contains(pathComponent, classname);
              i++;
          }
          return found;
      }
  }
  
  
  
  1.1                  xml-forrest/tools/centipede/src/java/IZPressHtmlCompressTask.java
  
  Index: IZPressHtmlCompressTask.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Krysalis project. All rights reserved.                  *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Krysalis Patchy         *
   * Software License version 1.1_01, a copy of which has been included        *
   * at the bottom of this file.                                               *
   *****************************************************************************/
  
  import com.izforge.izpress.*;
  
  import java.io.InputStream;
  import java.io.FileInputStream;
  import java.io.BufferedInputStream;
  import java.io.OutputStream;
  import java.io.FileOutputStream;
  import java.io.Writer;
  import java.io.PrintWriter;
  import java.io.FileWriter;
  import java.io.BufferedWriter;
  import java.io.FileWriter;
  import java.io.IOException;
  
  import java.util.ArrayList;
  
  import org.w3c.dom.NodeList;
  import org.w3c.dom.Node;
  import org.w3c.dom.Element;
  import org.w3c.dom.Attr;
  import org.w3c.dom.Document;
  import org.w3c.dom.NamedNodeMap;
  
  import org.w3c.tidy.Tidy;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.taskdefs.Property;
  
  /**
   * Task to compress html size.
   *
   * @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a>
   * @created 14 January 2002
   */
  public class IZPressHtmlCompressTask extends org.apache.tools.ant.Task {
  
    private String src;
    private String dest;
    private Compressor compressor;
    private CompressorConfig conf;
    private String wipeComments = "true";
    private String wipeBorders = "true";
    private String wipeReturns = "true";
    private String wipeSpaces = "true";
  
     PrintWriter pw;
    /**
     * Constructor.
     */
    public IZPressHtmlCompressTask() {
      super();
    }
  
    /**
     * Initializes the task.
     */
    public void init() {
      super.init();
      // Setup an instance of IZCompressor.
     conf = 
       new CompressorConfig(false,false,true,true);
    }
  
    /**
     * Run the task.
     * @exception org.apache.tools.ant.BuildException The exception raised during task execution.
     */
    public void execute() throws org.apache.tools.ant.BuildException {
  
      try{
  
        FileInputStream in = new FileInputStream(src);
        FileOutputStream out = new FileOutputStream(dest);
  
        compressor = new Compressor(in,out,conf);
        
        compressor.compress();
  
        out.flush();
        in.close();     
        out.close();      
  
      }
      catch(IOException ioe)
      {
        throw new BuildException(ioe);
      }
    }
  
    public void setSrc(String src) {
      this.src = src;
    }
  
    public void setDest(String dest) {
      this.dest = dest;
    }
  
  
    public void setWipeComments(String wipeComments) {
      this.wipeComments = wipeComments;
    }
  
  
    public void setWipeBorders(String wipeBorders) {
      this.wipeBorders = wipeBorders;
    }
    
      public void setWipeReturns(String wipeReturns) {
      this.wipeReturns = wipeReturns;
    }
  
  
    public void setWipeSpaces(String wipeSpaces) {
      this.wipeSpaces = wipeSpaces;
    }
  
  }
  
  /*
  The Krysalis Patchy Software License, Version 1.1_01
  Copyright (c) 2002 Nicola Ken Barozzi.  All rights reserved.
  
  This Licence is compatible with the BSD licence as described and 
  approved by http://www.opensource.org/, and is based on the
  Apache Software Licence Version 1.1.
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
  
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
  
  3. The end-user documentation included with the redistribution,
     if any, must include the following acknowledgment:
        "This product includes software developed for project 
         Krysalis (http://www.krysalis.org/)."
     Alternately, this acknowledgment may appear in the software itself,
     if and wherever such third-party acknowledgments normally appear.
  
  4. The names "Krysalis" and "Nicola Ken Barozzi" and
     "Krysalis Centipede" must not be used to endorse or promote products
     derived from this software without prior written permission. For
     written permission, please contact krysalis@nicolaken.org.
     
  5. Products derived from this software may not be called "Krysalis",
     "Krysalis Centipede", nor may "Krysalis" appear in their name,
     without prior written permission of Nicola Ken Barozzi.
  
  6. This software may contain voluntary contributions made by many 
     individuals, who decided to donate the code to this project in
     respect of this licence.
  
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL THE KRYSALIS PROJECT OR
  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  ====================================================================*/
  
  
  
  1.1                  xml-forrest/tools/centipede/src/java/JTidyTask.java
  
  Index: JTidyTask.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Krysalis project. All rights reserved.                  *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Krysalis Patchy         *
   * Software License version 1.1_01, a copy of which has been included        *
   * at the bottom of this file.                                               *
   *****************************************************************************/
   
  import java.io.InputStream;
  import java.io.FileInputStream;
  import java.io.BufferedInputStream;
  import java.io.OutputStream;
  import java.io.FileOutputStream;
  import java.io.Writer;
  import java.io.PrintWriter;
  import java.io.FileWriter;
  import java.io.BufferedWriter;
  import java.io.FileWriter;
  import java.io.IOException;
  
  import java.util.ArrayList;
  
  import org.w3c.dom.NodeList;
  import org.w3c.dom.Node;
  import org.w3c.dom.Element;
  import org.w3c.dom.Attr;
  import org.w3c.dom.Document;
  import org.w3c.dom.NamedNodeMap;
  import org.w3c.tidy.Tidy;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.taskdefs.Property;
  
  /**
   * Task to ask property values to the user. Uses current value as default.
   *
   * @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a>
   * @created 14 January 2002
   */
  
  public class JTidyTask
      extends org.apache.tools.ant.Task
  {
      private String src;
      private String dest;
      private String log;
      private Tidy   tidy;
      private String warn    = "false";
      private String summary = "false";
      PrintWriter    pw;
  
      /**
       * Constructor.
       */
  
      public JTidyTask()
      {
          super();
      }
  
      /**
       * Initializes the task.
       */
  
      public void init()
      {
          super.init();
  
          // Setup an instance of Tidy.
          tidy = new Tidy();
          tidy.setXmlOut(true);
          tidy.setXHTML(true);
          tidy.setDropFontTags(true);
          tidy.setLiteralAttribs(true);
          tidy.setMakeClean(true);
          tidy.setShowWarnings(Boolean.getBoolean(warn));
          tidy.setQuiet(!Boolean.getBoolean(summary));
      }
  
      /**
       * Run the task.
       * @exception org.apache.tools.ant.BuildException The exception raised during task execution.
       */
  
      public void execute()
          throws org.apache.tools.ant.BuildException
      {
          try
          {
              PrintWriter pw = new PrintWriter(new FileWriter(log));
  
              tidy.setErrout(pw);
  
              // Extract the document using JTidy and stream it.
              BufferedInputStream  in     =
                  new BufferedInputStream(new FileInputStream(src));
  
              // FileOutputStream out = new FileOutputStream(dest);
              PrintWriter          out    =
                  new PrintWriter(new FileWriter(dest));
  
              // using null as output to get dom so to remove duplicate attributes
              org.w3c.dom.Document domDoc = tidy.parseDOM(in, null);
  
              domDoc.normalize();
              stripDuplicateAttributes(domDoc, null);
              org.apache.xml.serialize.OutputFormat format =
                  new org.apache.xml.serialize.OutputFormat();
  
              format.setIndenting(true);
              format.setEncoding("ISO-8859-1");
              format.setPreserveSpace(true);
              format.setLineSeparator("\n");
              org.apache.xml.serialize.XMLSerializer serializer =
                  new org.apache.xml.serialize.XMLSerializer(out, format);
  
              serializer.serialize(domDoc);
              out.flush();
              out.close();
              in.close();
              pw.flush();
              pw.close();
          }
          catch (IOException ioe)
          {
              throw new BuildException(ioe);
          }
      }
  
      public void setSrc(String src)
      {
          this.src = src;
      }
  
      public void setDest(String dest)
      {
          this.dest = dest;
      }
  
      public void setLog(String log)
      {
          this.log = log;
      }
  
      public void setWarn(String warn)
      {
          this.warn = warn;
      }
  
      public void setSummary(String summary)
      {
          this.summary = summary;
      }
  
      // using parent because jtidy dom is bugged, cannot get parent or delete child
      public static void stripDuplicateAttributes(Node node, Node parent)
      {
  
          // The output depends on the type of the node
          switch (node.getNodeType())
          {
  
              case Node.DOCUMENT_NODE :
              {
                  Document doc   = ( Document ) node;
                  Node     child = doc.getFirstChild();
  
                  while (child != null)
                  {
                      stripDuplicateAttributes(child, node);
                      child = child.getNextSibling();
                  }
                  break;
              }
              case Node.ELEMENT_NODE :
              {
                  Element      elt              = ( Element ) node;
                  NamedNodeMap attrs            = elt.getAttributes();
                  ArrayList    nodesToRemove    = new ArrayList();
                  int          nodesToRemoveNum = 0;
  
                  for (int i = 0; i < attrs.getLength(); i++)
                  {
                      Node a = attrs.item(i);
  
                      for (int j = 0; j < attrs.getLength(); j++)
                      {
                          Node b = attrs.item(j);
  
                          // if there are two attributes with same name
                          if ((i != j)
                                  && (a.getNodeName().equals(b.getNodeName())))
                          {
                              nodesToRemove.add(b);
                              nodesToRemoveNum++;
                          }
                      }
                  }
                  for (int i = 0; i < nodesToRemoveNum; i++)
                  {
                      org.w3c.dom.Attr    nodeToDelete       =
                          ( org.w3c.dom.Attr ) nodesToRemove.get(i);
                      org.w3c.dom.Element nodeToDeleteParent =
                          ( org.w3c.dom
                              .Element ) node;   // nodeToDelete.getParentNode();
  
                      nodeToDeleteParent.removeAttributeNode(nodeToDelete);
                  }
                  nodesToRemove.clear();
                  Node child = elt.getFirstChild();
  
                  while (child != null)
                  {
                      stripDuplicateAttributes(child, node);
                      child = child.getNextSibling();
                  }
                  break;
              }
              default :
  
                  // do nothing
                  break;
          }
      }
  }
  
  /*
  The Krysalis Patchy Software License, Version 1.1_01
  Copyright (c) 2002 Nicola Ken Barozzi.  All rights reserved.
  
  This Licence is compatible with the BSD licence as described and 
  approved by http://www.opensource.org/, and is based on the
  Apache Software Licence Version 1.1.
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
  
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
  
  3. The end-user documentation included with the redistribution,
     if any, must include the following acknowledgment:
        "This product includes software developed for project 
         Krysalis (http://www.krysalis.org/)."
     Alternately, this acknowledgment may appear in the software itself,
     if and wherever such third-party acknowledgments normally appear.
  
  4. The names "Krysalis" and "Nicola Ken Barozzi" and
     "Krysalis Centipede" must not be used to endorse or promote products
     derived from this software without prior written permission. For
     written permission, please contact krysalis@nicolaken.org.
     
  5. Products derived from this software may not be called "Krysalis",
     "Krysalis Centipede", nor may "Krysalis" appear in their name,
     without prior written permission of Nicola Ken Barozzi.
  
  6. This software may contain voluntary contributions made by many 
     individuals, who decided to donate the code to this project in
     respect of this licence.
  
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL THE KRYSALIS PROJECT OR
  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  ====================================================================*/
  
  
  
  1.1                  xml-forrest/tools/centipede/src/java/UserInputTask.java
  
  Index: UserInputTask.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  import java.io.InputStreamReader;
  import java.io.BufferedReader;
  import java.io.IOException;
  import org.apache.tools.ant.taskdefs.Property;
  
  /**
   * Task to ask property values to the user. Uses current value as default.
   *
   * @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a>
   * @created 14 January 2002
   * @version CVS $Revision: 1.1 $ $Date: 2002/02/26 23:50:28 $
   */
  public class UserInputTask extends org.apache.tools.ant.Task {
  
    private String question;
    private String name;
    private String value;
  
    /**
     * Constructor.
     */
    public UserInputTask() {
      super();
    }
  
    /**
     * Initializes the task.
     */
    public void init() {
      super.init();
      question = "?";
    }
  
    /**
     * Run the task.
     * @exception org.apache.tools.ant.BuildException The exception raised during task execution.
     */
    public void execute() throws org.apache.tools.ant.BuildException {
      value = project.getProperty(name);
      String defaultvalue = value;
  
      //if the property exists
      if (value != null) {
  
        System.out.println("\n"+question + " ["+value + "] ");
  
        BufferedReader reader = new BufferedReader(new InputStreamReader (System.in));
  
        try
        {
          value = reader.readLine();
        }
        catch (IOException e)
        {
          value = defaultvalue;
        }
  
        if (!value.equals("")) {
          project.setProperty(name, value);
        } else {
          project.setProperty(name, defaultvalue);
        }
      }
    }
  
    /**
     * Sets the prompt text that will be presented to the user.
     * @param prompt String
     */
    public void addText(String question) {
      this.question=question;
    }
  
    public void setQuestion(String question) {
      this.question = question;
    }
  
    public void setName(String name) {
      this.name = name;
    }
  
  }
  
  
  
  
  1.1                  xml-forrest/tools/centipede/src/java/XmlPropertyTask.java
  
  Index: XmlPropertyTask.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Krysalis project. All rights reserved.                  *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Krysalis Patchy         *
   * Software License version 1.1_01, a copy of which has been included        *
   * at the bottom of this file.                                               *
   *****************************************************************************/
  
  import java.io.InputStream;
  import java.io.FileInputStream;
  import java.io.BufferedInputStream;
  import java.io.OutputStream;
  import java.io.FileOutputStream;
  import java.io.Writer;
  import java.io.PrintWriter;
  import java.io.FileWriter;
  import java.io.BufferedWriter;
  import java.io.FileWriter;
  import java.io.IOException;
  
  import java.util.ArrayList;
  
  import org.w3c.dom.NodeList;
  import org.w3c.dom.Node;
  import org.w3c.dom.Element;
  import org.w3c.dom.Attr;
  import org.w3c.dom.Document;
  import org.w3c.dom.DOMException;
  import org.w3c.dom.NamedNodeMap;
  
  import javax.xml.parsers.DocumentBuilder; 
  import javax.xml.parsers.DocumentBuilderFactory;  
  import javax.xml.parsers.FactoryConfigurationError;  
  import javax.xml.parsers.ParserConfigurationException;
  
  import org.xml.sax.SAXException;  
  import org.xml.sax.SAXParseException;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.taskdefs.Property;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.taskdefs.Property;
  
  import org.apache.tools.ant.Task;
  import org.apache.tools.ant.Project;
  import org.apache.tools.ant.AntClassLoader;
  import org.apache.tools.ant.ProjectHelper;
  import org.apache.tools.ant.types.Path;
  import org.apache.tools.ant.types.Reference;
  
  /**
   * Task get property values from a valid xml file.
   * Example:
   *   <root-tag myattr="true">
   *     <inner-tag>Text</inner-tag>
   *     <2><3><4>false</4></3></2>  
   *   </root-tag>
   *    
   *  xml.root-tag.myattr=true
   *  xml.root-tag.inner-tag=Text
   *  xml.root-tag.2.3.4=false
   *  
   * @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a>
   * @created 14 January 2002
   */
  
  public class XmlPropertyTask extends org.apache.tools.ant.Task
  {
      private String src;
      private org.w3c.dom.Document document;
      
      /**
       * Constructor.
       */
      public XmlPropertyTask()
      {
          super();
      }
  
      /**
       * Initializes the task.
       */
  
      public void init()
      {
          super.init();
      }
  
      /**
       * Run the task.
       * @exception org.apache.tools.ant.BuildException The exception raised during task execution.
       */
      public void execute()
          throws org.apache.tools.ant.BuildException
      {   
          BufferedInputStream configurationStream = null;
        
          try
          {
              configurationStream     =
                  new BufferedInputStream(new FileInputStream(src));
                  
              DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
              
              factory.setValidating(false);
              factory.setNamespaceAware(false);
      
              DocumentBuilder builder = factory.newDocumentBuilder();
              document = builder.parse( configurationStream );
  
              addNodeRecursively(document.getDocumentElement(),"xml");
              
          } catch (SAXException sxe) {
             // Error generated during parsing
             Exception  x = sxe;
             if (sxe.getException() != null)
                 x = sxe.getException();
             throw new BuildException(x);
      
          } catch (ParserConfigurationException pce) {
             // Parser with specified options can't be built
              throw new BuildException(pce);
          } catch (IOException ioe) {
             // I/O error
              throw new BuildException(ioe);
          }
          finally
          { 
            if(configurationStream!=null){
              try{configurationStream.close();}catch(Exception e){}}
          }
      }
  
      
      void addNodeRecursively(org.w3c.dom.Node node, String text) {
  
          if (node.hasAttributes()) {
              org.w3c.dom.NamedNodeMap nodeAttributes = node.getAttributes();
              for (int i = 0; i < nodeAttributes.getLength(); i++) {
                 Node attributeNode =  nodeAttributes.item(i);
                 String attributeName = text+"."+node.getNodeName()+"."+attributeNode.getNodeName();
                 String attributeValue = attributeNode.getNodeValue();               
                 log(attributeName+":"+attributeValue, Project.MSG_VERBOSE);
                 project.setUserProperty(attributeName,attributeValue);               
              }
          }
         
          if(node.getNodeType()==Node.TEXT_NODE){
            String nodeText = node.getNodeValue();
            if(nodeText.trim().length()!=0)
            {  
               log(text+":"+nodeText, Project.MSG_VERBOSE);
               project.setUserProperty(text,nodeText);
            }
          }
                 
            if (node.hasChildNodes()) {
               text+=("."+node.getNodeName());
               org.w3c.dom.NodeList nodeChildren = node.getChildNodes();
               for (int i = 0; i < nodeChildren.getLength(); i++) {
                   addNodeRecursively(nodeChildren.item(i), text);
               }
           }
      }
      
      public void setFile(String src)
      {
          this.src = src;
      }
  }
  
  
  /*
  The Krysalis Patchy Software License, Version 1.1_01
  Copyright (c) 2002 Nicola Ken Barozzi.  All rights reserved.
  
  This Licence is compatible with the BSD licence as described and 
  approved by http://www.opensource.org/, and is based on the
  Apache Software Licence Version 1.1.
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
  
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
  
  3. The end-user documentation included with the redistribution,
     if any, must include the following acknowledgment:
        "This product includes software developed for project 
         Krysalis (http://www.krysalis.org/)."
     Alternately, this acknowledgment may appear in the software itself,
     if and wherever such third-party acknowledgments normally appear.
  
  4. The names "Krysalis" and "Nicola Ken Barozzi" and
     "Krysalis Centipede" must not be used to endorse or promote products
     derived from this software without prior written permission. For
     written permission, please contact krysalis@nicolaken.org.
     
  5. Products derived from this software may not be called "Krysalis",
     "Krysalis Centipede", nor may "Krysalis" appear in their name,
     without prior written permission of Nicola Ken Barozzi.
  
  6. This software may contain voluntary contributions made by many 
     individuals, who decided to donate the code to this project in
     respect of this licence.
  
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL THE KRYSALIS PROJECT OR
  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  ====================================================================*/
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/Release-Checklist.txt
  
  Index: Release-Checklist.txt
  ===================================================================
  - build distributions
  - sign distributions
  - Generate announcements and HEADER.html
  - upload distributions to correct dir
  - tag CVS
  - generate www pages and upload
  - bump release ID
  - send announcements to announcement@apache.org, announcements@xml.apache.org, announcements@jakarta.apache.org
  - news to newsgroups: comp.lang.java.softwaretools
  - post stories on
    *) jakarta news page
    *) theserverside.com
    *) freshmeat.net
    *) www.javaworld.com
    *) www.javalobby.com
    *) www.jguru.com
    *) www.slashdot.org
    (and follow them up)
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/announcement2readme.xsl
  
  Index: announcement2readme.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
    <xsl:output method="html" indent="yes"/>
  
    <xsl:template match="changes">
      <xsl:variable name="version" select="@version"/>
      <xsl:apply-templates select="document(@file,/)/changes/release[attribute::version=string($version)]"/>
    </xsl:template>
  
    <xsl:template match="announcement">
      <style>
        body { background-color: #FFFFFF }
        p { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
        li,ul { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
        div { font-size: 10pt; font-family: Helvetica, Arial, sans-serif; font-style:italic }
        h1 { font-size: 14pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
        h2 { font-size: 12pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
        h3 { font-size: 10pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
        A:link { color: #0000A0 }          /* unvisited link */
        A:visited { color: #A00000 }       /* visited links */
        A:active { color: #00A000 }        /* active links */
      </style>
  
      <a name="sig"><h2>PGP Signatures</h2></a>
  
      <p>Many of the distribution kits have been digitally signed (using
      PGP).  If so, there will be an accompanying
      <samp><em>distribution</em>.asc</samp> file in the same directory as
      the distribution.  The PGP keys can be found in the distribution
      directory at &lt;<a href="http://jakarta.apache.org/builds/jakarta-avalon/release/KEYS">
      <samp>http://jakarta.apache.org/builds/jakarta-avalon/release/KEYS</samp></a>&gt;.</p>
  
      <xsl:variable name="filename"><xsl:value-of 
        select="project/downloads/@name"/>-<xsl:value-of 
        select="project/changes/@version"/>-bin.tar.gz</xsl:variable>
  
      <pre>Always test available signatures, <i>e.g.</i>,
  &gt; pgpk -a KEYS
  &gt; pgpv <xsl:value-of select="$filename"/>.asc
  <i>or</i>,
  &gt; pgp -ka KEYS
  &gt; pgp <xsl:value-of select="$filename"/>.asc
  <i>or</i>,
  &gt; gpg --import KEYS
  &gt; gpg --verify <xsl:value-of select="$filename"/>.asc
  </pre>
  
      <xsl:for-each select="project">
        <xsl:if test="downloads">
          <h2>About <xsl:value-of select="title"/></h2>
          <xsl:apply-templates select="."/>
        </xsl:if>
      </xsl:for-each>
  
    </xsl:template>
  
    <xsl:template match="project">
  
      <p>For more information about <xsl:value-of select="title"/>, please go to
      <a><xsl:attribute name="href"><xsl:value-of select="@site"/></xsl:attribute>
      <xsl:value-of select="@site"/></a>.</p>
  
      <!-- print out ChangeLog if present --> 
      <xsl:if test="changes">
        <h3>ChangeLog for <xsl:value-of select="title"/></h3>
        <xsl:apply-templates select="changes"/>
      </xsl:if>
    </xsl:template>
  
    <xsl:template match="ulink">
      <a href="{@uri}"><xsl:value-of select="."/></a>
    </xsl:template>
  
    <xsl:template match="release">
      <ul>
      <xsl:for-each select="action">
        <li> 
          <xsl:value-of select="normalize-space(.)"/>
          <xsl:if test="@dev">
            <xsl:text>[</xsl:text><xsl:value-of select="@dev"/><xsl:text>]</xsl:text>
          </xsl:if>
        </li>
      </xsl:for-each>
      </ul>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/announcement2txt.xsl
  
  Index: announcement2txt.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
    <xsl:output method="text" indent="no"/>
  
    <xsl:template match="changes">
      <xsl:variable name="version" select="@version"/>
      <xsl:apply-templates select="document(@file,/)/changes/release[attribute::version=string($version)]"/>
    </xsl:template>
  
    <xsl:template name="print-title">
      <xsl:param name="title"/>
  <xsl:variable name="text" select="normalize-space($title)"/>
  <xsl:value-of select="$text"/><xsl:text>
  </xsl:text>
      <xsl:call-template name="line">
        <xsl:with-param name="len" select="string-length($text)"/>
      </xsl:call-template>
      <xsl:text>
  </xsl:text>
    </xsl:template>
  
    <xsl:template match="announcement">
      <text>
        <xsl:call-template name="print-title">
          <xsl:with-param name="title"><xsl:value-of select="title"/> Released</xsl:with-param>
        </xsl:call-template>
        <xsl:call-template name="word-wrap">
          <xsl:with-param name="text" select="normalize-space(abstract)"/>
          <xsl:with-param name="count" select="0"/>
        </xsl:call-template>
      <xsl:text>
  
  </xsl:text>
        <xsl:for-each select="project">
          <xsl:call-template name="print-title">
            <xsl:with-param name="title">About <xsl:value-of select="title"/></xsl:with-param>
          </xsl:call-template>
          <xsl:apply-templates select="."/>
          <xsl:text>
  
  </xsl:text>
        </xsl:for-each>
      </text>
    </xsl:template>
  
    <xsl:template match="project">
      <xsl:choose>
        <xsl:when test="description/para">
          <xsl:for-each select="description/para">
  	  <xsl:call-template name="word-wrap">
  	    <xsl:with-param name="text">
  	      <xsl:apply-templates select="."/>
  	    </xsl:with-param>
  	    <xsl:with-param name="count" select="0"/>
  	  </xsl:call-template>
  	  <xsl:text>
  
  </xsl:text>
  	</xsl:for-each>
        </xsl:when>
        <xsl:otherwise>
          <xsl:call-template name="word-wrap">
            <xsl:with-param name="text">
  	    <xsl:apply-templates select="description"/>
  	  </xsl:with-param>
            <xsl:with-param name="count" select="0"/>
          </xsl:call-template>
  	<xsl:text>
  </xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text>
  For more information about </xsl:text>
      <xsl:value-of select="title"/>
      <xsl:text>, please go to
  </xsl:text>
      <xsl:value-of select="@site"/>
  
      <!-- print out ChangeLog if present --> 
      <xsl:if test="changes">
        <xsl:text>
  
  ChangeLog for </xsl:text>
        <xsl:value-of select="title"/>
        <xsl:text>
  
  </xsl:text>
        <xsl:apply-templates select="changes"/>
      </xsl:if>
  
      <!-- print out Downloads if present --> 
      <xsl:if test="downloads">
        <xsl:text>
  Downloads for </xsl:text><xsl:value-of select="title"/> available at 
  
  <xsl:value-of select="downloads/@base"/>/latest
      </xsl:if>
  
    </xsl:template>
  
    <xsl:template match="para">
      <xsl:apply-templates/>
      <xsl:text>
  </xsl:text>
    </xsl:template>
  
    <xsl:template match="ulink">
      <xsl:value-of select="."/>
      <xsl:text> (</xsl:text>
      <xsl:value-of select="@uri"/>
      <xsl:text>)</xsl:text>
    </xsl:template>
  
    <xsl:template match="release">
      <xsl:for-each select="action">
        <xsl:text>*) </xsl:text>
        <xsl:call-template name="word-wrap">
          <xsl:with-param name="text" select="."/>
          <xsl:with-param name="count" select="0"/>
        </xsl:call-template><xsl:text> </xsl:text>
        <xsl:if test="@dev">
          <xsl:text>[</xsl:text><xsl:value-of select="@dev"/><xsl:text>]</xsl:text>
        </xsl:if>
        <xsl:text>
  
  </xsl:text>
      </xsl:for-each>
    </xsl:template>
  
    <xsl:template name="line">
      <xsl:param name="len"/>
      <xsl:if test="number($len) > 0">
        <xsl:text>-</xsl:text>
        <xsl:call-template name="line">
          <xsl:with-param name="len" select="number($len)-1"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:template>
  
    <xsl:template name="word-wrap">
      <xsl:param name="text"/>
      <xsl:param name="count"/>
      <xsl:param name="mytext" select="normalize-space($text)"/>
      <xsl:choose>
        <xsl:when test="$count > 40">
          <xsl:text>
  </xsl:text>
          <xsl:call-template name="word-wrap">
            <xsl:with-param name="text" select="$mytext"/>
            <xsl:with-param name="count" select="0"/>
          </xsl:call-template>
        </xsl:when>
        <xsl:when test="not(contains($mytext,' '))">
          <xsl:text> </xsl:text>
          <xsl:value-of select="$mytext"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:variable name="word" select="substring-before($mytext,' ')"/>
          <xsl:variable name="remainder" select="substring-after($mytext,' ')"/>
          <xsl:text> </xsl:text>
          <xsl:value-of select="$word"/>
          <xsl:if test="string-length($word) > 0">
            <xsl:call-template name="word-wrap">
              <xsl:with-param name="text" select="$remainder"/>
              <xsl:with-param name="count" select="$count + string-length($word)"/>
            </xsl:call-template>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/bugzilla2patchqueue.xsl
  
  Index: bugzilla2patchqueue.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:html="http://www.w3.org/1999/xhtml">
  
  <!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
  
  <xsl:template match="html:body">
    <patch-queue>
     <xsl:apply-templates/>
    </patch-queue>
  </xsl:template>
  
  <xsl:template match="html:tr">
    <xsl:if test="contains(@class,'th')">
      <bug>
        <xsl:attribute name="id"><xsl:value-of select="html:td[1]/html:a"/></xsl:attribute>
        <xsl:attribute name="url">http://nagoya.apache.org/bugzilla/<xsl:value-of select="html:td[1]/html:a/@href"/></xsl:attribute>
        <xsl:attribute name="severity"><xsl:value-of select="html:td[2]"/></xsl:attribute>
        <xsl:attribute name="priority"><xsl:value-of select="html:td[3]"/></xsl:attribute>
        <xsl:attribute name="platform"><xsl:value-of select="html:td[4]"/></xsl:attribute>
        <xsl:attribute name="owner"><xsl:value-of select="html:td[5]"/></xsl:attribute>
        <xsl:attribute name="status"><xsl:value-of select="html:td[6]"/></xsl:attribute>
        <xsl:attribute name="resolution"><xsl:value-of select="html:td[7]"/></xsl:attribute>
        <xsl:attribute name="summary"><xsl:value-of select="html:td[8]"/></xsl:attribute>
      </bug>
    </xsl:if>
  </xsl:template>
  
    <xsl:template match="@*|*|text()|processing-instruction()">
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/changelog.xsl
  
  Index: changelog.xsl
  ===================================================================
  <?xml version="1.0"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  
      <xsl:output indent="yes"/>
  
      <xsl:param name="module">module</xsl:param>
      <xsl:param name="cvsweb">cvsweb</xsl:param>
                  
      <xsl:template match="/">
  
          <html>
              <head>
                  <link rel="stylesheet" type="text/css" href="../../../../html/javadoc.css" title="Style"></link>
              </head>
              <body bgcolor="white">
                  <h1>Change Log</h1>
  
                      <xsl:apply-templates select="changelog/entry">
  			<xsl:sort order="descending" select="date" />
  		    </xsl:apply-templates>
      
              </body>
          </html>
          
      </xsl:template>
    
      <xsl:template match="entry">
          
          <h2>
              <xsl:call-template name="escape-return">
                <xsl:with-param name="string"><xsl:value-of select="msg"/></xsl:with-param>
              </xsl:call-template>
          </h2>
          <p>
              <b>
                  <xsl:apply-templates select="date"/>
                  by <xsl:value-of disable-output-escaping="yes" select="author"/>
              </b>
          </p>
          <p>
              <xsl:apply-templates select="file"/>
          </p>
          <hr/>
              
      </xsl:template>
  
      <xsl:template match="date">
          <xsl:apply-templates/>
      </xsl:template>
  
      <xsl:template match="weekday">
          <xsl:apply-templates/>
      </xsl:template>
  
      <xsl:template match="time">
          <xsl:apply-templates/>
      </xsl:template>
  
      <xsl:template match="file">
          <br/><a>
  	<xsl:choose>
  	    <xsl:when test="string-length(prevrevision) = 0 ">
                  <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&amp;content-type=text/x-cvsweb-markup</xsl:attribute>
  	    </xsl:when>
  	    <xsl:otherwise>
                  <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&amp;r2=<xsl:value-of select="prevrevision"/>&amp;diff_format=h</xsl:attribute>
  	    </xsl:otherwise>
  	</xsl:choose>
          <xsl:value-of select="name" />
          </a>
      </xsl:template>
  
    <xsl:template name="escape-return">
      <xsl:param name="string"/>
        <!-- must be a better way to define a carrige return -->
        <xsl:variable name="return"><xsl:text>
  </xsl:text>
        </xsl:variable>
        <xsl:choose>
          <xsl:when test="contains($string, $return)">
            <xsl:value-of select="substring-before($string, $return)"/><br/>
            <xsl:call-template name="escape-return">
              <xsl:with-param name="string">
                <xsl:value-of select="substring-after($string, $return)"/>
              </xsl:with-param>
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$string"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/patchqueue2text4dev.xsl
  
  Index: patchqueue2text4dev.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
  <!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
  
    <xsl:output method="text"/>
  
    <xsl:template match="/">-----------------------------------------------------------
           This mail is generated automatically using
           Jakarta Ant. Contents are automatically
           downloaded from Apache's Bugzilla.
  -----------------------------------------------------------
           Please do not reply to this mail.
  -----------------------------------------------------------
  
  ***********************************************************
              COCOON PATCH QUEUE UPDATE
   
              patches in queue:  <xsl:value-of select="count(patch-queue/bug)"/> 
  ***********************************************************
  
      <xsl:for-each select="patch-queue/bug">
  -----------------------------------------------------------
  <xsl:value-of select="@id"/>:<xsl:value-of select="@summary"/>
  -----------------------------------------------------------
  <xsl:value-of select="@url"/>
  
  REVIEWER:    <xsl:value-of select="@owner"/>
  RESOLUTION:  <xsl:value-of select="@resolution"/>
  STATUS:      <xsl:value-of select="@status"/>
  
      </xsl:for-each>
  
  *************************that's it!************************
  
  ------------------------patch HOWTO------------------------
  
  Send patches to http://nagoya.apache.org/bugzilla/
  specifying [PATCH] in the summary.
  Bugzilla sends a mail automatically to this list.
  Reviewers will mark it FIXED there when applied.
  Patches not sent to Bugzilla will not be reviewed.
  -----------------------------------------------------------
  This file is generated and updated automatically at least
  once a week, and the data is taken from Bugzilla.
  If you don't find the patch you submitted to bugzilla
  after one week, please notify cocoon-dev@xml.apache.org
  for assistance.
  -----------------------------------------------------------
  There is usually a HEAD branch and a previous-version
  branch that are maintained. Where will the patch go?
  1. If it is a bug fix it should go to both branches
  2. If something is totally new it goes into HEAD scratchpad.
  3. Something in between, but does not break backward
     compatibility _may_ go into both (and may not)
  4. For everything else, a vote is required  so
     first it may go into HEAD, and then be VOTEd in order
     to sync this into branch.
  Please note that structural changes have to be VOTEd first.
    </xsl:template>
  
    <xsl:template match="@*|*|text()|processing-instruction()">
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/tools/centipede/src/resources/stylesheets/patchqueue2xdocs.xsl
  
  Index: patchqueue2xdocs.xsl
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
  <!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
  
    <xsl:template match="/">
  
      <xsl:text disable-output-escaping="yes">
        <![CDATA[
          <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN"
           "dtd/document-v10.dtd">
        ]]>
        <!-- this file is automatically generated by build patchqueue-xdocs -->
      </xsl:text>
  
      <document>
       <header>
        <title>Patch Queue</title>
        <authors>
         <person name="Robin Green" email="greenrd@hotmail.com"/>
         <person name="Nicola Ken Barozzi" email="barozzi@nicolaken.com"/>
        </authors>
       </header>
  
       <body>
  
       <s1 title="Introduction">
  
        <p>
         This is an <strong>informal</strong> list - in chronological order -
         of some of the noteworthy patches that have been posted
         to the <link href="mailto:cocoon-dev@xml.apache.org">cocoon-dev</link> mailing list.
         These patches are not (yet) part of the Apache Cocoon project, but need reviewing for possible
         inclusion. This system was instituted because, due to the large volume of mail and
         the lack of time of the committers, some patches tended to get forgotten about. This
         queue does not guarantee that any patch will be reviewed within a reasonable time frame,
         but it does at least make them easier to find!
        </p>
  
        <p><strong>Reviewers wanted!</strong> - If you have time to review and/or test these patches,
         we would be grateful for your time. Please post comments to the cocoon-dev mailing lists.
        </p>
  
        <p>
         Before submitting a patch, please read the page on <connect href="contrib.xml">Third-Party
         Contributions</connect>. The preferred submission method for patches is:
        </p>
  
        <ul>
         <li>Post to cocoon-dev@xml.apache.org</li>
         <li>Describe the patch, the reason for it and (if necessary) why this is important.</li>
         <li>Generate the patch in <code>diff -u</code> format from CVS</li>
         <li>Also generate a documentation patch or new file, if this is something that should be documented.
         </li>
         <li>Post as an attachment rather than inline (unless it is trivially small).</li>
        </ul>
  
        <p>Following the above guidelines will facilitate your patch being reviewed
         and applied efficiently.</p>
  
       </s1>
  
       <s1 title="Patch Queue">
  
        <p><strong> [Under Construction] </strong> Archive links will be added later.
         <strong>Please do not bother the patch submitters/authors</strong> without first reading the
          relevant post(s) in the <connect href="mail-archives.xml">mailing list archives.</connect>
        </p>
  
        <p>Vapourware will not be listed.</p>
  
        <table>
         <tr>
          <th>id<!--and Link--></th>
          <th>Summary</th>
          <th>Reviewer</th>
          <th>Resolution</th>
          <th>Status</th>
         </tr>
        <xsl:for-each select="patch-queue/bug">
         <tr>
          <th>
           <connect>
             <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
             <xsl:value-of select="@id"/>
           </connect>
          </th>
          <th><xsl:value-of select="@summary"/></th>
          <th><xsl:value-of select="@owner"/></th>
          <th><xsl:value-of select="@resolution"/></th>
          <th><xsl:value-of select="@status"/></th>
         </tr>
         </xsl:for-each>
        </table>
  
        <p>See also additional list of patches to be added in <connect href="todo.xml">To Do</connect>.
        </p>
  
       </s1>
      </body>
      </document>
  
    </xsl:template>
  
    <xsl:template match="@*|*|text()|processing-instruction()">
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/compile.xtarget
  
  Index: compile.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Prepares the build directory                                        -->
    <!-- =================================================================== -->
    <target name="prepare" depends="init">
      <mkdir dir="${build.dir}"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Prepares the source code                                            -->
    <!-- =================================================================== -->
    <target name="prepare-src" depends="prepare">
      <mkdir dir="${build.src}"/>
      <mkdir dir="${build.dest}"/>
      <copy todir="${build.src}" filtering="on">
        <fileset dir="${java.dir}"/>
      </copy>
  
      <mkdir dir="${build.scratchpad.src}"/>
      <mkdir dir="${build.scratchpad.dest}"/>
      <copy todir="${build.scratchpad.src}" filtering="on">
        <fileset dir="${scratchpad.src}"/>
      </copy>
      
      <mkdir dir="${build.contrib.src}"/>
      <mkdir dir="${build.contrib.dest}"/>
      <copy todir="${build.contrib.src}" filtering="on">
        <fileset dir="${contrib.src}"/>
      </copy>    
    </target>
  
    <!-- =================================================================== -->
    <!-- Compiles the source directory                                       -->
    <!-- =================================================================== -->
    <target name="compile" depends="prepare-src"
            description="Compiles the source code">
      <copy todir="${build.dest}">
        <fileset dir="${build.src}">
          <include name="**"/>
        </fileset>
      </copy>
  
      <echo message="Compiling with Java ${ant.java.version}, debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>
  
      <javac srcdir="${build.src}"
             destdir="${build.dest}"
             debug="${debug}"
             optimize="${optimize}"
             deprecation="${deprecation}"
             target="${target.vm}"
             nowarn="${nowarn}">
        <classpath refid="classpath"/>
      </javac>
  
      <copy todir="${build.scratchpad.dest}">
        <fileset dir="${build.scratchpad.src}">
          <include name="**"/>
        </fileset>
      </copy>
  
      <javac srcdir="${build.scratchpad.src}"
             destdir="${build.scratchpad.dest}"
             debug="${debug}"
             optimize="${optimize}"
             deprecation="${deprecation}"
             target="${target.vm}">
        <classpath refid="scratchpad.classpath"/>
      </javac>
      
  
      <copy todir="${build.contrib.dest}">
        <fileset dir="${build.contrib.src}">
          <include name="**"/>
        </fileset>
      </copy>
  
      <javac srcdir="${build.contrib.src}"
             destdir="${build.contrib.dest}"
             debug="${debug}"
             optimize="${optimize}"
             deprecation="${deprecation}"
             target="${target.vm}">
        <classpath refid="contrib.classpath"/>
      </javac>    
    </target>
  
    <!-- =================================================================== -->
    <!-- Creates the jar file                                                -->
    <!-- =================================================================== -->
    <target name="all" depends="package" description="Default target"/>
  
    <target name="package" depends="compile" description="Generates the jar package">
      <jar jarfile="${build.dir}/${name}.jar" manifest="${build.src}/Manifest.mf">
        <fileset dir="${build.dest}">
          <include name="**"/>
          <include name="META-INF/**"/>
        </fileset>
      </jar>
  
      <jar jarfile="${build.dir}/${scratchpad.name}.jar">
        <fileset dir="${build.scratchpad.dest}">
          <include name="**"/>
        </fileset>
      </jar>
      
      <jar jarfile="${build.dir}/${contrib.name}.jar">
        <fileset dir="${build.contrib.dest}">
          <include name="**"/>
        </fileset>
      </jar>
      
    </target>
    
    <!-- =================================================================== -->
    <!-- Copies the tools.jar to javac.jar in web-inf/lib                    -->
    <!-- =================================================================== -->
    <target name="prepare-tools-lib" depends="package" if="tools.jar.present">
      <!-- NOTE: java.home is normally set by the JVM to the /jre directory -->
      <copy file="${tools.jar}" tofile="${build.war}/WEB-INF/lib/javac.jar"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Clean targets                                                       -->
    <!-- =================================================================== -->
    <target name="clean" depends="init" description="* Cleans the build directories">
      <delete dir="${build.dir}"/>
    </target>
  
    <target name="cleandocs" depends="init" description="* Cleans the build docs directories">
      <delete dir="${build.docs}"/>
    </target>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/dev.xtarget
  
  Index: dev.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Creates the source distribution                                     -->
    <!-- =================================================================== -->
    <target name="dist-src" depends="docs, javadocs, test" 
            description="Prepares the source distribution">
      <!-- Simply copy all and add the html docs -->
      <mkdir dir="${dist.root}"/>
      <mkdir dir="${dist.src.dir}"/>
      <mkdir dir="${dist.src.dir}/lib"/>
      <mkdir dir="${dist.src.dir}/src"/>
      <mkdir dir="${dist.src.dir}/src/java"/>
      <mkdir dir="${dist.src.dir}/src/documentation"/>
      <mkdir dir="${dist.src.dir}/src/resources"/>
      <mkdir dir="${dist.src.dir}/src/scratchpad"/>
      <mkdir dir="${dist.src.dir}/src/testcases"/>
      <mkdir dir="${dist.src.dir}/src/contrib"/>
      <mkdir dir="${dist.src.dir}/src/targets"/>    
      <mkdir dir="${dist.src.dir}/docs"/>
      <mkdir dir="${dist.src.dir}/docs/apidocs"/>
      <mkdir dir="${dist.src.dir}/tools"/>
  
      <!--
      <copy todir="${dist.src.dir}/bin">
        <fileset dir="${bin.dir}"/>
      </copy> -->
      <copy todir="${dist.src.dir}/tools">
        <fileset dir="${tools.dir}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/src/documentation">
        <fileset dir="${build.context}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/lib">
        <fileset dir="${lib.dir}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/src/resources" filtering="on">
        <fileset dir="${resource.dir}">
          <exclude name="**/*.gif"/>
          <exclude name="**/*.jpg"/>
          <exclude name="**/*.png"/>
       </fileset>
      </copy>
  
      <copy todir="${dist.src.dir}/src/resources" filtering="off">
        <fileset dir="${resource.dir}">
          <include name="**/*.gif"/>
          <include name="**/*.jpg"/>
          <include name="**/*.png"/>
       </fileset>
      </copy>
  
      <copy todir="${dist.src.dir}/src/java" filtering="on">
        <fileset dir="${java.dir}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/src/scratchpad" filtering="off">
        <fileset dir="${scratchpad.dir}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/src/contrib" filtering="off">
        <fileset dir="${contrib.dir}"/>
      </copy>
  
      <copy todir="${dist.src.dir}/src/targets" filtering="off">
        <fileset dir="./src/targets"/>
      </copy>
      
      <copy todir="${dist.src.dir}/src/testcases" filtering="off">
        <fileset dir="${test.dir}"/>
      </copy>
          
      <copy todir="${dist.src.dir}/docs">
        <fileset dir="${build.docs}"/>
      </copy>
      <copy todir="${dist.src.dir}/docs/apidocs">
        <fileset dir="${build.javadocs}"/>
      </copy>
  
      <copy todir="${dist.src.dir}">
        <fileset dir="${docs.dir}">
          <include name="changes.xml, todo.xml"/>
        </fileset>
      </copy>
  
      <copy todir="${dist.src.dir}" filtering="on">
       <fileset dir=".">
        <include name="README.txt"/>
        <include name="legal/*"/>
        <include name="*.bat"/>
        <include name="*.sh"/>
        <include name="*.xml"/>
       </fileset>
      </copy>
  
      <chmod perm="+x" file="${dist.src.dir}/build.sh"/>
      <chmod perm="+x" file="${dist.src.dir}/tools/bin/antRun"/>
      <fixcrlf srcdir="${dist.src.dir}" includes="**.sh"        eol="lf"/>
      <fixcrlf srcdir="${dist.src.dir}" includes="antRun"       eol="lf"/>
      <fixcrlf srcdir="${dist.src.dir}" includes="**.bat"      eol="crlf"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Packages the source distribution as .zip                            -->
    <!-- =================================================================== -->
    <target name="dist-src-zip" depends="dist-src" 
            description="Generates the source distribution as a .zip file">
      <zip zipfile="${dist.target}/${dist.name}-src.zip"
           basedir="${dist.root}/source"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Packages the source distribution with .tar.gzip                     -->
    <!-- =================================================================== -->
    <target name="dist-src-tgz" depends="dist-src" 
            description="Generates the source distribution as a .tar.gz file">
      <tar tarfile="${dist.target}/${dist.name}-src.tar"
           basedir="${dist.root}/source"
           longfile="gnu"/>
      <gzip zipfile="${dist.target}/${dist.name}-src.tar.gz"
            src="${dist.target}/${dist.name}-src.tar"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Creates the binary distribution                                     -->
    <!-- =================================================================== -->
    <target name="dist-bin" depends="package, docs, javadocs, test" 
            description="Prepares the binary distribution">
      <!-- Copy the html docs -->
      <mkdir dir="${dist.root}"/>
      <mkdir dir="${dist.bin.dir}"/>
      <mkdir dir="${dist.bin.dir}/lib"/>
      <mkdir dir="${dist.bin.dir}/docs"/>
      <mkdir dir="${dist.bin.dir}/docs/apidocs"/>
  
      <copy file="${build.dir}/${name}.jar" tofile="${dist.bin.dir}/lib/${name}-${version}.jar"/>
      
      <copy todir="${dist.bin.dir}/docs">
        <fileset dir="${build.docs}"/>
      </copy>
      <copy todir="${dist.bin.dir}/docs/apidocs">
        <fileset dir="${build.javadocs}"/>
      </copy>
  
      <copy todir="${dist.bin.dir}">
        <fileset dir="${docs.dir}">
          <include name="changes.xml, todo.xml"/>
        </fileset>
      </copy>
  
      <copy todir="${dist.bin.dir}" filtering="on">
       <fileset dir=".">
        <include name="README.txt"/>
        <include name="legal/*"/>
       </fileset>
      </copy>
  
    </target>
  
    <!-- =================================================================== -->
    <!-- Packages the binary distribution as .zip                            -->
    <!-- =================================================================== -->
    <target name="dist-bin-zip" depends="dist-bin" 
            description="Generates the binary distribution as a .zip file">
      <zip zipfile="${dist.target}/${dist.name}-bin.zip"
           basedir="${dist.root}/bin"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Packages the binary distribution with .tar.gzip                     -->
    <!-- =================================================================== -->
    <target name="dist-bin-tgz" depends="dist-bin" 
            description="Generates the binary distribution as a .tar.gz file">
      <tar tarfile="${dist.target}/${dist.name}-bin.tar"
           basedir="${dist.root}/bin"
           longfile="gnu"/>
      <gzip zipfile="${dist.target}/${dist.name}-bin.tar.gz"
            src="${dist.target}/${dist.name}-bin.tar"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Clean dist                                                       -->
    <!-- =================================================================== -->
    <target name="distclean" depends="clean" description="* Cleans everything to the original state">
      <delete dir="${build.root}"/>
      <delete file="${dist.target}/${Name}-${version}.tar.gz"/>
      <delete file="${dist.target}/${Name}-${version}.tar"/>
      <delete file="${dist.target}/${Name}-${version}.zip"/>
      <delete file="${dist.target}/${Name}-${version}-src.tar.gz"/>
      <delete file="${dist.target}/${Name}-${version}-src.tar"/>
      <delete file="${dist.target}/${Name}-${version}-src.zip"/>
      <delete file="${dist.target}/${Name}-${version}-bin.tar.gz"/>
      <delete file="${dist.target}/${Name}-${version}-bin.tar"/>
      <delete file="${dist.target}/${Name}-${version}-bin.zip"/>
      <delete dir="${dist.root}"/>
    </target>
    
    <!-- =================================================================== -->
    <!-- Build all distributions                                             -->
    <!-- =================================================================== -->
    <target name="dist"
            depends="dist-info, dist-bin-tgz, dist-bin-zip, dist-src-tgz, dist-src-zip"
            description="* Generates all distributions (source/binary)">
    </target>
    
    <!-- =================================================================== -->
    <!-- Build all distributions                                             -->
    <!-- =================================================================== -->
    <target name="dist-info" depends="init">
      <echo>**********************************************</echo>
      <echo>*</echo>
      <echo>*  Build all distributions:</echo> 
      <echo>*  - source distribution for windows/unix.</echo>
      <echo>*  - binary distribution for windows/unix.</echo>
      <echo>*</echo>        
      <echo>*  This may take a while...</echo>        
      <echo>*</echo>        
      <echo>***********************************************</echo>
      <echo/>
    </target>
    
    
    
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/docs.xtarget
  
  Index: docs.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Prepares the docs                                                   -->
    <!-- =================================================================== -->
    <target name="prepare-docs" depends="init">
  
      <mkdir dir="${build.context}"/>
      <mkdir dir="${build.context}/images"/>
      <mkdir dir="${build.docs}"/>
      <mkdir dir="${build.dir}/work"/>
  
      <!-- make filtered copy of XML docs -->
      <copy todir="${build.context}" filtering="on">
        <fileset dir="${context.dir}">
          <exclude name="images/**"/>
        </fileset>
      </copy>
  
      <!-- Copy images -->
      <copy todir="${build.context}/images" filtering="off">
        <fileset dir="${context.dir}/images"/>
      </copy>
  
      <!-- Copy entity catalog and entities -->
      <copy todir="${build.context}/resources/entities" filtering="on">
        <fileset dir="${resource.dir}/entities"/>
      </copy>
      <mkdir dir="${build.context}/WEB-INF/classes"/>
      <move todir="${build.context}/WEB-INF/classes">
        <fileset dir="${build.context}/resources/entities">
          <include name="CatalogManager.properties"/>
        </fileset>
      </move>
      
      <!-- Copy Cocoon configuration (cocoon.xconf) -->
      <copy todir="${build.context}" filtering="off">
        <fileset dir="${tools.dir}/cocoon/conf"/>
      </copy>
  
    </target>
  
  
    <!-- =================================================================== -->
    <!-- Set a variable if the generated docs are already up-to-date.        -->
    <!-- =================================================================== -->
    <target name="docs_check" depends="init">
      <uptodate property="docs.notrequired" targetfile="${build.docs}/index.html" >
        <srcfiles dir="." includes="project-info.xml"/>
        <srcfiles dir="${context.dir}/xdocs" includes="**/*.xml"/>
      </uptodate>
    </target>
  
    <!-- =================================================================== -->
    <!-- If generated  docs is already up-to-date, print a message saying so. -->
    <!-- =================================================================== -->
    <target name="docs_done" if="docs.notrequired">
      <echo message="-------------------------------------------------------------"/>
      <echo message="Not rebuilding docs, as they are up-to-date:"/>
      <echo message="  ${build.docs}/index.html is more recent than"/>
      <echo message="  project-info.xml and ${context.dir}/xdocs/*.xml"/>
      <echo message="-------------------------------------------------------------"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- If generated  docs is already up-to-date, print a message saying so. -->
    <!-- =================================================================== -->
    <target name="making-docs">
      <echo message="-------------------------------------------------------------"/>
      <echo message="  Building docs, please stand by ..."/>
    </target>
    
    <!-- =================================================================== -->
    <!-- The documentation system                                            -->
    <!-- =================================================================== -->
    <target name="docs"
            depends="package, prepare-docs, docs_check, making-docs, docs_done"
            unless="docs.notrequired"
            description="* Generates the documentation">
  
      <java classname="org.apache.cocoon.Main" fork="true" dir="${build.context}" failonerror="true">
        <arg value="-c."/>
        <arg value="-d../docs"/>
        <arg value="-w../work"/>
        <arg value="-l../work/cocoon.log"/>
        <arg value="-uERROR"/>
        <arg value="index.html"/>
        <classpath>
          <path refid="classpath"/>
          <fileset dir="${build.dir}">
            <include name="*.jar"/>
          </fileset>
          <fileset dir="${tools.dir}">
            <include name="*/lib/*.jar"/>
          </fileset>   
          <pathelement location="${tools.jar}"/>
          <pathelement location="${build.context}/WEB-INF/classes"/>
        </classpath>
      </java>
  
      <echo message="  ...docs generated succesfully in ./build/docs ."/>
      <echo message="-------------------------------------------------------------"/>
      
    </target>
    
    <!-- =================================================================== -->
    <!-- Create the announcements                                            -->
    <!-- =================================================================== -->
   <target name="announcement" depends="prepare" description="* Creates the announcement for new releases">
  
      <copy file="${project-info}" tofile="${build.project-info}" filtering="on"/>
  
      <style basedir="./" destdir="./" style="${projectinfo2announcement}"
             includes="project-info.xml" extension=".txt"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Create the text version of projectinfo                              -->
    <!-- =================================================================== -->
    <target name="projectinfo" depends="prepare" description="* Creates the text version of projectinfo">
  
      <copy file="${project-info}" tofile="${build.project-info}" filtering="on"/>
  
      <style basedir="./" destdir="./" style="${project-info2txt}"
             includes="project-info.xml" extension=".txt"/>
  
    </target>
  
  
    <!-- =================================================================== -->
    <!-- Creates the web site                                                -->
    <!-- =================================================================== -->
    <target name="site" depends="docs, javadocs"
        description="Generates the web site (for site maintainers only)">
      <mkdir dir="${site}"/>
      <copy todir="${site}" filtering="off">
        <fileset dir="${build.docs}">
        </fileset>
      </copy>
      <copy todir="${site}/apidocs" filtering="off">
        <fileset dir="${build.javadocs}"/>
      </copy>
    </target>
  
    <!-- =================================================================== -->
    <!-- Set a variable if javadoc is already up-to-date.                    -->
    <!-- =================================================================== -->
    <target name="javadocs_check">
      <uptodate property="javadocs.notrequired" targetfile="${build.javadocs}/packages.html" >
        <srcfiles dir= "${build.src}" includes="**/*.java"/>
      </uptodate>
    </target>
  
    <!-- =================================================================== -->
    <!-- If javadoc is already up-to-date, print a message saying so.        -->
    <!-- =================================================================== -->
    <target name="javadocs_done" if="javadocs.notrequired">
      <echo message="-------------------------------------------------------------"/>
      <echo message="Not rebuilding Javadocs, as they are up-to-date:"/>
      <echo message="  ${build.javadocs}/packages.html is more recent than"/>
      <echo message="  ${build.src}/**/*.java"/>
      <echo message="-------------------------------------------------------------"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Creates the API documentation                                       -->
    <!-- =================================================================== -->
    <target name="javadocs" depends="prepare-src, javadocs_check, javadocs_done"
        unless="javadocs.notrequired"
        description="* Generates the API documentation">
      <mkdir dir="${build.javadocs}"/>
      <javadoc packagenames="${packages}"
               sourcepath="${build.src}"
               destdir="${build.javadocs}"
               author="true"
               version="true"
               use="false"
               noindex="true"
               windowtitle="${Name} API"
               doctitle="${Name}"
               bottom="Copyright &#169; ${year} ${fullname} project. All Rights Reserved."
               stylesheetfile="${resource.dir}/javadoc.css">
        <classpath refid="classpath"/>
      </javadoc>
    </target>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/init.xtarget
  
  Index: init.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Initialization target                                               -->
    <!-- =================================================================== -->
    <target name="init">
      <tstamp/>
      <echo message="--------------------------------------------------------------"/>    
      <echo message="Setting up customized ant tasks..."/>  
             
      <!-- set up tools and compiler properties  -->
      <property name="debug"              value="on"/>
      <property name="optimize"           value="off"/>
      <property name="deprecation"        value="on"/>
      <property name="nowarn"             value="off"/>
      <property name="build.compiler"     value="classic"/>
      <property name="target.vm"          value="1.2"/>
      <property name="tools.dir"          value="./tools"/>
      <property name="tools.ant.dir"      value="${tools.dir}/ant"/>     
      <property name="tools.ant.lib"      value="${tools.ant.dir}/lib"/>     
      <property name="tools.anttasks.dir" value="${tools.dir}/tmp/anttasks"/> 
      <property name="centipede.dir"      value="${tools.dir}/centipede"/>       
      <property name="centipede.lib.dir"  value="${centipede.dir}/lib"/>       
      <property name="cocoon.dir"      value="${tools.dir}/cocoon"/>       
      <property name="cocoon.lib.dir"  value="${cocoon.dir}/lib"/>   
                   
      <!-- compile the ant tasks -->
      <mkdir dir="${tools.anttasks.dir}"/>
      <javac srcdir="${tools.dir}/centipede/src/java" 
             destdir="${tools.anttasks.dir}"
             debug="yes"
             optimize="no"
             deprecation="no"
             target="${target.vm}">
            <classpath refid="centipede.classpath"/>
      </javac>    
        
      <!-- define generally used centipede ant tasks -->
      <taskdef name="user-input"      classname="UserInputTask"           classpath="${tools.anttasks.dir}"/>
      <taskdef name="xml-property"    classname="XmlPropertyTask"         classpath="${tools.anttasks.dir}"/>
      <taskdef name="jtidy"           classname="JTidyTask"               classpath="${tools.anttasks.dir}"/>
      <taskdef name="class-available" classname="ClassAvailableTask"      classpath="${tools.anttasks.dir}"/>
      <taskdef name="compress-html"   classname="IZPressHtmlCompressTask" classpath="${tools.anttasks.dir}"/>
  
      <echo message="... done."/>     
  
      <!--
      Load project information from project-info.xml
      -->
      <property name="project-info" value="./project-info.xml"/>    
      <xml-property file="${project-info}"/>
      
      <!--
      Project information
      -->
      <property name="fullname"      value="${xml.project.name}"/>
      <property name="name"          value="${xml.project.info.module}"/>
      <property name="Name"          value="${xml.project.name}"/>
      <property name="packages"      value="${xml.project.info.packages}"/>
      <property name="short.version" value="${xml.project.info.version}"/>
      <property name="version.tag"   value="${xml.project.info.tag}"/>
      <property name="version"       value="${short.version}-${version.tag}"/>
      <property name="year"          value="${xml.project.info.year}"/>
      
      <echo message="--------------------------------------------------------------"/>    
      <echo message="                      ${fullname} [${year}]                   "/>     
      <echo message="--------------------------------------------------------------"/>   
      <echo message="Building with ${ant.version}"/>             
      <echo message="using build file ${ant.file}"/>  
      <echo message="--------------------------------------------------------------"/>       
          
      <property name="src.dir"            value="./src"/>
      <property name="java.dir"           value="${src.dir}/java"/>
      <property name="test.dir"           value="${src.dir}/testcases"/>
      <property name="test.specific"      value=""/>
      <property name="lib.dir"            value="./lib"/>
      <property name="bin.dir"            value="./bin"/>
      <property name="docs.dir"           value="${src.dir}/documentation/xdocs"/>
      <property name="images.dir"         value="${src.dir}/documentation/images"/>
      <property name="resource.dir"       value="${src.dir}/resources"/>
      <property name="context.dir"        value="${src.dir}/documentation"/>
  
      <property name="scratchpad.dir"  value="${src.dir}/scratchpad"/>
      <property name="scratchpad.src"  value="${scratchpad.dir}/src"/>
      <property name="scratchpad.lib"  value="${scratchpad.dir}/lib"/>
      <property name="scratchpad.name" value="${name}-scratchpad"/>
  
      <property name="contrib.dir"  value="${src.dir}/contrib"/>
      <property name="contrib.src"  value="${contrib.dir}/src"/>
      <property name="contrib.lib"  value="${contrib.dir}/lib"/>
      <property name="contrib.name" value="${name}-contrib"/>
      
      <property name="build.root"            value="./build"/>
      <property name="build.dir"             value="${build.root}/${name}"/>
      <property name="build.src"             value="${build.dir}/src"/>
      <property name="build.test"            value="${build.dir}/testcases"/>
      <property name="build.dest"            value="${build.dir}/classes"/>
      <property name="build.docs"            value="${build.dir}/docs"/>
      <property name="build.xdocs"           value="${build.dir}/xdocs"/>
      <property name="build.docs.printer"    value="${build.dir}/printer-docs"/>
      <property name="build.javadocs"        value="${build.dir}/javadocs"/>
      <property name="build.context"         value="${build.dir}/documentation"/>
      <property name="build.scratchpad"      value="${build.dir}/scratchpad"/>
      <property name="build.scratchpad.src"  value="${build.scratchpad}/src"/>
      <property name="build.scratchpad.dest" value="${build.scratchpad}/classes"/>
      <property name="build.contrib"         value="${build.dir}/contrib"/>
      <property name="build.contrib.src"     value="${build.contrib}/src"/>
      <property name="build.contrib.dest"    value="${build.contrib}/classes"/>    
      <property name="build.patchqueue"      value="${build.dir}/patchqueue"/>
      
      <property name="dist.root"    value="./dist"/>
      <property name="dist.name"    value="${name}-${version}"/>
      <property name="dist.dir"     value="${dist.root}/${dist.name}"/>
      <property name="dist.src.dir" value="${dist.root}/source/${dist.name}"/>
      <property name="dist.bin.dir" value="${dist.root}/bin/${dist.name}"/>
      <property name="dist.target"  value="${dist.root}"/>
  
      <property name="site" value="../xml-site/targets/${name}"/>
  
      <property name="build.project-info" value="${build.dir}/project-info.xml"/>
      <property name="project-info2txt" value="${src.dir}/documentation/stylesheets/projectinfo2txt.xsl"/>
      <property name="projectinfo2announcement" value="${src.dir}/documentation/stylesheets/projectinfo2announcement.xsl"/>
      <property name="projectinfo2todo" value="${src.dir}/documentation/stylesheets/projectinfo2todo.xsl"/>
  
      <!--
      The location of tools.jar, relative to the JAVA_HOME home.
      -->
      <property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
      <available file="${tools.jar}" property="tools.jar.present"/>
      
      <!--
       Specifies where to send build build-log.xml
      -->
      <property name="XmlLogger.file" value="${build.dir}/build-log.xml"/>
      <delete file="${XmlLogger.file}"/> 
  
      <filter token="Name"    value="${fullname}"/>
      <filter token="name"    value="${fullname}"/>
      <filter token="year"    value="${year}"/>
      <filter token="version" value="${version}"/>
      <filter token="date"    value="${TODAY}"/>
      <filter token="log"     value="true"/>
      <filter token="verbose" value="true"/>
  
          
    </target>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/preinit.xtarget
  
  Index: preinit.xtarget
  ===================================================================
    <!--
      Give user a chance to override without editing this file
      (and without typing -D each time he compiles it)
    -->
    <property file=".ant.properties"/>
    <property file="${user.home}/.ant.properties"/>
      
    <!--
      these are here only for those who use jikes compiler. For other
      developers this part makes no difference.
    -->
    <property name="build.compiler.emacs" value="on"/>
    <property name="build.compiler.warnings" value="true"/>
    <property name="build.compiler.pedantic" value="false"/>
    <property name="build.compiler.depend" value="true"/>
    <property name="build.compiler.fulldepend" value="true"/>
    
    <!-- =================================================================== -->
    <!-- Indentify Classpath                                                 -->
    <!-- =================================================================== -->
    <path id="centipede.classpath">
      <fileset dir="./tools/centipede/lib">
        <include name="*.jar"/>
      </fileset>
    </path>
      
    <path id="classpath">
      <fileset dir="./lib/core">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="./lib/optional">
        <include name="*.jar"/>
      </fileset>
    </path>
  
    <path id="scratchpad.classpath">
      <fileset dir="./lib/core">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="./lib/optional">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="./src/scratchpad/lib">
        <include name="*.jar"/>
      </fileset>
      <!-- FIXME : how to build a path that references a property set in 'init' target ? -->
      <pathelement path="./build/${name}/classes"/>
    </path>
  
    <path id="contrib.classpath">
      <fileset dir="./lib/core">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="./lib/optional">
        <include name="*.jar"/>
      </fileset>
      <fileset dir="./src/contrib/lib">
        <include name="*.jar"/>
      </fileset>    
      <!-- FIXME : how to build a path that references a property set in 'init' target ? -->
      <pathelement path="./build/${name}/classes"/>
    </path>
    
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/robot.xtarget
  
  Index: robot.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Gets pending patches from bugzilla and cleans html                  -->
    <!-- =================================================================== -->
    <target name="prepare-patchqueue" depends="init" description="Patch queue 2 mail">
     <mkdir dir="${build.patchqueue}"/>
    <get 
  src="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Cocoon+2&amp;short_desc=%5BPATCH%5D&amp;short_desc_type=anywordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;namedcmd=cocoon+patch+queue&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time"
        dest="${build.patchqueue}/bugzillapatchqueue.html"
        verbose="true"
        usetimestamp="true"
        ignoreerrors="true"/>
  
      <jtidy src="${build.patchqueue}/bugzillapatchqueue.html"
             dest="${build.patchqueue}/bugzillapatchqueue.xhtml"
             log="${build.patchqueue}/bugzillapatchqueue.log"
             summary="true"
             warn="true"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Transforms bugzilla patches html into xml                           -->
    <!-- =================================================================== -->  
    <target name="patchqueue-xml" depends="prepare-patchqueue">
      <copy file="${tools.dir}/src/bugzilla2patchqueue.xsl" 
  tofile="${build.patchqueue}/bugzilla2patchqueue.xsl"/>
      <style basedir="${build.patchqueue}"
       destdir="${build.patchqueue}"
       includes="bugzillapatchqueue.xhtml"
       extension=".xml"
       style="bugzilla2patchqueue.xsl"/>
      
     </target>
  
    <!-- =================================================================== -->
    <!--  Makes patches.xml for xdocs using bugzilla patches xml             -->
    <!-- =================================================================== -->   
    <target name="patchqueue-xdocs" depends="patchqueue-xml">
      <copy file="${tools.dir}/src/patchqueue2xdocs.xsl" 
  tofile="${build.patchqueue}/patchqueue2xdocs.xsl"/>  
      
      <style basedir="${build.patchqueue}"
       destdir="${build.patchqueue}"
       includes="bugzillapatchqueue.xml"
       extension=".xdoc"
       style="patchqueue2xdocs.xsl"/>
       
       <copy file="${build.patchqueue}/bugzillapatchqueue.xdoc" tofile="${docs.dir}/patches.xml"/>
       
     </target>   
  
    <!-- =================================================================== -->
    <!-- Sends a notification of the current patch queue to the mailing list -->
    <!-- =================================================================== -->   
     <target name="patchqueue" depends="patchqueue-xdocs">
      <copy file="${tools.dir}/src/patchqueue2text4dev.xsl" 
  tofile="${build.patchqueue}/patchqueue2text4dev.xsl"/>   
      <style basedir="${build.patchqueue}"
         destdir="${build.patchqueue}"
         includes="bugzillapatchqueue.xml"
         extension=".txt"
         style="patchqueue2text4dev.xsl"/>   
         
    </target>
  
    <!-- =================================================================== -->
    <!-- Sends a notification of the current patch queue to the mailing list -->
    <!-- =================================================================== -->  
     <target name="patchqueue-notify" depends="patchqueue">
       <mail from="patch-queue@nicolaken.com" 
             tolist="cocoon-dev@xml.apache.org" 
             mailhost="192.4.0.155"
             subject="DO NOT REPLY [PATCH QUEUE] Summary ${TODAY}"
             files="${build.patchqueue}/bugzillapatchqueue.txt"/> 
         
    </target>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/test.xtarget
  
  Index: test.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Test targets                                                       -->
    <!-- =================================================================== -->
    <target name="test" depends="compile" description="Perform jUnit tests">
      <mkdir dir="${build.test}"/>
      <!-- Copy test files to build test dir -->
      <copy todir="${build.test}" filtering="on">
        <fileset dir="${test.dir}/${test.specific}"/>
      </copy>
      <!-- Compile tests -->
      <javac srcdir="${build.test}"
              destdir="${build.test}"
              debug="${debug}"
              optimize="${optimize}"
              deprecation="${deprecation}"
              target="${target.vm}">
        <classpath refid="classpath"/>
        <classpath>
          <pathelement path="${build.dest}" />
        </classpath>
      </javac>
      <junit printsummary="yes" haltonfailure="yes" fork="yes">
        <classpath>
          <pathelement location="${build.test}" />
          <pathelement location="${build.dest}" />
          <pathelement path="${java.class.path}" />
        </classpath>
        <classpath refid="classpath"/>
        <formatter type="plain" usefile="no" />
        <batchtest>
          <fileset dir="${build.test}">
            <include name="**/test/*TestCase.class"/>
            <include name="**/*Test.class" />
            <include name="**/Test*.class" />
            <exclude name="**/AllTest.class" />
            <exclude name="**/*$$*Test.class" />
          </fileset>
        </batchtest>
      </junit>
    </target>
  
  
  
  1.1                  xml-forrest/tools/centipede/targets/util.xtarget
  
  Index: util.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Print out warnings for optional components                          -->
    <!-- =================================================================== -->
    <target name="optional-warnings"          
        description="Outputs warnings if some optional jars are missing from the environment">
    </target>
    
    <!-- =================================================================== -->
    <!-- Try other builds that could go into this core build                 -->
    <!-- =================================================================== -->
    <target name="try" 
            depends="init" 
            description="Builds to try before including in main build">
      <ant target="${try.target}" antfile="./tools/targets/try.xml"/>
    </target>
  
    <!-- =================================================================== -->
    <!-- Fix line endings in src                                             -->
    <!-- =================================================================== -->
    <target name="fixsrclf" depends="init" description="Fix lf in src directory (internal use only!)">
            <fixcrlf srcdir="${java.dir}" includes="**/*.java"       eol="lf"/>
    </target>
  
  
  1.1                  xml-forrest/tools/cocoon/conf/cocoon.xconf
  
  Index: cocoon.xconf
  ===================================================================
  <?xml version="1.0"?>
  <cocoon version="2.0">
  
  <tree-processor>
    <!-- The sitemap language -->
    <language name="sitemap" class="org.apache.cocoon.treeprocessor.sitemap.SitemapLanguage">
    
      <!-- Namespace for this language -->
      <namespace uri="http://apache.org/cocoon/sitemap/1.0"/>
    
      <!-- File name for files in this language, relative to the environment prefix -->
      <file name="sitemap.xmap"/>
      
      <!-- Description of the element for nodes parameters -->
      <parameter element="parameter"/>
      
      <!-- roles for the sitemap language -->
      <roles>
        <role name="org.apache.cocoon.acting.ActionSelector"
              shorthand="actions"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
        
        <role name="org.apache.cocoon.selection.SelectorSelector"
              shorthand="selectors"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
        
        <role name="org.apache.cocoon.matching.MatcherSelector"
              shorthand="matchers"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
  
          <hint shorthand="regexp-uri-matcher"
                class="org.apache.cocoon.matching.RegexpURIMatcher"/>
  
          <hint shorthand="wildcard-uri-matcher"
                class="org.apache.cocoon.matching.WildcardURIMatcher"/>
  
        </role>
        
        <role name="org.apache.cocoon.generation.GeneratorSelector"
              shorthand="generators"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
  
          <hint shorthand="file-generator"
                class="org.apache.cocoon.generation.FileGenerator"/>
  
          <hint shorthand="XSP-generator"
                class="org.apache.cocoon.generation.ServerPagesGenerator"/>
        </role>
        
        <role name="org.apache.cocoon.transformation.TransformerSelector"
              shorthand="transformers"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
  
          <hint shorthand="XSLT-transformer"
                class="org.apache.cocoon.transformation.TraxTransformer"/>
  
          <hint shorthand="cinclude-transformer"
                class="org.apache.cocoon.transformation.CIncludeTransformer"/>
  
        </role>
        
        <role name="org.apache.cocoon.serialization.SerializerSelector"
              shorthand="serializers"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
        
        <role name="org.apache.cocoon.reading.ReaderSelector"
              shorthand="readers"
              default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
            
        <role name="org.apache.cocoon.components.notification.NotifyingBuilder"
              shorthand="notifying-builder"
              default-class="org.apache.cocoon.components.notification.DefaultNotifyingBuilder"/>  
  
      </roles>
      
      <!-- node definitions for the sitemap language -->
      <nodes>
        <!-- All node names are given as local names in the above namespace (no prefix) -->
        
        <!-- Sitemap root node -->
        <node name="sitemap" builder="org.apache.cocoon.treeprocessor.sitemap.SitemapNodeBuilder">
          <allowed-children>components, views, action-sets, resources, pipelines</allowed-children>
        </node>
      
        <!-- Components definition : parse view info associated to components
             (actual components creation is done by SitemapLanguage) -->
        <node name="components" 
  builder="org.apache.cocoon.treeprocessor.sitemap.ComponentsNodeBuilder"/>
        
        <node name="pipelines" 
  builder="org.apache.cocoon.treeprocessor.sitemap.PipelinesNodeBuilder">
          <allowed-children>pipeline</allowed-children>
        </node>
        
        <node name="views" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
        <node name="view" builder="org.apache.cocoon.treeprocessor.sitemap.ViewNodeBuilder"/>
        <node name="resources" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
        <node name="resource" builder="org.apache.cocoon.treeprocessor.NamedContainerNodeBuilder"/>
        <node name="action-sets" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
        <node name="action-set" 
  builder="org.apache.cocoon.treeprocessor.sitemap.ActionSetNodeBuilder"/>
        <node name="pipeline" builder="org.apache.cocoon.treeprocessor.sitemap.PipelineNodeBuilder">
          <forbidden-children>sitemap, components, pipelines</forbidden-children>
        </node>
        <node name="match" builder="org.apache.cocoon.treeprocessor.sitemap.MatchNodeBuilder">
          <forbidden-children>sitemap, components, pipeline, handle-errors</forbidden-children>
        </node>
        <node name="select" builder="org.apache.cocoon.treeprocessor.sitemap.SelectNodeBuilder"/>
  
        <node name="act" builder="org.apache.cocoon.treeprocessor.sitemap.ActNodeBuilder">
          <forbidden-children>sitemap, components, pipeline, handle-errors</forbidden-children>
        </node>
        <node name="redirect-to" 
  builder="org.apache.cocoon.treeprocessor.sitemap.RedirectToNodeBuilder"/>
        <node name="call" builder="org.apache.cocoon.treeprocessor.sitemap.CallNodeBuilder"/>
        <node name="mount" builder="org.apache.cocoon.treeprocessor.sitemap.MountNodeBuilder"/>
        <node name="read" builder="org.apache.cocoon.treeprocessor.sitemap.ReadNodeBuilder"/>
        <node name="aggregate" 
  builder="org.apache.cocoon.treeprocessor.sitemap.AggregateNodeBuilder"/>
        <node name="generate" builder="org.apache.cocoon.treeprocessor.sitemap.GenerateNodeBuilder"/>
        <node name="transform" 
  builder="org.apache.cocoon.treeprocessor.sitemap.TransformNodeBuilder"/>
        <node name="serialize" 
  builder="org.apache.cocoon.treeprocessor.sitemap.SerializeNodeBuilder"/>
        <node name="handle-errors" 
  builder="org.apache.cocoon.treeprocessor.sitemap.HandleErrorsNodeBuilder"/>
  
      </nodes>
      
    </language>
  
  </tree-processor>
  
    <!-- Source Handler:
      The source handler adds special url protocols to the system, they are
      then available inside Cocoon, e.g. as a source argument for one of the
      sitemap components.
    -->
    <source-handler logger="core.source-handler">
      <!-- file protocol : this is a WriteableSource -->
      <protocol name="file" class="org.apache.cocoon.components.source.FileSourceFactory"/>
    </source-handler>
  
    <!-- Entity resolution catalogs: *********************************************
      catalog:
      The default catalog is distributed at /resources/entities/catalog
      This is the contextual pathname for Cocoon resources.
      You can override this path, if necessary, using the "catalog" parameter.
     <parameter name="catalog" value="/resources/entities/catalog"/>
      However, it is probably desirable to leave this default catalog config
      and declare your own local catalogs, which are loaded in addition to
      the system catalog.
  
      There are various ways to do local configuration (see "Entity Catalogs"
      documentation). One way is via the CatalogManager.properties file.
      As an additional method, you can specify the "local-catalog" parameter here.
  
      local-catalog:
      The full filesystem pathname to a single local catalog file.
     <parameter name="local-catalog" value="/usr/local/sgml/mycatalog"/>
  
      verbosity:
      The level of messages for status/debug (messages go to standard output)
      The following messages are provided ...
       0 = none
       1 = ? (... not sure yet)
       2 = 1+, Loading catalog, Resolved public, Resolved system
       3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
       10 = 3+, List all catalog entries when loading a catalog
      (Cocoon also logs the "Resolved public" messages.) 
      TODO: determine all messages at each level
     <parameter name="verbosity" value="2"/>
  
    ************************************************************************** -->
    <entity-resolver class="org.apache.cocoon.components.resolver.ResolverImpl"
              logger="core.resolver">
     <parameter name="catalog" value="/resources/entities/catalog"/>
     <parameter name="verbosity" value="1"/>
    </entity-resolver>
  
  <!-- ================ Apache Cocoon configuration file ================== -->
  <!-- For full description of the components and their parameters ...
       - Apache Cocoon User Documentation at /userdocs/
       - webapp/cocoon.xconf (this file) - describes each core component
       - each optional component/.../*.xconf - these describe the parameters
       for each component and are automatically included at build-time.
  
       The notes that accompany the settings below are intended to be concise.
  -->
  
  <!-- ===================== General Components =========================== -->
  
    <!-- Parser:
      The default parser used in Apache Cocoon is
      org.apache.avalon.excalibur.xml.JaxpParser. Apache Cocoon requires a 
      JAXP 1.1 parser.
      If you have problems because your servlet environment uses its own
      parser not conforming to JAXP 1.1 try using the alternative
      XercesParser instead of the JaxpParser. To activate the XercesParser,
      change the class attribute to
        class="org.apache.avalon.excalibur.xml.XercesParser"
      You will also need to add a system property to your JVM,
      probably on the startup of your servlet engine like this:
      -Dorg.apache.avalon.excalibur.xml.Parser=org.apache.avalon.excalibur.xml.XercesParser
  
      Configuration for the JaxpParser (not the XercesParser!):
      - validate (boolean, default = false): This parameter causes the parser 
          to be a validating parser.
          XML validation is only being used for the documentation build.
          (If you are going to use it elsewhere, then do so with caution.)
          You really should have validated all of your XML documents already,
          according to their proper DTD or schema. Do not expect Cocoon to do it.
      - namespace-prefixes (boolean, default = false) : do we want
          namespaces declarations also as 'xmlns:' attributes ?
          Note : setting this to true confuses some XSL processors (e.g. Saxon).
      - stop-on-warning (boolean, default = true) : should the parser
          stop parsing if a warning occurs ?
      - stop-on-recoverable-error (boolean, default = true) : should the parser
          stop parsing if a recoverable error occurs ?
      - reuse-parsers (boolean, default = true) : do we want to reuse
          parsers or create a new parser for each parse ?
          Note : even if this parameter is true, parsers are not
          recycled in case of parsing errors : some parsers (e.g. Xerces) don't like
          to be reused after failure.
      - sax-parser-factory (string) : the name of the SAXParserFactory
          implementation class to be used instead of using the standard JAXP mechanism
          (SAXParserFactory.newInstance()). This allows to choose
          unambiguously the JAXP implementation to be used when several of them are
          available in the classpath.
      - document-builder-factory (string) : the name of the
          DocumentBuilderFactory implementation to be used (similar to
          sax-parser-factory for DOM).
    -->
    <xml-parser class="org.apache.avalon.excalibur.xml.JaxpParser"
                logger="core.xml-parser">
      <parameter name="validate" value="false"/>
      <parameter name="namespace-prefixes" value="false"/>
      <parameter name="stop-on-warning" value="true"/>
      <parameter name="stop-on-recoverable-error" value="true"/>
      <!--
      <parameter name="reuse-parsers" value="true"/>
      <parameter name="sax-parser-factory" value="???"/>
      <parameter name="document-builder-factory" value="???"/>
      -->
    </xml-parser>
    
    <!-- ============================ STORE ============================ -->
    <!-- Persistent store for the cache. Two store implementations to choose
         from:
           * FilesystemStore: Simple. Dependable. Thorougly tested.
           * JispFilesystemStore: Scalable. New kid on the block. Not thorougly tested.
         If you opt in to use JispFilesystemStore, comment out FilesystemStore
         entry.
  
         JispFilesystemStore configuration parameters
         (in addition to common parameters):
           datafile: name of the store file to use.
           indexfile: name of the index file to use.
           order: FIXME: put description here.
  
    <cache-persistent class="org.apache.cocoon.components.store.JispFilesystemStore"
                      logger="core.store.persistent">
      <parameter name="use-cache-directory" value="true"/>
      <parameter name="datafile" value="cocoon-cache.dat"/>
      <parameter name="indexfile" value="cocoon-cache.idx"/>
      <parameter name="order" value="1701"/>
    </cache-persistent>
  
    <cache-persistent class="org.apache.cocoon.components.store.FilesystemStore"
                      logger="core.store.persistent">
      <parameter name="use-cache-directory" value="true"/>
    </cache-persistent>
    -->
    
    <cache-persistent class="org.apache.cocoon.components.store.JispFilesystemStore"
                      logger="core.store.persistent">
      <parameter name="use-cache-directory" value="true"/>
      <parameter name="datafile" value="cocoon-cache.dat"/>
      <parameter name="indexfile" value="cocoon-cache.idx"/>
      <parameter name="order" value="1701"/>
    </cache-persistent>
    
    <!-- Memory Storing: -->
    <cache-transient class="org.apache.cocoon.components.store.MRUMemoryStore"
           logger="core.store.transient">
       <!-- Indicates how many objects will be hold in the cache.
       When the number of maxobjects has been reached. The last object in the 
       cache will be thrown out. -->
       <parameter name="maxobjects" value="100"/>
  
       <!-- Turns the swapping of the objects into persistent cache on
            and off. -->
       <parameter name="use-persistent-cache" value="true"/>
    </cache-transient>
  
    <!-- Store Janitor:
      Be careful with the heapsize and freememory parameters. Wrong values can
      cause high cpu usage. Example configuration:
      Jvm settings: 
        -Xms100000000 -Xmx200000000
      store-janitor settings:
         <parameter name="freememory" value="5000000"/>
         <parameter name="heapsize" value="150000000"/>
    
      Heapsize *must* be higher then the -Xms parameter and *must* be lower or
      equal than -Xmx. It is recommended to have heapsize equal to -Xmx, especially
      on Sun's JVM which are unable to shrink its heap once it grows above minimum. 
      Freememory parameter *must* be lower than -Xms, and should be greater than
      amount of memory necessary for normal application operation.
    -->
    <store-janitor class="org.apache.cocoon.components.store.StoreJanitorImpl"
                   logger="core.store.janitor">
       <!-- How much free memory shall be available in the jvm -->                 
       <parameter name="freememory" value="1000000"/>
       <!-- Indicates the limit of the jvm memory consumption. The default max 
       heapsize for Sun's JVM is 64Mb -->
       <parameter name="heapsize" value="67108864"/>
       <!-- How often shall the cleanup thread check memory -->
       <parameter name="cleanupthreadinterval" value="10"/>
       <!-- Indicates the thread priority of the cleanup thread -->
       <parameter name="threadpriority" value="5"/>
       <!-- How much percent of the elements of each registered Store shall
       be removed when low on memory. Default 10% -->
       <parameter name="percent_to_free" value="10"/>
    </store-janitor>
    <!-- ============================ STORE END ========================= -->
  
    <!-- XSLT Processor:
      For Xalan: Turn 'incremental-processing' to true if you want a continous output (if set to 
  false the transformer 
      delivers SAX events after all transformations has been done). -->
    <xslt-processor class="org.apache.cocoon.components.xslt.XSLTProcessorImpl"
                    logger="core.xslt-processor">
       <parameter name="use-store" value="true"/>
       <parameter name="incremental-processing" value="false"/>
    </xslt-processor>
  
    <!-- Xpath Processor:
    -->
    <xpath-processor class="org.apache.cocoon.components.xpath.XPathProcessorImpl"
                     logger="core.xpath-processor"/>
  
    <!-- URL Factory:
      The url factory adds special url protocols to the system, they are then
      available inside Cocoon, e.g. as a source argument for one of the sitemap
      components.
    -->
    <url-factory logger="core.url-factory">
      <!-- Allows access to resources available from the ClassLoader,
           using getResource() method. -->
      <protocol name="resource" class="org.apache.cocoon.components.url.ResourceURLFactory"/>
      <!-- Allows access to resources available from the servlet context,
           using getResource() method. -->
      <protocol name="context"  class="org.apache.cocoon.components.url.ContextURLFactory"/>
      <!-- Add here protocol factories for your own protocols -->
    </url-factory>
  
    <!-- Program Generator:
      The ProgamGenerator builds programs from a XML document written in a
      MarkupLanguage.
         auto-reload:
         root-package: persistent code repository.
         preload:
    -->
    <program-generator logger="core.program-generator">
      <parameter name="auto-reload" value="true"/>
      <parameter name="root-package" value="org.apache.cocoon.www"/>
      <parameter name="preload" value="true"/>
    </program-generator>
  
    <!-- Xscript:
    -->
    <xscript logger="core.xscript">
      <parameter name="xscript:copy-of" 
  value="resource://org/apache/cocoon/components/xscript/xslt/copy-of.xsl"/>
      <parameter name="xscript:value-of" 
  value="resource://org/apache/cocoon/components/xscript/xslt/value-of.xsl"/>
    </xscript>
  
    <!-- Programming Languages: -->
    <programming-languages>
      <java-language name="java" logger="core.language.java">
        <!-- Compiler parameter specifies which class to use to compile Java.
             Possible variants are:
               Javac. Requires javac.jar (included with Cocoon distribution).
               Pizza. Requires pizza.jar (included with Cocoon distribution).
               Jikes. Requires IBM jikes compiler to be present in the PATH  -->
        <parameter name="compiler" 
  value="org.apache.cocoon.components.language.programming.java.Javac"/>
        <!-- Specifies which formatter to use to format source code.
             This parameter is optional. 
             It is commented out because of bug #5689: Java "code-formatter" incorrectly formats 
  double values
        <parameter name="code-formatter" 
  value="org.apache.cocoon.components.language.programming.java.JstyleFormatter"/>
        -->
        <!-- A singleton-like implementation of a ClassLoader -->
        <parameter name="class-loader" 
  value="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"/>
      </java-language>
  
    </programming-languages>
  
    <!-- Class loader:
      A singleton-like implementation of a ClassLoader.
    -->
    <classloader class="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"
                 logger="core.classloader"/>
    
    <!-- Markup Languages:
      This section defines several builtin logicsheets. A logicsheet is an XML
      filter used to translate user-defined, dynamic markup into equivalent
      code embedding directives for a given markup language.
    -->
    <markup-languages>
      <xsp-language name="xsp" logger="core.markup.xsp">
        <parameter name="prefix" value="xsp"/>
        <parameter name="uri" value="http://apache.org/xsp"/>
  
        <!-- Defines the XSP Core logicsheet for the Java language -->
        <target-language name="java">
          <parameter name="core-logicsheet" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl"/>
          
          <!-- The Request logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
               around standard request operations -->
          <builtin-logicsheet>
            <parameter name="prefix" value="xsp-request"/>
            <parameter name="uri" value="http://apache.org/xsp/request/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/request.xsl"/>
          </builtin-logicsheet>
         
          <!-- The Response logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
               around standard response operations -->
          <builtin-logicsheet>
            <parameter name="prefix" value="xsp-response"/>
            <parameter name="uri" value="http://apache.org/xsp/response/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/response.xsl"/>
          </builtin-logicsheet>
  
          <!-- The Session logicsheet (taglib) is an XSP logicsheet that wraps XML tags around 
               standard session operations. Specifically, the Session logicsheet provides an 
               XML interface to most methods of the HttpSession object (see the Java Servlet API 
               Specification, version 2.2 ) for more information. -->
          <builtin-logicsheet>
            <parameter name="prefix" value="session"/>
            <parameter name="uri" value="http://apache.org/xsp/session/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/session.xsl"/>
          </builtin-logicsheet>
  
          <!-- The Cookie logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
               around standard cookie operations -->
          <builtin-logicsheet>
            <parameter name="prefix" value="xsp-cookie"/>
            <parameter name="uri" value="http://apache.org/xsp/cookie/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/cookie.xsl"/>
          </builtin-logicsheet>
  
          <!-- The ESQL logicsheet is an XSP logicsheet that performs sql queries and 
               serializes their results as XML. This allows you to work with data from a 
               wide variety of different sources when using Apache Cocoon. -->
          <builtin-logicsheet>
            <parameter name="prefix" value="esql"/>
            <parameter name="uri" value="http://apache.org/cocoon/SQL/v2"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/esql.xsl"/>
          </builtin-logicsheet>
  
          <builtin-logicsheet>
            <parameter name="prefix" value="log"/>
            <parameter name="uri" value="http://apache.org/xsp/log/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/log.xsl"/>
          </builtin-logicsheet>
  
          <builtin-logicsheet>
            <parameter name="prefix" value="util"/>
            <parameter name="uri" value="http://apache.org/xsp/util/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/util.xsl"/>
          </builtin-logicsheet>
          
          <!-- The xsp-formval taglib serves as interface to retrieve validation results 
               from a request attribute -->
          <builtin-logicsheet>
            <parameter name="prefix" value="xsp-formval"/>
            <parameter name="uri" value="http://apache.org/xsp/form-validator/2.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/form-validator.xsl"/>
          </builtin-logicsheet>
  
          <!-- The sel taglib allows to put multiple pages / view into
               one xsp. While in general it is good style to put
               different views into different xsp because they're more
               easily maintained, this is a useful feature with
               e.g. with long forms that are broken into parts -->
          <builtin-logicsheet>
            <parameter name="prefix" value="sel"/>
            <parameter name="uri" value="http://apache.org/xsp/sel/1.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/sel.xsl"/>
          </builtin-logicsheet>
  
          <builtin-logicsheet>
            <parameter name="prefix" value="action"/>
            <parameter name="uri" value="http://apache.org/cocoon/action/1.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/action.xsl"/>
          </builtin-logicsheet>
  
          <!-- The capture taglib is for capturing parts of the XSP-generated XML as
               XML fragments or DOM nodes -->
          <builtin-logicsheet>
            <parameter name="prefix" value="capture"/>
            <parameter name="uri" value="http://apache.org/cocoon/capture/1.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/capture.xsl"/>
          </builtin-logicsheet>
  
          <builtin-logicsheet>
            <parameter name="prefix" value="xscript"/>
            <parameter name="uri" value="http://apache.org/xsp/xscript/1.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/xscript.xsl"/>
          </builtin-logicsheet>
  
          <builtin-logicsheet>
            <parameter name="prefix" value="soap"/>
            <parameter name="uri" value="http://apache.org/xsp/soap/3.0"/>
            <parameter name="href" 
  value="resource://org/apache/cocoon/components/language/markup/xsp/java/soap.xsl"/>
          </builtin-logicsheet>
  
        </target-language>
          
      </xsp-language>
  
      <!-- Defines Sitemap Core logicsheet for the Java language -->
      <sitemap-language name="sitemap" logger="core.markup.sitemap">
        <parameter name="prefix" value="map"/>
        <parameter name="uri" value="http://apache.org/cocoon/sitemap/1.0"/>
  
        <target-language name="java">
          <parameter name="core-logicsheet" 
  value="resource://org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl"/>
        </target-language>
      </sitemap-language>
    </markup-languages>
  
    <!-- Datasources example:
     <datasources>
      <jdbc name="personnel" logger="core.datasources.personnel">
        <pool-controller min="5" max="10" oradb="true"/>
        <pool-controller min="5" max="10"/>
        <auto-commit>false</auto-commit>
        <dburl>jdbc:hsqldb:hsql://localhost:9002</dburl>
        <user>sa</user>
        <password></password>
      </jdbc>
    </datasources>
   -->
   
    <!-- Stream Pipeline:
      Either collects a Reader and lets it produce a character stream
      or connects an EventPipeline with a Serializer and lets them produce
      the character stream. Alternatives to CachingStreamPipeline are:
      <stream-pipeline class="org.apache.cocoon.components.pipeline.NonCachingStreamPipeline"/>
    -->
    <stream-pipeline class="org.apache.cocoon.components.pipeline.CachingStreamPipeline"
                     logger="core.stream-pipeline"
                     pool-max="32" pool-min="2" pool-grow="4"/>
  
    <!-- Event Pipeline:
      Connects the generator and the various transformers and produces a
      character stream. Alternatives to CachingEventPipeline are:
      <event-pipeline class="org.apache.cocoon.components.pipeline.NonCachingEventPipeline"/>
      <event-pipeline class="org.apache.cocoon.components.profiler.ProfilingCachingEventPipeline"/>
      <event-pipeline 
  class="org.apache.cocoon.components.profiler.ProfilingNonCachingEventPipeline"/>
    -->
    <event-pipeline class="org.apache.cocoon.components.pipeline.CachingEventPipeline"
                    logger="core.event-pipeline"
                    pool-max="32" pool-min="2" pool-grow="4"/>
  
    <!-- Compiling xml to byte streams.
      The xml-serializer "compiles" xml sax events into a byte stream
      and the xml-deserializer does the same vice versa.
      Make sure, that if you change one of these components, that you
      may have to change the other one as well, as they might have
      a dependency.
    -->
    <xml-serializer class="org.apache.cocoon.components.sax.XMLByteStreamCompiler"
                    logger="core.xml-serializer"/>
  
    <xml-deserializer class="org.apache.cocoon.components.sax.XMLByteStreamInterpreter"
                      logger="core.xml-deserializer"/>
  
    <!-- SAXConnector:
      Connects the various pipeline components.
      LoggingSAXConnector logs SAX events between pipeline components
      into cocoon's log file.
      ProfilingSAXConnector gathers timing information.
      Uncomment one of the following lines for using the SAXConnector.
    <sax-connector class="org.apache.cocoon.components.saxconnector.LoggingSAXConnector"/>
    <sax-connector class="org.apache.cocoon.components.profiler.ProfilingSAXConnector"/>
    -->
  
    <!-- Profiler:
      The profiler facilitates the gathering of statistics about timings of
      different steps of pipelines. Profiler consists of several components:
       profiling pipeline, profiling SAX connector, and profiler generator
      which are used to generate the profile report. You need to enable all of
      these components to use profiler.
  
      Uncomment the following line to use profiler.
    <profiler/>
    -->
  
    <!-- Resource Monitor:
      The Monitor keeps track on changes to a Resource.
    -->
    <monitor logger="core.monitor">
      <thread priority="5" frequency="10000"/>
    </monitor>
  
  <!-- ======================== The sitemap  ============================== -->
  
    <!-- Reloading of the sitemap:
      The check-reload attribute determines if the sitemap is reloaded on change.
      Set to "no", the sitemap is generated once at startup.
      Set to "yes", the sitemap is regenerated if it changes.
  
      The reload-method specifies the method for the regeneration:
      asynchron: If the sitemap changes, the sitemap is regenerated at the
                 next request in the background and the incoming request is
                 served with the old sitemap. All subsequent requests are
                 served with the old sitemap until the regeneration in the
                 background has finished.
      synchron: If the sitemap changes, the sitemap is regenerated at the
                next request. When the regeneration is finished, the request
                (and all subsequent ones) is served with the new sitemap.
  
      For development environment, set the reload-method to synchron and the
      check-reload to yes.
      For production environment, it is advisable to set the reload-method to
      asynchron and for more safety the check-reload to no.
  
    <sitemap file="sitemap.xmap" reload-method="asynchron" check-reload="yes" logger="sitemap"/>
    -->
  
    <sitemap class="org.apache.cocoon.treeprocessor.TreeProcessor" logger="sitemap"/>
    
  <!-- ===================== Sitemap Components =========================== -->
  
    <!-- Here defined some core Cocoon sitemap components, as File generator
         or XSLT transformer. Note that syntax of this file slightly differs
         from the syntax of <map:components> section of the sitemap.xmap file.
    -->
    <generators>
      <component-instance name="file" class="org.apache.cocoon.generation.FileGenerator"
                          label="content,data"
                          logger="sitemap.generator.file"
                          pool-max="32" pool-min="2" pool-grow="4"/>
  
      <component-instance name="serverpages" class="org.apache.cocoon.generation.ServerPagesGenerator"
                          label="content,data"
                          logger="sitemap.generator.serverpages"
                          pool-max="32" pool-min="0" pool-grow="2"/>
    </generators>
  
    <transformers>
      <component-instance name="xslt" class="org.apache.cocoon.transformation.TraxTransformer"
                          logger="sitemap.transformer.xslt"
                          pool-max="32" pool-min="2" pool-grow="4">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
      </component-instance>
    </transformers>
  
    <serializers>
     <component-instance name="links" class="org.apache.cocoon.serialization.LinkSerializer"
                         encoding="iso8859-1"
                         logger="sitemap.serializer.links"
                         pool-max="32" pool-min="2" pool-grow="4"/>
  
     <component-instance name="xml" class="org.apache.cocoon.serialization.XMLSerializer"
                         encoding="iso8859-1"
                         mime-type="text/xml"
                         logger="sitemap.serializer.xml"
                         pool-max="32" pool-min="2" pool-grow="4"/>
  
     <component-instance name="html" class="org.apache.cocoon.serialization.HTMLSerializer"
                         encoding="iso8859-1"
                         mime-type="text/html"
                         logger="sitemap.serializer.html"
                         pool-max="32" pool-min="4" pool-grow="4">
       <buffer-size>1024</buffer-size>
     </component-instance>
    </serializers>
  
    <readers>
     <component-instance name="resource" class="org.apache.cocoon.reading.ResourceReader"
                         logger="sitemap.reader.resource"
                         pool-max="32"/>
    </readers>
   
  <!--
    <matchers/>
    <selectors/>
    <actions/>
  -->
  
  </cocoon>
  
  
  
  1.1                  xml-forrest/tools/cocoon/lib/avalon-excalibur-4.1.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/avalon-framework-4.1.2.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/avalon-scratchpad-20020212.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/batik-libs-1.1.1.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/cocoon-scratchpad-part.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/cocoon.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/commons-collections-1.0.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/commons-httpclient-20011012.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/jakarta-regexp-1.2.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/jisp_1_0_2.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/logkit-1.0.1.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/cocoon/lib/resolver-20020130.jar
  
  	<<Binary file>>
  
  
  1.1                  xml-forrest/tools/targets/interactive.xtarget
  
  Index: interactive.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Interactive build                                            -->
    <!-- =================================================================== -->
    <target name="interactive" description="Interactive Build" depends="init">          
      <echo message="--------------------------------------------------------------"/>
      <echo message=" "/>    
      <echo message="          ${fullname} ${version}  [${year}] "/>
      <echo message=" "/>    
      <echo message="--------------------------------------------------------------"/>
      <echo message="Building with ${ant.version}"/>  
      <echo message="using build file ${ant.file}"/>  
      <echo message="--------------------------------------------------------------"/>   
      <echo message=" These are the most common build targets."/>      
      <echo message=" You can also invoke them directly; see build.xml for more info. "/> 
      <echo message=" Builds will be in /build directory, distributions in /dist."/>        
      <echo message="  "/>    
      <echo message=" compile ------ compiles the source code "/>     
      <echo message=" docs --------- generates the html docs"/>        
      <echo message=" cleandocs ---- cleans the build docs directory"/>    
      <echo message=" javadocs ----- generates the API documentation"/>     
      <echo message=" test --------- performs the jUnit tests"/>       
      <echo message=" clean -------- cleans the build directory"/>    
      <echo message=" dist --------- creates src and bin distributions"/>    
      <echo message=" scratchpad --- build-run scratchpad code"/>       
      <echo message=" contrib ------ build-run contributed code"/>    
  
      <property name="input.selection" value="compile"/>        
      <user-input name="input.selection">Please select a target </user-input>   
  
      <antcall target="${input.selection}"/>
      
    </target>
  
  
  
  1.1                  xml-forrest/tools/targets/project.xtarget
  
  Index: project.xtarget
  ===================================================================
    <!-- =================================================================== -->
    <!-- Extra targets for this project                                      -->
    <!-- =================================================================== -->
  
    <!--    
    <target name="ABC" description="Abc" depends="init">          
  
    </target>
    -->
  
  
  

Mime
View raw message