cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stef...@locus.apache.org
Subject cvs commit: xml-cocoon/stylesheets document.css document.html.xsl javadoc.css page.xsl
Date Tue, 30 Nov 1999 16:30:12 GMT
stefano     99/11/30 08:30:11

  Modified:    .        changes.xml todo.xml
               docs     cocoon2.xml dcpprocessor.xml dynamic.xml faq.xml
                        guide.xml index.xml installing.xml license.xml
                        sqlprocessor.xml technologies.xml
               samples  README
               samples/xsp view-source.xml
               src/org/apache/cocoon Defaults.java Engine.java
                        Frontend.java cocoon.properties
               src/org/apache/cocoon/cache CocoonCache.java
               src/org/apache/cocoon/interpreter/java JavaModule.java
               src/org/apache/cocoon/parser OpenXMLParser.java Parser.java
                        SunXMLParser.java
               src/org/apache/cocoon/processor ProcessorFactory.java
               src/org/apache/cocoon/processor/xslt
                        AbstractXSLTProcessor.java XTProcessor.java
               src/org/apache/cocoon/producer AbstractProducer.java
               src/org/apache/cocoon/store MemoryStore.java
  Added:       .        build.xml
               docs     WD-xsp.xml javadoc.xml
               dtd      changes-v10.dtd characters.ent document-v10.dtd
                        faq-v10.dtd javadoc-v04draft.dtd
                        specification-v10.dtd todo-v10.dtd
               resources cocoon-small.jpg cocoon.jpg logo.gif
                        pyramid-model.gif schema.jpg
               resources/orig powered by cocoon.psd pyramid model of
                        contracts.ai
               samples/dcp sample-page-html.xsl
               samples/dcp/ecmascript sample-page.xml
               samples/dcp/java sample-page.xml
               samples/fo darkness-novel.xml novel-fo.xsl test-fo.xml
               samples/hello hello-page-html.xsl hello-page.xml
               samples/sites/java.apache.org fancy-page-html.xsl
                        news-page.xml text-page-html.xsl
               samples/sql database-page.xml
               samples/vml hello-page-vml.xsl hello-page.xml
               samples/wap example-portfolio.xml portfolio-html.xsl
                        portfolio-wml.xsl
               src      Manifest.mf
               src/org/apache/cocoon/formatter AbstractFormatter.java
                        FO2PDFFormatter.java HTMLFormatter.java
                        TextFormatter.java VRMLFormatter.java
                        WMLFormatter.java XMLFormatter.java
               src/org/apache/cocoon/parser AbstractParser.java
                        XercesParser.java
               src/org/apache/cocoon/processor/xslt XalanProcessor.java
               stylesheets document.css document.html.xsl javadoc.css
                        page.xsl
  Removed:     docs/api index.html
               docs/dtd blocks.ent changes.dtd characters.ent faq.dtd
                        page.dtd todo.dtd
               docs/images cocoon-small.jpg cocoon.jpg logo.gif
                        pyramid-model.gif schema.jpg
               docs/images/orig powered by cocoon.psd pyramid model of
                        contracts.ai
               docs/javadoc Engine_java.txt Engine_xml.txt index.html
                        javadoc.dtd javadoc_dtd.txt
               docs/stylesheets javadoc.html.css
               docs/xsp WD-xsp.html
               samples/dcp sample.page.xhtml.xsl
               samples/dcp/ecmascript sample.page.xml
               samples/dcp/java sample.page.xml
               samples/fo darkness.novel.xml novel.fo.xsl test.fo.xml
               samples/hello hello.page.xhtml.xsl hello.page.xml
               samples/sites/java.apache.org fancy.page.xhtml.xsl
                        news.page.xml text.page.xhtml.xsl
               samples/sql database.page.xml
               samples/wap example.portfolio.xml portfolio.html.xsl
                        portfolio.wml.xsl
               src      MANIFEST Makefile
               src/org/apache/cocoon/formatter OpenXMLFormatter.java
                        XSLPFormatter.java
               src/org/apache/cocoon/formatter/html
                        OpenXMLHTMLFormatter.java XSLPHTMLFormatter.java
               src/org/apache/cocoon/formatter/image NRGFormatter.java
               src/org/apache/cocoon/formatter/java XSPFormatter.java
               src/org/apache/cocoon/formatter/pdf FOPFormatter.java
               src/org/apache/cocoon/formatter/wml OpenXMLWMLFormatter.java
                        XSLPWMLFormatter.java
               src/org/apache/cocoon/formatter/xhtml
                        OpenXMLXHTMLFormatter.java XSLPXHTMLFormatter.java
               src/org/apache/cocoon/formatter/xml OpenXMLXMLFormatter.java
                        XSLPXMLFormatter.java
               src/org/apache/cocoon/parser IBMXMLParser.java
                        OracleXMLParser.java
               src/org/apache/cocoon/processor/xslt LotusXSLProcessor.java
                        OracleXSLProcessor.java
  Log:
  All a bunch of changes.
  
  Actually this is an import more than a commit. Make sure you do a fresh checkout since many things has changed.
  
  Revision  Changes    Path
  1.2       +370 -226  xml-cocoon/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/changes.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- changes.xml	1999/11/20 01:11:56	1.1
  +++ changes.xml	1999/11/30 16:29:50	1.2
  @@ -1,261 +1,405 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!---          STILL TO FINISH XML-IZING, PLEASE HELP             -->
  +<!DOCTYPE changes SYSTEM "./dtd/changes-v10.dtd">
   
  -<!DOCTYPE changes SYSTEM "./docs/dtd/changes.dtd">
  +<!-- 
  +  History of Cocoon changes
  +  $Id: changes.xml,v 1.2 1999/11/30 16:29:50 stefano Exp $
  +-->
   
   <changes title="Cocoon History of Changes">
  +  <devs>
  +    <person name="Stefano Mazzocchi" email="stefano@apache.org" id="SM"/>
  +    <person name="Donald Ball" email="balld@webslingerZ.com" id="DB"/>
  +    <person name="Ricardo Rocha" email="rrocha@plenix.org" id="RR"/>
  +    <person name="Kenneth Murphy" email="murphyk@umsystem.edu" id="KM"/>
  +  </devs>
   
  -<release version="1.6-dev" date="not yet released, found under CVS">
  - <devs>
  -  <dev name="Stefano Mazzocchi" email="stefano@apache.org" id="SM">
  - </devs>
  - 
  - <action dev="SM" type="removed" due-to="Simon McClenahan" due-to-email="simon@balr.com">
  -  Removed all old PI formats from docs and properties file
  - </action>
  - <action dev="SM" type="added" due-to="Zvi Avraham" due-to-email="zvia@netmanage.co.il">
  -  Added a public method to FormatterFactory to allow more direct formatting
  - </action>
  - <action dev="SM" type="fixed" due-to="Gerrit Hiddink" due-to-email="hiddinkg@cs.utwente.nl">
  -  Patched EngineWrapper to allow FileProducer to work when called from command line.
  - </action>
  + <release version="1.6-dev" date="">
  +  <action dev="SM" type="fix" due-to="Ambarish Chaudhari" due-to-email="ambarish.chaudhari@ecapsol.com">
  +    Fixed null problem in MemoryStore for command line operation.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added Ant build file.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added Documentation DTD.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added Documentation DTD.
  +  </action>
  +  <action dev="SM" type="update">
  +    Moved "examples/" under "samples/" for global xml.apache.org pattern.
  +  </action>
  +  <action dev="SM" type="update">
  +    Moved "examples/" under "samples/" for global xml.apache.org pattern.
  +  </action>
  +  <action dev="SM" type="update">
  +    Removed the makefile and moved to Ant as building system.
  +  </action>
  +  <action dev="SM" type="update">
  +    Moved all documentation and util files (todo, changes) to XML.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated support for Sun ProjectX TR2.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated the parser interface to allow better entity evaluation. :)
  +  </action>
  +  <action dev="SM" type="add">
  +    Added Xerces and Xalan support which now become the default components (finally!). :)
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed XML4j and LotusXSL support.
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed support for Oracle products since it was too difficult to maintain it due to
  +    requirement that Oracle XSLT processor worked on Oracle own DOM implementation.
  +  </action>
  +  <action dev="SM" type="add" due-to="Ted Achacoso" due-to-email="ted@groupserve.com">
  +    Added VoiceML sample file.
  +  </action>
  +  <action dev="SM" type="remove" due-to="Simon McClenahan" due-to-email="simon@balr.com">
  +    Removed all old PI formats from docs and properties file.
  +  </action>
  +  <action dev="SM" type="add" due-to="Zvi Avraham" due-to-email="zvia@netmanage.co.il">
  +    Added a public method to FormatterFactory to allow more direct formatting.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Gerrit Hiddink" due-to-email="hiddinkg@cs.utwente.nl">
  +    Patched EngineWrapper to allow FileProducer to work when called from command line.
  +  </action>
   </release>
   
  -<p><b>Cocoon 1.5 </b>- October 29, 1999<br>
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a> [SM], <a href="mailto:balld@webslingerZ.com">Donald
  -Ball</a>, <a href="mailto:murphyk@umsystem.edu">Kenneth Murphy</a>, <a href="mailto:malimpen@dei.unipd.it">Stefano
  -Malimpensa</a> [SM2])
  -<ul>
  -  <li>Fixed concurrency problem in XML4j parser. Again thanks to Jeffrey Thomas
  -    Harris for the info (SM)</li>
  -  <li>Added JRun installation instructions. Thanks to <a href="mailto:sstirlin@gis.net">           Scott Stirling</a>
  -    for this (SM)</li>
  -  <li>Added more info on the Cocoon status page. Thanks to <a href="mailto:dlehn@vt.edu">David
  -    Lehn</a> for the patch. (SM)</li>
  -  <li>Patched OpenXML that had a bug in the XML publisher that didn't support doctypes imposed from the
  -    outside. This was breaking the WML formatter. (SM)</li>
  -  <li>Patched XSL:P to support &lt;xsl:processing-instruction&gt; instead of
  -    &lt;xsl:pi&gt; which is now deprecated. 
  +<release version="1.5" date="October 29 1999">
  +  <action dev="SM" type="fix" due-to="Jeffrey Thomas Harris" due-to-email="harris@columbus.rr.com">
  +    Fixed concurrency problem in XML4j parser.
  +  </action>
  +  <action dev="SM" type="add" due-to="Scott Stirling" due-to-email="sstirlin@gis.net">
  +    Added JRun installation instructions.
  +  </action>
  +  <action dev="SM" type="add" due-to="David Lehn" due-to-email="dlehn@vt.edu">
  +    Added more info on the Cocoon status page.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Patched OpenXML that had a bug in the XML publisher that didn't support doctypes imposed from the
  +    outside. This was breaking the WML formatter.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Patched XSL:P to support &lt;xsl:processing-instruction&gt; instead of &lt;xsl:pi&gt; which is now deprecated. 
       This makes XSL:P a hybrid between XSLT revisions but it's easier this way than to create two sets
  -    of examples that work with latest and oldest releases of XSLT. Hopefully XSLT will standardize soon. (SM)</li>
  -  <li>Fixed XML4J support bug. Thanks to <a href="mailto:harris@columbus.rr.com"> Jeffrey Thomas Harris</a>
  -    for the patch (SM)</li>
  -  <li>Added XSL:P Formatters (SM)</li>
  -  <li>Updated XSL:P to build 19991017 (SM)</li>
  -  <li>Added parameter visibility to formatters to allow request-dependent
  -    formatting. Thanks to <a href="mailto:ben@algroup.co.uk">Ben Laurie</a> for
  -    the suggestion (SM)</li>
  -  <li>Changed Hashtable in more abstract Dictionary in all interfaces (this will
  -    be updated to collection classes when JDK 1.2 is available) (SM)</li>
  -  <li>Updated Fop to version 0.11 (SM)</li>
  -  <li>Added a work-around for the JServ1.1b2 bug (SM2)</li>
  -  <li>Updated documentation (SM)</li>
  -  <li>Added the plan for JavaDOC XML generator and the JavaDOC DTD working draft
  -    (KM)</li>
  -  <li>Updated examples, especially the WML example which was based on an
  -    obsolete WML DTD (SM)</li>
  -  <li>Added WML formatter (SM)</li>
  -  <li>Added the ability to &quot;mount&quot; the Cocoon status to a configurable
  -    URL (SM)</li>
  -  <li>Added the ability to hide Cocoon status for security reasons (SM)</li>
  -  <li>Removed the persistent part of the object store since it's not used (SM)</li>
  -  <li>Fixed DCP problem in loading the initScript.es file as system resource
  -    (SM)</li>
  -  <li>Added some better diagnostic hooks. Thanks to <a href="mailto:ben@algroup.co.uk">Ben
  -    Laurie</a> for the patch (SM)</li>
  -  <li>Added SQLProcessor (DB)</li>
  -  <li>Fixed a bug in the EcmaScript language interpreter.(SM2)</li>
  -  <li>Fixed problems on startup without complete configurations and written more
  -    descriptive error messages on exceptions. (SM)</li>
  -  <li>Updated the examples to reflect the changes. (SM)</li>
  -  <li>Changed Cocoon illegal PIs from &lt;?cocon:xxx?&gt; to &lt;?cocoon-xxx?&gt;.
  -    Thanks to <a href="mailto:tbray@textuality.com">Tim Bray</a> for his advice
  -    (SM)</li>
  -</ul>
  -<p><b>Cocoon 1.4 </b>- September 13 1999<br>
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>, <a href="mailto:jtauber@jtauber.com">James
  -Tauber</a>, <a href="mailto:paul_ororke@sparks.com">Paul O'Rorke</a>, <a href="mailto:rrocha@plenix.org">Ricardo
  -Rocha</a>, <a href="mailto:chris_conway@mail.scp.com">Christopher Conway</a>, <a href="mailto:kvisco@ziplink.net">Keith
  -Visco</a>, <a href="mailto:hannes@haug.com">Hannes Haug</a>)
  -<ul>
  -  <li>Fixed portability issues with JRun and Sun's JSWDK. (HH)</li>
  -  <li>Added parsed stylesheets caching capabilities to the AbstractXSLTProcessor:
  +    of examples that work with latest and oldest releases of XSLT. Hopefully XSLT will standardize soon.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Jeffrey Thomas Harris" due-to-email="harris@columbus.rr.com">
  +    Fixed XML4J support bug.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added XSL:P Formatters.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated XSL:P to build 19991017.
  +  </action>
  +  <action dev="SM" type="add" due-to="Ben Laurie" due-to-email="ben@algroup.co.uk">
  +    Added parameter visibility to formatters to allow request-dependent formatting.
  +  </action>
  +  <action dev="SM" type="update">
  +    Changed Hashtable in more abstract Dictionary in all interfaces (this will
  +    be updated to collection classes when JDK 1.2 is available).
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated Fop to version 0.11
  +  </action>
  +  <action dev="SM" type="add" due-to="Stefano Malimpensa" due-to-email="malimpen@dei.unipd.it">
  +    Added a work-around for the JServ1.1b2 bug.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated documentation.
  +  </action>
  +  <action dev="KM" type="add">
  +    Added the plan for JavaDOC XML generator and the JavaDOC DTD working draft.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated examples, especially the WML example which was based on an obsolete WML DTD.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added WML formatter.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the ability to &quot;mount&quot; the Cocoon status to a configurable URL.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the ability to hide Cocoon status for security reasons.
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed the persistent part of the object store since it's not used.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Fixed DCP problem in loading the initScript.es file as system resource.
  +  </action>
  +  <action dev="SM" type="add" due-to="Ben Laurie" due-to-email="ben@algroup.co.uk">
  +    Added some better diagnostic hooks.
  +  </action>
  +  <action dev="DB" type="add">
  +    Added SQLProcessor.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Stefano Malimpensa" due-to-email="malimpen@dei.unipd.it">
  +    Fixed a bug in the EcmaScript language interpreter.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Fixed problems on startup without complete configurations and written more
  +    descriptive error messages on exceptions.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated the examples to reflect the changes.
  +  </action>
  +  <action dev="SM" type="update" due-to="Tim Bray" due-to-email="tbray@textuality.com">
  +    Changed Cocoon illegal PIs from &lt;?cocon:xxx?&gt; to &lt;?cocoon-xxx?&gt;.
  +  </action>
  +</release>
  +
  +<release version="1.4" date="September 13 1999">
  +  <action dev="SM" type="fix" due-to="Hannes Haug" due-to-email="hannes@haug.com">
  +    Fixed portability issues with JRun and Sun's JSWDK.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added parsed stylesheets caching capabilities to the AbstractXSLTProcessor:
       now if produced files are changed but stylesheets don't, the second are not
       reparsed, improving the system performance since this is a very frequent
  -    case (SM)&nbsp;</li>
  -  <li>Reduced the memory footprint of some classes by initializing the
  -    hashtables to lower values than default (SM)</li>
  -  <li>Improved the speed of PI searching by looking for first found PI instead
  -    of scanning the whole file (SM)</li>
  -  <li>Updated the cocoon processing instructions that drive the reaction: &lt;?<i>cocoon:process?&gt;</i>
  -    drives the processing reaction, <i>&lt;?cocoon.format?&gt;</i> indicates the
  -    formatter used to end processing and format the document (SM)</li>
  -  <li>Removed the processor pipeline and replaced with a reactor-type router
  -    with PI-based reaction. (SM)</li>
  -  <li>Moved the example classes in their own package for easier installation and
  -    testing (SM)&nbsp;</li>
  -  <li>Modified a number of classes to fit the new Store and Cache subframeworks.
  -    (SM)</li>
  -  <li>Added a first implementation of the Cache interface based on dynamic
  -    evaluation of changeable points. Since each page is created by different
  -    logic blocks, each one is treated as a <i>changeable point</i> and queried
  -    for change at request time. This allows the page to be recreated if one of
  -    the changeable points changes. (SM)</li>
  -  <li>Added a first implementation of the Store interface based on serialization
  -    persistency wrapped by an adaptively managed memory buffer. The object
  -    storage system is used by the Cache system and its ready for long-living
  -    objects such as compiled pages and such that should survive the JVM
  -    shutdown. (SM)</li>
  -  <li>Added support for the Oracle XSL Processor (works only with the Oracle XML
  -    Parser) (SM)</li>
  -  <li>Added the Store framework (SM)</li>
  -  <li>Included FOP Version 0.9.1 that partially supports latest XSL Formatting
  -    Object specification (19990421) (JT)</li>
  -  <li>Included XSL:P Version 1.0 Beta (19990823) that supports latest XSLT
  -    specification (19990421) (KV)</li>
  -  <li>Introduced the Actor/Director concept to allow cleaner implementation and
  -    configuration of dynamically loaded objects. (SM)</li>
  -  <li>Added the WAP example to show how Cocoon can serve the same content to fat
  +    case.
  +  </action>
  +  <action dev="SM" type="update">
  +    Reduced the memory footprint of some classes by initializing the
  +    hashtables to lower values than default.
  +  </action>
  +  <action dev="SM" type="update">
  +    Improved the speed of PI searching by looking for first found PI instead
  +    of scanning the whole file.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated the cocoon processing instructions that drive the reaction: &lt;?cocoon:process?&gt;
  +    drives the processing reaction, &lt;?cocoon.format?&gt; indicates the
  +    formatter used to end processing and format the document.
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed the processor pipeline and replaced with a reactor-type router
  +    with PI-based reaction.
  +  </action>
  +  <action dev="SM" type="update">
  +    Moved the example classes in their own package for easier installation and testing.
  +  </action>
  +  <action dev="SM" type="update">
  +    Modified a number of classes to fit the new Store and Cache subframeworks.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added a first implementation of the Cache interface based on dynamic
  +    evaluation of changeable points.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added a first implementation of the Store interface based on serialization
  +    persistency wrapped by an adaptively managed memory buffer.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added support for the Oracle XSL Processor (works only with the Oracle XML Parser).
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the Store framework.
  +  </action>
  +  <action dev="SM" type="add" due-to="James Tauber" due-to-email="jtauber@jtauber.com">
  +    Included FOP Version 0.9.1 that partially supports latest XSL Formatting
  +    Object specification (19990421).
  +  </action>
  +  <action dev="SM" type="update" due-to="Keith Visco" due-to-email="kvisco@ziplink.net">
  +    Included XSL:P Version 1.0 Beta (19990823) that supports latest XSLT
  +    specification (19990421).
  +  </action>
  +  <action dev="SM" type="add">
  +    Introduced the Actor/Director concept to allow cleaner implementation and
  +    configuration of dynamically loaded objects.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the WAP example to show how Cocoon can serve the same content to fat
       HTML clients and thin WML clients such as WAP-enabled cellular phones or PDA.
  -    (SM).</li>
  -  <li>Removed the need for a properties file in DCP (SM)</li>
  -  <li>Fixed a minor bug in Configurations. (HH)</li>
  -  <li>Added the Producer subframework for easier dynamic XML generation (SM)</li>
  -  <li>Rewrote and cleaned up the formatting section using the Router abstract
  -    class (SM)</li>
  -  <li>Rewrote some of the underlying design pattern implementations (SM)</li>
  -  <li>Fixed bug in SunXMLParser not implementing Status (CC)</li>
  -  <li>Added support for Oracle XML parser (CC)</li>
  -  <li>Added Dynamic Content Processor (RR)</li>
  -  <li>Updated sample configurations to reflect the changes (SM)</li>
  -  <li>Rewrote the PI parser for more general use in AbstractXSLProcessor (SM)</li>
  -  <li>Created the EngineWrapper class to extend the Engine class for use on
  -    non-servlet based applications. (SM)</li>
  -  <li>Added the possibility to use request parameters to trigger special events
  -    on the page. Currently <em>debug</em> and <em>cache</em> are supported (SM)</li>
  -  <li>Added request and cache as parameters for the processor chain as requested
  -    by more sophisticated processors (SM)</li>
  -  <li>Changed the cache system interface to match new needs (SM) [note: the
  -    cache system has not been yet ported]</li>
  -  <li>Changed the printing architecture. Now, you don't need to specify the type
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed the need for a properties file in DCP.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Hannes Haug" due-to-email="hannes@haug.com">
  +    Fixed a minor bug in Configurations.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the Producer subframework for easier dynamic XML generation.
  +  </action>
  +  <action dev="SM" type="update">
  +    Rewritten and cleaned up the formatting section using the Router abstract class.
  +  </action>
  +  <action dev="SM" type="update">
  +    Rewritten some of the underlying design pattern implementations.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Christopher Conway" due-to-email="chris_conway@mail.scp.com">
  +    Fixed bug in SunXMLParser not implementing Status.
  +  </action>
  +  <action dev="SM" type="add" due-to="Christopher Conway" due-to-email="chris_conway@mail.scp.com">
  +    Added support for Oracle XML parser.
  +  </action>
  +  <action dev="RR" type="add">
  +    Added Dynamic Content Processor.
  +  </action>
  +  <action dev="SM" type="update">
  +    Updated sample configurations to reflect the changes.
  +  </action>
  +  <action dev="SM" type="update">
  +    Rewritten the PI parser for more general use in AbstractXSLProcessor.
  +  </action>
  +  <action dev="SM" type="add">
  +    Created the EngineWrapper class to extend the Engine class for use on
  +    non-servlet based applications.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the possibility to use request parameters to trigger special events
  +    on the page. Currently debug and cache are supported.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added request and cache as parameters for the processor chain as requested
  +    by more sophisticated processors.
  +  </action>
  +  <action dev="SM" type="update">
  +    Changed the cache system interface to match new needs.
  +  </action>
  +  <action dev="SM" type="update">
  +    Changed the printing architecture. Now, you don't need to specify the type
       of formattation but the publishing system will understand it for you (based
  -    on processing instructions and the specified document type) (SM)</li>
  -  <li>Added white paper on the Cocoon 2 architecture for public review (SM)</li>
  -  <li>Fixed typos, added support for more detailed verbosity and fixed a
  -    path-parsing bug for win32 systems (PO)</li>
  -  <li>Added support for James Tauber's FOP to translate XSL:FO-styled documents
  -    into PDF documents (JT, SM)</li>
  -</ul>
  -<p><b>Cocoon 1.3.1</b> - May 31 1999<br>
  -(<a href="mailto:balld@webslingerZ.com">Donald Ball</a>, <a href="mailto:stefano@apache.org">Stefano
  -Mazzocchi</a>)
  -<ul>
  -  <li>Added the first finished working draft of the XSP specification for public
  -    review (SM)</li>
  -  <li>Removed the XML and XSL specifications from the distribution (SM)</li>
  -  <li>Fixed a deadlock problem in the cache system (DB)</li>
  -</ul>
  -<p><b>Cocoon 1.3</b> - May 12 1999<br>
  -(<a href="mailto:balld@webslingerZ.com">Donald Ball</a>, <a href="mailto:stefano@apache.org">Stefano
  -Mazzocchi</a>, <a href="mailto:shecter@darmstadt.gmd.de">Robb Shecter</a>)
  -<ul>
  -  <li>Included more detailed example of future XSP technology (under <em>examples/xsp</em>).
  -    Note: the Cocoon 1.x generation will not support XSP and they are currently
  -    being designed. A very very early access of the working draft is available
  -    under <em>docs/xsp</em> (SM)</li>
  -  <li>Patched the Sun ProjectX parser wrapper to work with latest release. Added
  -    also a Sun printer class (RS)</li>
  -  <li>Added the ability to call Cocoon from the command line (DB and SM)</li>
  -  <li>Fixed the final Vector.toString() problem in JDK 1.1 compilation (SM)</li>
  -  <li>Fixed the &quot;verify error&quot; by using Jikes compiler for
  -    distribution (SM)</li>
  -  <li>Cleaned up documentation and added some entries in the FAQ (SM)</li>
  -  <li>Removed win32 batch scripts and rewritten the makefile (SM)</li>
  -  <li>Added a better cache engine (DB)</li>
  -</ul>
  -<p><b>Cocoon 1.2</b> - Apr 30 1999<br>
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>, <a href="mailto:balld@webslingerZ.com">Donald
  -Ball</a>)
  -<ul>
  -  <li>Improved documentation and cleaned things around (SM)</li>
  -  <li>Changed versions of both OpenXML and XSL:P (SM)</li>
  -  <li>Moved the core processing into a different class named Engine, first step
  -    to a complete servlet/application duality (SM)</li>
  -  <li>Added the Cocoon status handler (SM)</li>
  -  <li>Added a better user interface for the servlet and a nicer look to report
  -    errors (SM)</li>
  -  <li>Added the OpenXML printer wrapper class that uses the new X3P API (DB)</li>
  -  <li>Changed the initialization section to match exceptions thrown on different
  -    servlet platforms (SM).</li>
  -  <li>Changed behavior to identity transformation through the DOM processors if
  -    no PI are found. Thanks to <a href="mailto:george@moberg.com">George T.
  -    Talbot</a> for pointing it out (SM)</li>
  -</ul>
  -<p><b>Cocoon 1.1.1</b> - Apr 5 1999<br>
  -(<a href="mailto:ritter@wt.net">Greg Ritter</a>, <a href="mailto:adrian_durkin@hotmail.com">Adrian
  -Durkin</a>, <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  -<ul>
  -  <li>Fixed a problem with the getClassloader() method returning null. Now
  +    on processing instructions and the specified document type).
  +  </action>
  +  <action dev="SM" type="add">
  +    Added white paper on the Cocoon 2 architecture for public review.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Paul O'Rorke" due-to-email="paul_ororke@sparks.com">
  +    Fixed typos, added support for more detailed verbosity and fixed a
  +    path-parsing bug for win32 systems.
  +  </action>
  +  <action dev="SM" type="add" due-to="James Tauber" due-to-email="jtauber@jtauber.com">
  +    Added support for James Tauber's FOP to translate XSL:FO-styled documents
  +    into PDF documents.
  +  </action>
  +</release>
  +
  +<release version="1.3.1" date="May 31 1999">
  +  <action dev="SM" type="add">
  +    Added the first finished working draft of the XSP specification for public review.
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed the XML and XSL specifications from the distribution.
  +  </action>
  +  <action dev="DB" type="fix">
  +    Fixed a deadlock problem in the cache system.
  +  </action>
  +</release>
  +
  +<release version="1.3" date="May 12 1999">
  +  <action dev="SM" type="add">
  +    Included more detailed example of future XSP technology.
  +  </action>
  +  <action dev="SM" type="add" due-to="Robb Shecter" due-to-email="shecter@darmstadt.gmd.de">
  +    Patched the Sun ProjectX parser wrapper to work with latest release. Added also a Sun printer class.
  +  </action>
  +  <action dev="DB" type="add">
  +    Added the ability to call Cocoon from the command line.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Fixed the final Vector.toString() problem in JDK 1.1 compilation.
  +  </action>
  +  <action dev="SM" type="fix">
  +    Fixed the &quot;verify error&quot; by using Jikes compiler for distribution.
  +  </action>
  +  <action dev="SM" type="update">
  +    Cleaned up documentation and added some entries in the FAQ.
  +  </action>
  +  <action dev="SM" type="remove">
  +    Removed win32 batch scripts and rewritten the makefile.
  +  </action>
  +  <action dev="DB" type="add">
  +    Added a better cache engine.
  +  </action> 
  +</release>
  +
  +<release version="1.2" date="April 30 1999">
  +  <action dev="SM" type="update">
  +    Improved documentation and cleaned things around.
  +  </action>
  +  <action dev="SM" type="update">
  +    Changed versions of both OpenXML and XSL:P.
  +  </action>
  +  <action dev="SM" type="update">
  +    Moved the core processing into a different class named Engine, first step
  +    to a complete servlet/application duality.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added the Cocoon status handler.
  +  </action>
  +  <action dev="SM" type="add">
  +    Added a better user interface for the servlet and a nicer look to report errors.
  +  </action>
  +  <action dev="DB" type="add">
  +    Added the OpenXML printer wrapper class that uses the new X3P API.
  +  </action>
  +  <action dev="SM" type="update">
  +    Changed the initialization section to match exceptions thrown on different
  +    servlet platforms.
  +  </action>
  +  <action dev="SM" type="update" due-to="George T. Talbot" due-to-email="george@moberg.com">
  +    Changed behavior to identity transformation through the DOM processors if
  +    no PI are found.
  +  </action>
  +</release>
  +
  +<release version="1.1.1" date="Apr 5 1999">
  +  <action dev="SM" type="fix">
  +    Fixed a problem with the getClassloader() method returning null. Now
       Cocoon doesn't always use the internal properties file but adds hardcoded
       default values. This is because in Java 1.1 there is no getSystemClassloader()
  -    method (SM).</li>
  -  <li>Included the updated versions of both OpenXML 1.0.5 and XSL:P 19990326
  -    which should fix lots of bugs and improve the overall performance (SM)</li>
  -  <li>Patched to avoid the use of File.toURL() method which is not found under
  -    the Java1 platform (SM, thanks to AD)</li>
  -  <li>Added DoNothingCache to avoid caching during document debugging (GR)</li>
  -</ul>
  -
  -<release version="1.1" date="Mar 25 1999">
  - <devs>
  -  <dev name="Stefano Mazzocchi" email="stefano@apache.org" id="SM">
  -  <dev name="Greg Ritter" email="ritter@wt.net" id="GR">
  - </devs>
  - 
  +    method.
  +  </action>
  +  <action dev="SM" type="update">
  +    Included the updated versions of both OpenXML 1.0.5 and XSL:P 19990326
  +    which should fix lots of bugs and improve the overall performance.
  +  </action>
  +  <action dev="SM" type="fix" due-to="Adrian Durkin" due-to-email="adrian_durkin@hotmail.com">
  +    Patched to avoid the use of File.toURL() method which is not found under
  +    the Java1 platform.
  +  </action>
  +  <action dev="SM" type="add" due-to="Greg Ritter" due-to-email="ritter@wt.net">
  +    Added DoNothingCache to avoid caching during document debugging.
  +  </action>
  +</release>
  +
  +<release version="1.1" date="March 25 1999">
    <action dev="SM" type="update">
     Changed the stylesheet mapping processing instruction from illegal &quot;xml:stylesheet&quot;
  -  to standard &quot;xml-stylesheet&quot; 
  +  to standard &quot;xml-stylesheet&quot;.
    </action>
    <action dev="SM" type="add">
  -  Created Cocoon logo
  +  Created Cocoon logo.
    </action>
  - <action dev="GR" type="add">
  -  Added LRU caching (both memory and disk)
  + <action dev="SM" type="add" due-to="Greg Ritter" due-to-email="ritter@wt.net">
  +  Added LRU caching (both memory and disk).
    </action>
    <action dev="SM" type="add" due-to="Keith Visco" due-to-email="kvisco@ziplink.net">
  -  Added support for XSL:P processor
  +  Added support for XSL:P processor.
    </action>
    <action dev="SM" type="remove">
  -  Removed support for Koala XSL parser
  +  Removed support for Koala XSL parser.
    </action>
    <action dev="SM" type="update">
  -  Redesigned internal framework
  +  Redesigned internal framework.
    </action>
    <action dev="SM" type="fix" due-to="Patrick Gardella" due-to-email="patrick@cre8tivegroup.com">
  -  Fixed some typos and English bugs in docs
  +  Fixed some typos and English bugs in docs.
    </action>
   </release>
   
  -<release version="1.0" date="Mar 10 1999">
  - <devs>
  -  <dev name="Stefano Mazzocchi" email="stefano@apache.org" id="SM">
  - </devs>
  - 
  +<release version="1.0" date="March 10 1999">
    <action dev="SM" type="add">
  -  Initial version
  +  Initial version.
    </action>
   </release>
  -
  -<release version="" date="">
  - <devs>
  -  <dev name="Stefano Mazzocchi" email="stefano@apache.org" id="SM">
  -  <dev name="" email="" id="">
  - </devs>
  - 
  - <action dev="SM" type="" due-to="" due-to-email="">
  - </action>
  -</release>
  -
  -</changes>
   
  +</changes>
  \ No newline at end of file
  
  
  
  1.2       +45 -27    xml-cocoon/todo.xml
  
  Index: todo.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/todo.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- todo.xml	1999/11/20 01:12:00	1.1
  +++ todo.xml	1999/11/30 16:29:50	1.2
  @@ -1,58 +1,76 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE todo SYSTEM "./docs/dtd/todo.dtd">
  +<!DOCTYPE todo SYSTEM "./dtd/todo-v10.dtd">
   
  -<todo title="Cocoon Things To Do">
  +<!-- 
  +  History of Cocoon changes
  +  $Id: todo.xml,v 1.2 1999/11/30 16:29:50 stefano Exp $
  +-->
   
  - <action priority="high" assigned-to="Stefano">
  -  Finish XML-ize the docs (changes.xml and faq.xml).
  +<todo title="Cocoon Things To Do">
  + <devs>
  +  <person name="Stefano Mazzocchi" email="stefano@apache.org" id="SM"/>
  +  <person name="Donald Ball" email="balld@webslingerZ.com" id="DB"/>
  +  <person name="Ricardo Rocha" email="rrocha@plenix.org" id="RR"/>
  +  <person name="Kenneth Murphy" email="murphyk@umsystem.edu" id="KM"/>
  +  <person name="Pierpaolo Fumagalli" email="pier@apache.org" id="PF"/>
  + </devs>
  + 
  + <action priority="showstopper" assigned-to="SM" context="docs">
  +  Finish XML-ize the docs (xsp-spec).
    </action>
   
  - <action priority="high" assigned-to="Stefano">
  -  Write the stylesheets for the docs.
  - </action>
  - 
  - <action priority="high" assigned-to="Stefano">
  -  Add support for Xalan e Xerces and new FOP.
  + <action priority="showstopper" assigned-to="SM" context="docs">
  +  Write the stylesheets for the docs and traslations to stylebook DTD.
    </action>
   
  - <action priority="high">
  -  support external entities with relative URIs
  + <action priority="showstopper" assigned-to="SM" context="docs">
  +  Integrate docs with xml.apache.org.
    </action>
   
  - <action priority="high">
  + <action priority="showstopper" context="code">
     pass request/session parameters to the XSLT processors for dynamic
  -  stylesheet operation
  +  stylesheet operation.
    </action>
   
  - <action priority="medium" assigned-to="Stefano">
  + <action priority="showstopper" assigned-to="SM" context="build">
  +  Finish Ant makefile to build instead of makefile.
  + </action>
  +
  + <action priority="showstopper" assigned-to="SM" context="admin">
     Make sure you removed all the java.apache.org instances around.
    </action>
  +
  +
  +
  +
  + <action priority="medium" assigned-to="SM" context="design">
  +  Write SiteMap document.
  + </action>
   
  - <action priority="medium" assigned-to="Stefano">
  + <action priority="medium" assigned-to="SM" context="code">
     Play around with Tomcat.
    </action>
   
  - <action priority="medium" assigned-to="Stefano|Pier">
  + <action priority="medium" assigned-to="SM" context="admin">
     Add the Cocoon2 branch with the Kali sources.
    </action>
   
  - <action priority="medium" assigned-to="Stefano|Ricardo">
  + <action priority="medium" assigned-to="RR" context="code">
     Add the XSP compiler.
    </action>
   
  - <action priority="medium" assigned-to="Pier|Stefano">
  -  Write the NRG DTD WD and try to implement a formatter for this. (should we
  -  create its own project? include with FOP?)
  + <action priority="medium" assigned-to="PF" context="design">
  +  Merge stylebook technology with Cocoon
    </action>
  + 
  + 
    
  - <action priority="medium">
  + 
  + 
  + <action priority="low" context="code">
     make the error page formatted with the wanted mime type and not only HTML
     (probably impossible in Cocoon1 model)
  - </action>
  - 
  - <action priority="low" assigned-to="Stefano">
  -  Use Ant to build instead of makefile.
    </action>
  -   
  +  
   </todo>
  
  
  
  1.1                  xml-cocoon/build.xml
  
  Index: build.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!-- ===================================================================
  
     Build file for Cocoon
  
  Notes:
     This is a build file for use with the Jakarta Ant java build tool.
     
  Installation Instructions:   
     To install Ant on your system, you need to checkout the
     "jakarta-tools" CVS module. Then you should place the files
       - ant.jar
       - projectx-tr2.jar
       - javac.jar
     in your classpath. (XML parser abstraction is currently in
     the todo list, volunteers welcome!)
     
  Build Instructions:   
     To build, run
      
       java org.apache.tools.ant.Main
       
     on the directory where this file is located.
  
  Authors:
    Stefano Mazzocchi <stefano@apache.org>
    
  Fixme:
    - add "dist", "docs" and "samples" targets
    - design better package abstraction and build system
    - use token evaluation to keep versining info in this file only
  
  Copyright:
    Copyright (c) 1999 The Apache Software Foundation.
    
     $Id: build.xml,v 1.1 1999/11/30 16:29:50 stefano Exp $
     
  ==================================================================== -->
  
  <project default="package" basedir=".">
  
    <property name="name" value="Cocoon"/>
    <property name="version" value="1.6-dev"/>
    <property name="year" value="1999"/>
  
    <property name="build.compiler" value="classic"/>
    <property name="debug" value="off"/>
    
    <property name="src.dir" value="./src"/>
    <property name="stylesheets" value="./docs/stylesheets"/>
    <property name="version.file" value="org/apache/cocoon/Defaults.java"/>
    
    <!-- this sucks! we should have a way to tell something like "org.apache.cocoon.*"
         let stupid javadoc do the job. I love javadoc's idea but I hate who
         wrote it. -->
    <property name="packages" value="org.apache.cocoon"/>
  
    <property name="build.dir" value="./build"/>
    <property name="build.src" value="./build/src"/>
    <property name="build.dest" value="./build/classes"/>
    <property name="build.docs" value="./build/docs"/>
    <property name="build.javadocs" value="./build/javadocs"/>
  
    <property name="dist.dir" value="./dist"/>
  
    <target name="prepare">
      <!-- create temporary build dirs -->
      <mkdir dir="${build.dir}"/>
      <mkdir dir="${build.src}"/>
      <mkdir dir="${build.dest}"/>
      <mkdir dir="${build.docs}"/>
      <mkdir dir="${build.javadocs}"/>
  
      <!-- copy src files dirs -->
      <copydir src="${src.dir}" dest="${build.src}"/>
      
      <!-- substitute tokens as needed ("replace" not yet implemented) -->
      <!-- <replace file="${build.src}/${version.file}" token="@version@" value="${version}"/> -->
    </target>
  
    <target name="compile" depends="prepare">
      <javac srcdir="${build.src}" destdir="${build.dest}" debug="${debug}"/>
    </target>
  
    <target name="javadocs" depends="prepare">
      <mkdir dir="${build.javadocs}"/>
      <copyfile src="${stylesheets}/javadoc.css" dest="$}build.javadocs}/stylesheet.css"/>
      <javadoc2 sourcepath="${build.src}" 
                destdir="${build.javadocs}"
                packagenames="${packages}"
                author="true" 
                version="true" 
                use="true"
                windowtitle="${name} API"
                doctitle="<h2>${name}</h2>"
                bottom="<font size="-1">Copyright &copy; ${YEAR} Apache XML Project. All Rights Reserved.</font>"
      />
    </target>
  
    <target name="docs" depends="javadocs">
      <mkdir dir="${build.docs}"/>
      <!-- here should go the <stylebook > stuff -->
    </target>
  
    <target name="package" depends="compile">
      <jar jarfile="${build.dir}/$(name).jar" basedir="${build.dest}" manifest="${build.src}/MANIFEST.mf" items="org"/>
    </target>
    
    <target name="dist" depends="package, docs">
      <mkdir dir="${dist.dir}"/>
      
      <!-- yet to finish! -->
     
    </target>
    
    <target name="clean">
      <deltree dir="${build.dir}"/>
      <deltree dir="${dist.dir}"/>
    </target>
  
  </project>
  
  
  
  1.2       +73 -55    xml-cocoon/docs/cocoon2.xml
  
  Index: cocoon2.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/cocoon2.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cocoon2.xml	1999/11/20 01:16:16	1.1
  +++ cocoon2.xml	1999/11/30 16:29:51	1.2
  @@ -1,13 +1,17 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Cocoon 2">
  - <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  +<document>
  + <header>
  +  <title>Cocoon 2</title>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
   
  -<section title="Introduction">
  + <body>
  + <s1 title="Introduction">
     <p>The Cocoon Project has gone a long way since it's creation on
     January 1999. It started as a simple servlet for static XSL styling and became
     more and more powerful as new features were added. Unfortunately, design
  @@ -26,9 +30,9 @@
     <p>In an era where services rather than software will be key for
     economical success, a better and less expensive model for web publishing will
     be a winner, especially if based on open standards.</p>
  -</section>
  + </s1>
   
  -<section title="Passive APIs vs. Active APIs">
  + <s1 title="Passive APIs vs. Active APIs">
     <p>Web serving environments must be fast and scalable to be
     useful. Cocoon1 was born as a &quot;proof of concept&quot; rather than a
     production software and had significant design restrictions based mainly on
  @@ -57,43 +61,48 @@
     formatted in the response stream. This has significant impacts on performance
     and memory needs:</p>
     
  -  <list>
  -    <item name="">
  -      <p><em>incremental operation</em>: the response is created
  +  <ul>
  +    <li>
  +      <strong>incremental operation</strong>: the response is created
         during document production. Client's perceived performance is dramatically
         improved since clients can start receiving data as soon as it is created,
         not after all processing stages have been performed. In those cases where
         incremental operation is not possible (for example, element sorting),
         internal buffers store the events until the operation can be performed.
         However, even in these cases performance can be increased with the use of
  -      tuned memory structures.</item>
  -    <item name="">
  -      <p><em>lowered memory consumption</em>: since most of the
  +      tuned memory structures.
  +    </li>
  +    <li>
  +      <strong>lowered memory consumption</strong>: since most of the
         server processing required in Cocoon is incremental, an incremental model
         allows XML production events to be transformed directly into output events
         and character written on streams, thus avoiding the need to store them in
  -      memory.</item>
  -    <item name="">
  -      <p><em>easier scalability</em>: reduce memory needs allow more
  +      memory.
  +    </li>
  +    <li>
  +      <strong>easier scalability</strong>: reduce memory needs allow more
         concurrent operation to be possible, thus allowing the publishing system
  -      to scale as the load increases.</item>
  -    <item name="">
  -      <p><em>more optimizable code model</em>: modern virtual
  +      to scale as the load increases.
  +    </li>
  +    <li>
  +      <strong>more optimizable code model</strong>: modern virtual
         machines are based on the idea of <em>hot spots</em>, code fragments that
         are used often and, if optimized, increase the process execution by far.
         This new event model allows easier detection of hot spots since it's a
         method driven operation, rather than a memory driven one. Hot methods can
  -      be identified earlier and their optimization performed better.</item>
  -    <item name="">
  -      <p><em>reduced garbage collection</em>: even the most advanced
  +      be identified earlier and their optimization performed better.
  +    </li>
  +    <li>
  +      <strong>reduced garbage collection</strong>: even the most advanced
         and lightweight DOM implementation require at least three to five times
         (and sometimes much more than this) more memory than original document
         size. This does not only reduce the scalability of the operation, but also
         impact overall performance by increasing the number of memory garbage that
         must be collected after the response in sent to the client. Even if modern
         virtual machines reduced the overhead of garbage collection, less garbage
  -      will always have performance and scalability impacts.</item>
  -  </list>
  +      will always have performance and scalability impacts.
  +    </li>
  +  </ul>
     
     <p>The above points, alone, would be enough for the Cocoon2
     paradigm shift, even if this event based model impacts not only the general
  @@ -102,9 +111,9 @@
     require substantial work and maybe design reconsideration to be able to follow
     a pure event-based model. The Cocoon Project will work closely with the other
     component projects to be able to influence their operation in this direction.</p>
  -</section>
  +</s1>
   
  -<section title="Reactors Reconsidered">
  +<s1 title="Reactors Reconsidered">
     <p>Another design choice that should be revised is the reactor
     pattern that was introduced to allow components to be connected in more
     flexible way. In fact, opposed to the fixed pipe model used up to Cocoon
  @@ -119,9 +128,9 @@
     
     <p>But even if the technical difficulties are solved, a key limitation
     remains: there is no single point of management.</p>
  -</section>
  +</s1>
   
  -<section title="Management Considerations">
  +<s1 title="Management Considerations">
     <p>The web was created to reduce information management costs by
     distributing them back on information owners. While this model is great for
     user communities (scientists, students, employees, or people in general) each
  @@ -153,38 +162,46 @@
     <p>The model that Cocoon2 adopts is the &quot;pyramid model of
     web contracts&quot; which is outlined in the picture below</p>
     
  -  <image src="images/pyramid-model.gif" title="The Cocoon2 Pyramid Model of Contracts">
  +  <p><img src="images/pyramid-model.gif" alt="The Cocoon2 Pyramid Model of Contracts"/></p>
     
     <p>and is composed by four different working contexts (the rectangles)</p>
     
  -  <list>
  -    <item name="Management">
  +  <dl>
  +    <dt>Management</dt>
  +    <dd>
         the people that decide what the site should
  -      contain, how it should behave and how it should appear</item>
  -    <item name="Conten">
  +      contain, how it should behave and how it should appear
  +    </dd>
  +    <dt>Content</dt>
  +    <dd>
         the people responsible to write, own and manage
         the site content. This context may contain several sub-contexts one
  -      for each language used to express page content.</item>
  -    <item name="Logi">
  +      for each language used to express page content.
  +    </dd>
  +    <dt>Logic</dt>
  +    <dd>
         the people responsible for integration with dynamic
  -      content generation technologies and database systems.</item>
  -    <item name="Style">
  +      content generation technologies and database systems.
  +    </dd>
  +    <dt>Style</dt>
  +    <dd>
         the people responsible for information
  -      presentation, look &amp; feel, site graphics and its maintenance.</item>
  -  </list>
  +      presentation, look &amp; feel, site graphics and its maintenance.
  +    </dd>
  +  </dl>
     
     <p>and five contracts contexts (the lines)</p>
     
  -  <list>
  -    <item>management - content</item>
  -    <item>management - logic</item>
  -    <item>management - style</item>
  -    <item>content - logic</item>
  -    <item>content - style</item>
  -  </list>
  -</section>
  +  <ul>
  +    <li>management - content</li>
  +    <li>management - logic</li>
  +    <li>management - style</li>
  +    <li>content - logic</li>
  +    <li>content - style</li>
  +  </ul>
  +</s1>
   
  -<section title="Overlapping contexts and Chain Mapping">
  +<s1 title="Overlapping contexts and Chain Mapping">
     <p>The above model can be applied only if the different contexts
     never overlap, otherwise there is no chance of having a single management
     point. For example, if the W3C-recommended method to link stylesheets to XML
  @@ -214,9 +231,9 @@
     into processors directly (XSLT stylesheet compilation) or compiled into
     producers using logicsheets and XSP which will remove totally the need for
     request-time interpretation solutions like DCP that will be removed.</p>
  -</section>
  +</s1>
   
  -<section title="Pre-compilation, Pre-generation and Caching">
  +<s1 title="Pre-compilation, Pre-generation and Caching">
     <p>The cache system in Cocoon1 will be ported with no important
     design changes since it's very flexible and was not polluted by early design
     constraints since it appeared in later versions. The issue regards static file
  @@ -242,14 +259,15 @@
     <p>Also, it will be possible to avoid on-fly page and stylesheet
     compilation (which make debugging harder) with command line pre-compilation
     hooks that will work like normal compilers from a developer's point of view.</p>
  -</section>
  +</s1>
   
  -<section title="Conclusions">
  +<s1 title="Conclusions">
     <p>Cocoon2 is a big and very ambitious project, not only for the
     technological issues involved (which will require strong integration with XML
     components) but also for the significant paradigm shifts imposed by the new
     technologies. On the other hand, we strongly believe this to be the winner
     model for future web engineering and if you believe in this yourself, we
     invite you to join us or help us in any way you can provide.</p>
  -</section>
  -</page>
  +</s1>
  +</body>
  +</document>
  
  
  
  1.2       +14 -9     xml-cocoon/docs/dcpprocessor.xml
  
  Index: dcpprocessor.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/dcpprocessor.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dcpprocessor.xml	1999/11/20 01:16:18	1.1
  +++ dcpprocessor.xml	1999/11/30 16:29:51	1.2
  @@ -1,13 +1,18 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="DCPProcessor User Guide">
  - <authors>
  -  <author name="Ricardo Rocha" email="ricardo@apache.org"/>
  - </authors>
  +<document>
  + <header>
  +  <title>DCPProcessor User Guide</title>
  +  <authors>
  +   <person name="Ricardo Rocha" email="ricardo@apache.org"/>
  +  </authors>
  + </header>
   
  - <section title="Introduction">
  -  <p>Yet to be XML-ized!</p>
  - </section>
  -</page>
  \ No newline at end of file
  + <body>
  +  <s1 title="Introduction">
  +   <p>Yet to be XML-ized!</p>
  +  </s1>
  + </body>
  +</document>
  \ No newline at end of file
  
  
  
  1.2       +67 -63    xml-cocoon/docs/dynamic.xml
  
  Index: dynamic.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/dynamic.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dynamic.xml	1999/11/20 01:16:19	1.1
  +++ dynamic.xml	1999/11/30 16:29:51	1.2
  @@ -1,21 +1,25 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Dynamic XML in Cocoon">
  - <linkuthors>
  -  <linkuthor name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  -
  -<section title="Introduction">
  +<document>
  + <header>
  +  <title>Dynamic XML in Cocoon</title>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
  + <body>
  + 
  +<s1 title="Introduction">
     <p>Web publishing is very limited without the ability to create
     dynamic content. For dynamic XML we refer to the content that is created as a
     function of request parameters or state of the requested resource. For this
     reason, a lot of work and design has been put into Cocoon to allow dynamic XML
     content to be generated.</p>
  -</section>
  +</s1>
   
  -<section title="The Servlet/JSP model">
  +<s1 title="The Servlet/JSP model">
     <p>People are used to write small Java programs to create their
     dynamic web content. Servlets, and Java in general, are very powerful, easy to
     write and fast to debug, but they impose (like any other pure-logic solution)
  @@ -36,9 +40,9 @@
     dynamic XML content would be the perfect choice, unfortunately design issues
     impose that we take a second look to the technology and understand why this
     isn't so.</p>
  -</section>
  +</s1>
   
  -<section title="Servlet Chaining Vs. Servlet Nesting">
  +<s1 title="Servlet Chaining Vs. Servlet Nesting">
     <p>Java Servlets were introduced by the Java Web Server team as a
     way to allow users to create their own <em>web plug-ins</em>. They were designed
     to handle the HTTP protocol and all possible dynamic web content (including
  @@ -57,9 +61,9 @@
     include a servlet output inside its own transparently. This allowed
     programmers to separate different logic on different servlets, thus removing
     the need for servlet chaining</p>
  -</section>
  +</s1>
   
  -<section title="The limitations of Servlet Nesting">
  +<s1 title="The limitations of Servlet Nesting">
     <p>While servlet nesting was a major advantage over servlet
     chaining because it allowed servlets to be somewhat modular without loosing
     the full API power, a common design pattern applies to the Servlet model in
  @@ -74,9 +78,9 @@
     
     <p>In a few words, the Servlet API doesn't support <em>Servlet
     Piping</em>.</p>
  -</section>
  +</s1>
   
  -<section title="The Cocoon model">
  +<s1 title="The Cocoon model">
     <p>Rather than turning Cocoon into a servlet engine, thus
     limiting its portability, this documents outlines some solutions that allow
     Cocoon users to get the servlet-equivalent functionality with internal Cocoon
  @@ -84,20 +88,20 @@
     
     <p>The Cocoon processing model is based on the separation of</p>
     
  -  <list>
  -    <item name="Production">where XML content is generated based on Request parameters (servlet equivalent)</item>
  -    <item name="Processing">where the produced XML content is transformed/evaluated</item>
  -    <item name="Formatting">where the XML content is finally formatted into the wanted output format for client use.</item>
  -  </list>
  +  <ul>
  +    <li><strong>Production</strong>where XML content is generated based on Request parameters (servlet equivalent)</li>
  +    <li><strong>Processing</strong>where the produced XML content is transformed/evaluated</li>
  +    <li><strong>Formatting</strong>where the XML content is finally formatted into the wanted output format for client use.</li>
  +  </ul>
     
     <p>This separation of working contexts allows Cocoon users to
     implement their own internal modules to add the functionality they require to
     the whole publishing system. In fact, while a few of these components are
     already shipped with Cocoon, the highly modular structure allows you to build
     your own to fit your particular needs.</p>
  -</section>
  +</s1>
   
  -<section title="Writing Producers">
  +<s1 title="Writing Producers">
     <p>Producers initiate the request handling phase. They are
     responsible to evaluate the HttpServletRequest parameters provided and create
     XML content that is fed into the processing reactor. A servlet logic should be
  @@ -108,16 +112,16 @@
     <p>Here follows the code for an example producer distributed with
     Cocoon:</p>
     
  -<source><![CDATA[
  +<source>
   public class DummyProducer extends AbstractProducer implements Status {
             
  -  String dummy = "<?xml version=\"1.0\"?>" 
  -      + "<?cocoon:format type=\"text/html\"?>"
  -      + "<html><body>"
  -      + "<h1 align=\"center\">"
  +  String dummy = "&lt;?xml version=\"1.0\"?&gt;" 
  +      + "&lt;?cocoon:format type=\"text/html\"?&gt;"
  +      + "&lt;html&gt;&lt;body&gt;"
  +      + "&lt;h1 align=\"center\"&gt;"
             + "Hello from a dummy page"
  -      + "</h1>"
  -      + "</body></html>";
  +      + "&lt;/h1&gt;"
  +      + "&lt;/body&gt;&lt;/html&gt;";
         
     public Reader getStream(HttpServletRequest request) throws IOException {
         return new StringReader(dummy);
  @@ -131,7 +135,7 @@
         return "Dummy Producer";
     }
   }
  -]]></source>
  +</source>
   
     <p>The key method is <code>getStream()</code> which is responsible to create
     process the given servlet request and provide an output stream for reading the
  @@ -142,11 +146,11 @@
     you servlet code Cocoon-aware, the above example should tell you what to do.</p>
     
     <p>Please, look at the shipped producers source code for example
  -  code and look at the <link href="guide.html">user guide</link> on how to install and
  +  code and look at the <connect href="guide.xml">user guide</connect> on how to install and
     use your own producers.</p>
  -</section>
  +</s1>
   
  -<section title="Writing Processors">
  +<s1 title="Writing Processors">
     <p>If your servlet needs many parameters to work, it is more
     reasonable that you write a Processor instead. A Processor transforms a given
     XML document (which, in this case should contain the needed static parameters)
  @@ -158,55 +162,55 @@
     it may have been produced from a file, from other sources or dynamically, see
     the above paragraph):</p>
     
  -<source><![CDATA[
  -<?xml version="1.0"?>
  -<page>
  - <p>Current time is <time/></p>
  -</page>
  -]]></source>
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;page&gt;
  + &lt;p&gt;Current time is &lt;time/&gt;&lt;/p&gt;
  +&lt;/page&gt;
  +</source>
     
     <p>Our simple example processor will look for the %lg;time/%gt; tags and will 
     expand them to the current local time, creating this result document:</p>
     
  -<source><![CDATA[
  -<?xml version="1.0"?>
  -<page>
  - <p>Current time is 6:48PM</p>
  -</page>
  -]]></source>
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;page&gt;
  + &lt;p&gt;Current time is 6:48PM&lt;/p&gt;
  +&lt;/page&gt;
  +</source>
               
     <p>Please, look at the shipped processors source code for example
  -  code and look at the <link href="guide.html">user guide</link> on how to install and
  +  code and look at the <connect href="guide.xml">user guide</connect> on how to install and
     use your own processors.</p>
  -</section>
  +</s1>
   
  -<section title="Using Cocoon processors">
  +<s1 title="Using Cocoon processors">
     <p>The above example shows a very simple situation but needs
     non-trivial code to implement it. For this reason, the Cocoon distribution
     includes a number of processors that implement common needs and situations.
     These are:</p>
     
  -  <list>
  -    <item name="The XSLT processor">
  +  <ul>
  +    <li><strong>The XSLT processor</strong>
         the <em>XSLT</em> processor that applies XSLT
         transformations to the input document. XSLT allows you to solve your
         transformation needs as well as simple tag evaluation/processing due to
  -      its extensible and programmable nature.</item>
  -    <item name="The DCP processor">
  +      its extensible and programmable nature.</li>
  +    <li><strong>The DCP processor</strong>
         the <em>DCP</em> processor that evaluates XML processing
         instructions with multi-language (Java and EcmaScript) logic. This
         processor allows you to do programmatic substitution and inclusion
  -      eliminating the need for complex processing logic. See the <link href="dcpprocessor.html">DCP
  -      user guide</link> for more information.</item>
  -    <item name="The SQL processor">
  +      eliminating the need for complex processing logic. See the <connect href="dcpprocessor.xml">DCP
  +      user guide</connect> for more information.</li>
  +    <li><strong>The SQL processor</strong>
         the <em>SQL</em> processor that evaluates simple tags
         describing SQL queries to JDBC drivers and formats their result-set in XML
  -      depending on given parameters. See the <link href="sqlprocessor.html">SQL
  -      processor user guide</link> for more information.</item>
  +      depending on given parameters. See the <connect href="sqlprocessor.html">SQL
  +      processor user guide</connect> for more information.</li>
     </ul>
  -</section>
  +</s1>
   
  -<section title="Future plans">
  +<s1 title="Future plans">
     <p>While the above represents a complete set of usable components
     for dynamic XML content generation, the Cocoon project aims to separate all
     three layers (content, logic and style). While XSLT transformations allow a
  @@ -214,9 +218,9 @@
     separation between content and logic in dynamically generated XML pages is not
     achieved with current Cocoon features.</p>
     
  -  <p>To fill this whole, the <link href="xsp/WD-xsp.html">XSP
  -  (eXtensible Server Pages) technology</link> was proposed. While in the <em>working
  +  <p>To fill this whole, the <connect href="xsp/WD-xsp.xml">XSP
  +  (eXtensible Server Pages) technology</connect> was proposed. While in the <em>working
     draft</em> stage, we strongly believe that some of the issues expressed in that
     specification will be keys to the future of dynamic XML.</p>
  -</section>
  -</page>
  +</s1>
  +</body></document>
  \ No newline at end of file
  
  
  
  1.2       +82 -98    xml-cocoon/docs/faq.xml
  
  Index: faq.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/faq.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- faq.xml	1999/11/20 01:16:22	1.1
  +++ faq.xml	1999/11/30 16:29:51	1.2
  @@ -1,127 +1,121 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE faq SYSTEM "./dtd/faq.dtd">
  +<!DOCTYPE faqs SYSTEM "../dtd/faq-v10.dtd">
   
   <faqs title="Cocoon Frequently Asked Questions">
   
   <faq>
  -<q>I don't find my question answered here, what do I do?</q>
  -<a author="Stefano">
  -  <p>First, checkout the Java Apache <a href="http://java.apache.org/faq/?file=54">FAQ-O-Matic</a>
  -  that contains a Cocoon section. You may find what you're looking for there. If
  -  not, you may consult the <a href="http://java.apache.org/main/mail.html#cocoon">mail
  -  list digests and archives</a> (we are aware of the problems regarding lack of
  -  searching capabilities in the mail list archive and, yes, we <i>are</i> trying
  -  to solve them). Then, if your problem is still unresolved, you should send a
  -  message describing your problem with very detailed information about your
  -  system, your status and your issues and asking for advice.</p>
  -  <p>Please, keep in mind that nobody gets paid to answer your questions and be
  -  respectful of the time others are investing to answer you. Also, please,
  -  respect individual privacy and time by submitting help requests only to the
  -  mail lists and not directly to developers or individuals.</p>
  -  <p>At the end, if you come up with a solution for your problem, please, don't
  -  throw away your effort, share it with us by directly adding it to the FAQ-O-Matic
  -  and post it to the mail list. Thanks.</p>
  -</answer>
  + <question>How do I pipe my servlet output into Cocoon?</question>
  + <answer>
  +  <p>Simple answer: <em>you don't!!!</em> read <connect href="dynamic.xml">this
  +  document</connect> instead to find out equivalent ways to do what you need.</p>
  +  <p>Complex answer: the Servlet API <em>was not</em> designed with servlet
  +  chaining capabilities in mind. Servlet chaining was a night hack of the
  +  original Java web server authors that allowed to pipe one servlet output
  +  into the request of another. Currently (version 2.2) the Servlet API spec
  +  doesn't allow a servlet to post-process the output of another servlet, so,
  +  since Cocoon is a servlet, there is no portable way for it to call
  +  your servlet and to process its output.</p>
  +  <p>The Cocoon Project is in close contact with the Servlet API Expert Group at
  +  Sun (being Stefano Mazzocchi a member of that board) and will propose 
  +  post-processing hooks for inclusion in the next Servlet API specifications. 
  +  Since this is work in progress, please, don't fill up the mail list with 
  +  questions about this: Cocoon will reflect the API changes as soon as they 
  +  are publicly available.</p>
  + </answer>
  +</faq>
   
  -<question>How do I pipe my servlet output into Cocoon?</strong></p>
  -<answer>
  -  <p>
  -    Simple answer: <em>you don't!!!</em> read <a href="dynamic.html">this</a>
  -    instead to find out equivalent ways to do what you need.<em><br>
  -    <br>
  -    </em>Complex answer: the Servlet API <em>was not</em> designed with servlet
  -    chaining capabilities in mind. Servlet chaining was a night hack of the
  -    original Java web server authors that allowed to pipe one servlet output
  -    into the request of another. Currently (version 2.2) the Servlet API spec
  -    doesn't allow a servlet to post-process the output of another servlet, so,
  -    since Cocoon is a servlet, there is no portable way for it&nbsp; to call
  -    your servlet and&nbsp; to process its output.<br>
  -    <br>
  -    The Cocoon Project is in close contact with the Servlet API Expert Group at
  -    Sun (being Stefano Mazzocchi a member of that board) and will try to include
  -    post-processing hooks in the next Servlet API specifications. Since this is
  -    work in progress, please, don't fill up the mail list with questions about
  -    this: Cocoon will reflect the API changes as soon as they are publicly
  -    available.</p>
  -</answer>
  -<strong>Where do I get more information on XSL and XML?</strong>
  -<answer>
  +<faq>
  + <question>"Where do I get more information on XSL and XML?"</question>
  + <answer>
     <p>
       The web community is very exited about XML and XSL and many sources of
       information are coming up even if these languages are fairly new. Here is a list of
       locations you might be interested in to continue to gather resources on this
       state-of-the-art technology</p>
     <ul>
  -    <li><a href="http://www.xml.org">http://www.xml.org</a> - A very nice site for XML
  +    <li><link href="http://www.xml.org">http://www.xml.org</link> - A very nice site for XML
         information.</li>
  -    <li><a href="http://www.w3.org/markup/xml/">http://www.w3.org/markup/xml/</a> - The XML
  +    <li><link href="http://www.w3.org/markup/xml/">http://www.w3.org/markup/xml/</link> - The XML
         official home page at W3C</li>
  -    <li><a href="http://www.w3.org/style/xsl">http://www.w3.org/style/xsl</a> - The XSL official
  +    <li><link href="http://www.w3.org/style/xsl">http://www.w3.org/style/xsl</link> - The XSL official
         home page W3C</li>
  -    <li><a href="http://www.software.ibm.com/xml/education/tutorial-prog/abstract.html">http://www.software.ibm.com/xml/education/tutorial-prog/abstract.html</a>
  +    <li><link href="http://www.software.ibm.com/xml/education/tutorial-prog/abstract.html">http://www.software.ibm.com/xml/education/tutorial-prog/abstract.html</link>
         - XML Tutorial from IBM</li>
  -    <li><a href="http://www.webtechniques.com/features/1999/01/walsh/walsh.shtml">http://www.webtechniques.com/features/1999/01/walsh/walsh.shtml</a>
  +    <li><link href="http://www.webtechniques.com/features/1999/01/walsh/walsh.shtml">http://www.webtechniques.com/features/1999/01/walsh/walsh.shtml</link>
         - XSL Tutorial</li>
  -    <li><a href="http://www.oasis-open.org/cover/xml.html">http://www.oasis-open.org/cover/xml.html</a>
  -      -&nbsp; XML Resource Listing</li>
  -    <li><a href="http://www.oasis-open.org/cover/xsl.html">http://www.oasis-open.org/cover/xsl.html</a>
  +    <li><link href="http://www.oasis-open.org/cover/xml.html">http://www.oasis-open.org/cover/xml.html</link>
  +      - XML Resource Listing</li>
  +    <li><link href="http://www.oasis-open.org/cover/xsl.html">http://www.oasis-open.org/cover/xsl.html</link>
         - XSL Resource Listing</li>
  -    <li><a href="http://www.xmlsoftware.com">http://www.xmlsoftware.com</a> -
  +    <li><link href="http://www.xmlsoftware.com">http://www.xmlsoftware.com</link> -
         XML software listing</li>
  -    <li><a href="http://www.xmlinfo.com">http://www.xmlinfo.com</a> - XML
  +    <li><link href="http://www.xmlinfo.com">http://www.xmlinfo.com</link> - XML
         information updates on W3C status and others</li>
  -    <li><a href="http://www.xslinfo.com">http://www.xslinfo.com</a> - XSL
  +    <li><link href="http://www.xslinfo.com">http://www.xslinfo.com</link> - XSL
         information, updates, example stylesheets</li>
  -    <li><a href="http://www.schema.net">http://www.schema.net</a> - Repository
  +    <li><link href="http://www.schema.net">http://www.schema.net</link> - Repository
         of standard DTDs</li>
     </ul>
   </answer>
  -<strong>The XSL book I found says the correct way of indicating the XSL stylesheet is by
  +</faq>
  +
  +<faq>
  + <question>The XSL book I read says the correct way of indicating the XSL stylesheet is by
       using the XML processing instruction <code>&lt;?xml:stylesheet?&gt;</code> while Cocoon is
  -    using <code>&lt;?xml-stylesheet?&gt;</code>. Who is right?</strong>
  -<answer>
  +    using <code>&lt;?xml-stylesheet?&gt;</code>. Who is right?
  + </question>
  + <answer>
     <p>The PI <code>&lt;?xml:stylesheet type=&quot;text/xsl&quot; href=&quot;&quot;?&gt;</code>
     is the old method of associating a stylesheet with an XML document. Unfortunately, this
     technology is rapidly changing and your books should warn you that the topic they are
     discussing is not even in W3C Recommendation state. Which means that more changes are on
  -  their way.<br>
  -  <br>
  -  The current and proper way to associate a stylesheet with an XML document can be found at <a
  -  href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</a> and
  +  their way.</p>
  +  <p>The current and proper way to associate a stylesheet with an XML document can be found at 
  +  <link href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</link> and
     clearly indicates that <code>&lt;?xml-stylesheet ...?&gt;</code> is the proper way.</p>
  -</answer>
  -<strong>I think that using Processing Instructions to &quot;chain&quot;
  + </answer>
  +</faq>
  +
  +<faq>
  + <question>
  +    I think that using Processing Instructions to &quot;chain&quot;
       document layers somehow violates the context separation since I would like
       to be able to place style sensible information in sessions or request
  -    parameters. What do you think about this?</strong>
  -<answer>
  +    parameters. What do you think about this?
  + </question>
  + <answer>
     <p>You are right, PI reaction breaks the context separation and it's, at the
       very end, the wrong approach. To follow a complete &quot;model, view,
       controller&quot; design pattern, one should be able to associate a different
       processing chain for each requested URI and for every possible request state
  -    (with request parameters, session parameters and environment parameters).<br>
  -    <br>
  -    The proposed solution (as you read in the <a href="cocoon2.html">Cocoon2
  -    outline</a>) is to have a regular expression based site map where site
  +    (with request parameters, session parameters and environment parameters).</p>
  +  <p>The proposed solution (as you read in the <connect href="cocoon2.xml">Cocoon2
  +    outline</connect>) is to have a regular expression based site map where site
       managers decide what processing chain to apply to each possible request.
       This somehow follows the mod_rewrite model in the Apache Web Server, but
       rather than URL rewriting, the site map allows site designers to control the
       behavior of their documents in one place without having to modify every
  -    single reactive PI in each source file.<br>
  -    <br>
  -    So, you've been warned: the PIs will go away, current functionality will
  +    single reactive PI in each source file.</p>
  +  <p>So, you've been warned: the PIs will go away, current functionality will
       remain but the processing management will be abstracted one layer up.</p>
   </answer>
  -<strong>What is WAP and I do I browse WML?</strong>
  +</faq>
  +
  +<faq>
  +<question>What is WAP and I do I browse WML?</question>
   <answer>
  -  <p>
  -    WAP stands for Wireless Application Protocol and WML stands for Wireless
  -    Markup Language. For more information about these two, please refer to the <a href="http://www.wapforum.org">WAP
  -    Forum</a>. For a client able to browse WML 1.1 look for the <a href="http://www.nokia.com">Nokia
  -    WAP Toolkit</a>.</p>
  +  <p>WAP stands for Wireless Application Protocol and WML stands for Wireless
  +    Markup Language. For more information about these two, please refer to the 
  +    <link href="http://www.wapforum.org">WAP Forum</link>. For a client able 
  +    to browse WML 1.1, Cocoon has been tested with the 
  +    <link href="http://www.nokia.com">Nokia WAP Toolkit</link> which
  +    emulates a Nokia WAP cell phone on your desktop.</p>
   </answer>
  -<strong>When I compile Cocoon on my system, I get all a bunch of errors. What's wrong?</strong>
  +</faq>
  +
  +<faq>
  +<question>When I compile Cocoon on my system, I get all a bunch of errors. What's wrong?</question>
   <answer>
     <p>You probably didn't add all the needed packages to your compiler's
       classpath or used the wrong version of the servlet classes (Cocoon is
  @@ -137,33 +131,23 @@
     only way to compile it is to manually indicate all the files to compile or to use the
     makefiles after removing the unwanted wrapper classes for the packages you don't have or
     you don't want.</p>
  -</answer>
  -  <p><em>External XML entities don't get included in my documents. What's wrong?</em></p>
  -<answer>
  -  <p>This is a well known bug in Cocoon. External entities don't work if not
  -  used in an absolute URL format, so you should either use an http:// or file://
  -  URL with absolution location.</p>
   </answer>
  -<p><em>My stylesheet doesn't sense the presence of my request parameters. How do
  -I pass them to it?</em></p>
  -<answer>
  -  <p>&nbsp;Another well known bug. Cocoon is not yet able to pass request
  -  parameters to the stylesheets. It will be fixed in future releases.</p>
  -</answer>
  -<strong>Why the name &quot;Cocoon&quot;?</strong>
  -<answer>
  -  <p>
  -  (Cocoon's creator Stefano Mazzocchi answers): It's a pretty stupid reason and a funny
  +</faq>
  +
  +<faq>
  + <question>Why the name &quot;Cocoon&quot;?</question>
  + <answer>
  +  <p> (Cocoon's creator Stefano Mazzocchi answers): It's a pretty stupid reason and a funny
     story: I spent my 1998 Xmas vacation with my girlfriend up on the Alps at her cottage. One
  -  night, I couldn't sleep and I woke up to watch some TV and finishing reading the XSL
  +  night I couldn't sleep, I went to watch some TV and finishing reading the XSL
     documentation I brought with me. Being a science fiction <em>afficionado</em>, I found out
     that Ron Howard's movie Cocoon was on and I started watching it. The idea of the XSL
     rendering servlet stoke me like the alien &quot;cocoons&quot; in the pool stroke those old men in the
     movie and, while watching, I started paper-coding it right away. After a while the movie
     was over and the publishing framework designed. The name &quot;Cocoon&quot; seemed right
     for the thing, meaning to be a way to bring new life to old ideas as well as to create <em>cocoons</em>
  -  for such new ideas to become beautiful butterflies. :-)<br>
  -  </p>
  +  for such new ideas to become beautiful butterflies. :-)</p>
   </answer>
  +</faq>
   
   </faqs>
  
  
  
  1.2       +172 -223  xml-cocoon/docs/guide.xml
  
  Index: guide.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/guide.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- guide.xml	1999/11/20 01:16:25	1.1
  +++ guide.xml	1999/11/30 16:29:51	1.2
  @@ -1,22 +1,27 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="User Guide">
  - <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  +<document>
  + <header>
  +  <title>User Guide</title>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
   
  -<section title="Introduction">
  + <body>
  +
  +<s1 title="Introduction">
     <p>This document assumes the knowledge of the W3C recommendation
     or working drafts used in Cocoon (mainly <link href="http://www.w3.org/TR/REC-xml">XML</link>,
     <link href="http://www.w3.org/TR/WD-xsl">XSL</link> in both its <link href="http://www.w3.org/TR/WD-xslt">transformation</link>
     and <link href="http://www.w3.org/TR/WD-xsl">formatting</link> capabilities). This
     document is not intended to be an XML or XSL tutorial but just shows how these
     technologies may be used inside the Cocoon framework to create web content.</p>
  -</section>
  +</s1>
   
  -<section title="General overview">
  +<s1 title="General overview">
     <p>Cocoon is a publishing system that allows you to separate web development in three different
     layers: content, style and logic.</p>
     
  @@ -35,24 +40,24 @@
   loves me (they now treat me like I walk on water), and a couple of summer 
   interns that I had helping me on the project are suddenly getting massively 
   head-hunted by companies like AT&amp;T now that they can put XML and XSL on 
  -their resumes.  In a word: Cocoon simply rocks!</pre>
  +their resumes.  In a word: Cocoon simply rocks!
   </source>
  -</section>
  +</s1>
   
  -<section title="Hello World">
  +<s1 title="Hello World">
     <p>Every good user guide starts with an <code>Hello World</code> example and since we hope to
     write good documentation (even if its hard like hell!), we start from there
     too. Here is a well-formed XML file that uses a custom and simple DTD</p>
     
  -<source><![[CDATA[
  -<?xml version="1.0"?>
  -<page>
  - <title>Hello World!</title>
  - <content>
  -  <paragraph>This is my first Cocoon page!</paragraph>
  - </content>
  -</page>
  -]]></source>
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;page&gt;
  + &lt;title&gt;Hello World!&lt;/title&gt;
  + &lt;content&gt;
  +  &lt;paragraph&gt;This is my first Cocoon page!&lt;/paragraph&gt;
  + &lt;/content&gt;
  +&lt;/page&gt;
  +</source>
     
     <p>Even if this page mimics HTML (in a sense, HTML was born as a simple DTD
     for homepages), it is helpful to note that there is no style information
  @@ -69,7 +74,7 @@
     follow a <link href="http://www.w3.org/TR/WD-xml-stylesheet">W3C recommendation</link>
     and add the XML processing instruction to map a stylesheet to a document:</p>
     
  -  <source><![CDATA[<ml-stylesheet href"hello.xsl" type="text/xsl">]]></source>
  +  <source>&lt;xml-stylesheet href"hello.xsl" type="text/xsl"&gt;</source>
     
     <p>Now that our content layer is done, we need to create a stylesheet to
     convert it to a format readable by our web clients. Since most available web
  @@ -81,11 +86,11 @@
     and define its own namespace accordingly to the W3C directions. So the
     skeleton of your stylesheet is:</p>
     
  -<source><![[CDATA[
  -<?xml version="1.0"?>
  -<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
  -</xsl:stylesheet>
  -]]></source>
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"&gt;
  +&lt;/xsl:stylesheet&gt;
  +</source>
   
     <p>Once the skeleton is done, you must include your <code>template</code> elements,
     which are the basic unit of operation for the XSLT language. Each template is
  @@ -98,18 +103,18 @@
     root element. This must be transformed in all those tags that identify a good
     HTML page. Your template becomes:</p>
     
  -<source><![[CDATA[
  -<xsl:template match="page">
  - <html>
  -  <head>
  -   <title><xsl:value-of select="title"/></title>
  -  </head>
  -  <body bgcolor="#ffffff">
  -   <xsl:apply-templates/>
  -  </body>
  - </html>
  -</xsl:template>
  -]]></source>
  +<source>
  +&lt;xsl:template match="page"&gt;
  + &lt;html&gt;
  +  &lt;head&gt;
  +   &lt;title&gt;&lt;xsl:value-of select="title"/&gt;&lt;/title&gt;
  +  &lt;/head&gt;
  +  &lt;body bgcolor="#ffffff"&gt;
  +   &lt;xsl:apply-templates/&gt;
  +  &lt;/body&gt;
  + &lt;/html&gt;
  +&lt;/xsl:template&gt;
  +</source>
                
     <p>were some elements belong to the standard namespace (which we associate to
     HTML) and some others to the <em>xsl:</em> namespace. Here we find two of those
  @@ -122,39 +127,39 @@
     
     <p>Other possible templates are:</p>
     
  -<source><![[CDATA[
  -<xsl:template match="title">
  - <h1 align="center">
  -  <xsl:apply-templates/>
  - </h1>
  -</xsl:template>
  -
  -<xsl:template match="paragraph">
  - <p align="center">
  -  <i><xsl:apply-templates/></i>
  - </p>
  -</xsl:template> 
  -]]></source> 
  +<source>
  +&lt;xsl:template match="title"&gt;
  + &lt;h1 align="center"&gt;
  +  &lt;xsl:apply-templates/&gt;
  + &lt;/h1&gt;
  +&lt;/xsl:template&gt;
  +
  +&lt;xsl:template match="paragraph"&gt;
  + &lt;p align="center"&gt;
  +  &lt;i&gt;&lt;xsl:apply-templates/&gt;&lt;/i&gt;
  + &lt;/p&gt;
  +&lt;/xsl:template&gt; 
  +</source> 
   
     <p>After the XSLT processing, the original document is transformed to</p>
   
  -<source><![[CDATA[
  -<html>
  - <head>
  -  <title>Hello</title>
  - </head>
  - <body bgcolor="#ffffff">
  -  <h1 align="center">Hello</h1>
  -  <p align="center">
  -   <i>This is my first Cocoon page!</i>
  -  </p>
  - </body>
  -</html>
  -]]></source>
  +<source>
  +&lt;html&gt;
  + &lt;head&gt;
  +  &lt;title&gt;Hello&lt;/title&gt;
  + &lt;/head&gt;
  + &lt;body bgcolor="#ffffff"&gt;
  +  &lt;h1 align="center"&gt;Hello&lt;/h1&gt;
  +  &lt;p align="center"&gt;
  +   &lt;i&gt;This is my first Cocoon page!&lt;/i&gt;
  +  &lt;/p&gt;
  + &lt;/body&gt;
  +&lt;/html&gt;
  +</source>
   
  -</section>
  +</s1>
   
  -<section title="Browser Dependent Styling">
  +<s1 title="Browser Dependent Styling">
     <p>When a document is processed by an XSLT processor, its output is exactly the same for every browser that requested
     the page. Sometimes it's very helpful to be able to discriminate the client
     capabilities and transform content layer into different views/formats. This is
  @@ -167,13 +172,13 @@
     be applied. This is done by indicating in the stylesheet linking PI the <em>media</em>
     type, for example, continuing with the HelloWorld.xml document, these PIs</p>
     
  -<source><![[CDATA[
  -<?xml version="1.0"?>
  -<?xml-stylesheet href="hello.xsl" type="text/xsl"?>
  -<?xml-stylesheet href="hello.text.xsl" type="text/xsl" media="lynx"?>
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;?xml-stylesheet href="hello.xsl" type="text/xsl"?&gt;
  +&lt;?xml-stylesheet href="hello.text.xsl" type="text/xsl" media="lynx"?&gt;
   
   ...
  -]]>
  +
   </source>
   
     <p>would tell Cocoon to apply the <code>hello.text.xsl</code> stylesheet if the Lynx browser
  @@ -185,70 +190,70 @@
     based on their <code>User-Agent</code> http header information.
     Cocoon is preconfigured to handle these browsers:</p>
     
  -  <list>
  -    <item name="explorer">any Microsoft Internet Explorer, searches for <em>MSIE</em> (before
  -      searching for Mozilla, since they include it too)</item>
  -    <item name="opera">the Opera browser (before searching for Mozilla, since
  -      they include it too)</item>
  -    <item name="lynx">the text-only Lynx browser</item>
  -    <item name="java">any Java code using standard URL classes</item>
  -    <item name="wap">the Nokia WAP Toolkit browser</item>
  -    <item name="netscape">any Netscape Navigator, searches for <em>Mozilla</em></item>
  -  </list>
  +  <ul>
  +    <li><strong>explorer</strong> any Microsoft Internet Explorer, searches for <em>MSIE</em> (before
  +      searching for Mozilla, since they include it too)</li>
  +    <li><strong>opera</strong> the Opera browser (before searching for Mozilla, since
  +      they include it too)</li>
  +    <li><strong>lynx</strong> the text-only Lynx browser</li>
  +    <li><strong>java</strong> any Java code using standard URL classes</li>
  +    <li><strong>wap</strong> the Nokia WAP Toolkit browser</li>
  +    <li><strong>netscape</strong> any Netscape Navigator, searches for <em>Mozilla</em></li>
  +  </ul>
     
     <p>but you can add your own by personalizing the <code>cocoon.properties</code> file
     modify the <code>browser</code> properties. For example</p>
     
  -<source><![[CDATA[
  +<source>
   browser.0=explorer=MSIE
   browser.1=opera=Opera
   browser.2=lynx=Lynx
   browser.3=java=Java
   browser.4=wap=Wapsody
   browser.5=netscape=Mozilla
  -]]></source>
  +</source>
       
     <p>indicates that Cocoon should look for the token <em>MSIE</em> inside the
     User-Agent HTTP request header first, then <em>Opera</em>
     and so on, until <em>Mozilla</em>. If you want to recognize different generations of the same browser you should
     do find the specific string you should look for and indicate the order of searching since
     more browsers may contain the same string.</p>
  -</section>
  +</s1>
   
  - <section title="Cocoon Internals">
  + <s1 title="Cocoon Internals">
     <p>The Cocoon publishing system has an engine based on the <em>reactor</em> design
     pattern which is described in the picture below:</p>
     
  -  <image src="images/schema.jpg" title="Cocoon Schema">
  +  <img-block alt="Cocoon Schema" src="images/schema.jpg"/>
     
     <p>Let's describe the components that appear on the schema:</p>
     
  -  <list>
  -   <item name="Request">wraps around the client's request and
  +  <ul>
  +   <li><strong>Request</strong> wraps around the client's request and
        contains all the information needed by the processing engine. The request
        must indicate what client generated the request, what URI is being
  -     requested and what producer should handle the request.</item>
  -   <item name="Producer"handles the requested URI and produces an
  +     requested and what producer should handle the request.</li>
  +   <li><strong>Producer</strong> handles the requested URI and produces an
        XML document. Since producers are pluggable, they work like subservlets
        for this framework, allowing users to define and implement their own
        producers. A producer is responsible of creating the XML document which is
        fed into the processing reactor. It's up to the producer implementation to
  -     define the function that produces the document from the request object.</item>
  -   <item name="Reactor">is responsible of evaluating what
  +     define the function that produces the document from the request object.</li>
  +   <li><strong>Reactor</strong> is responsible of evaluating what
        processor should work on the document by reacting on XML processing
        instructions. The reactor pattern is different from a processing pipeline
        since it allows the processing path to the dynamically configurable and it
        increases performance since only those required processors are called to
        handle the document. The reactor is also responsible to forward the
  -     document to the appropriate formatter.</item>
  -   <item name="Formatter">transforms the memory representation of
  +     document to the appropriate formatter.</li>
  +   <li><strong>Formatter</strong> transforms the memory representation of
        the XML document into a stream that may be interpreted by the requesting
        client. Depending on other processing instructions, the document leaves
        the reactor and gets formatted for its consumer. The output MIME type of
  -     the generated document depends on the formatter implementation.</item>
  -   <item name="Response">encapsulates the formatted document along
  -     with its properties (such as length, MIME type, etc..)</item>
  -   <item name="Loader">is responsible of loading the formatted
  +     the generated document depends on the formatter implementation.</li>
  +   <li><strong>Response</strong>encapsulates the formatted document along
  +     with its properties (such as length, MIME type, etc..)</li>
  +   <li><strong>Loader</strong> is responsible of loading the formatted
        document when this is executable code. This part is used for compiled
        server pages where the separation of content and logic is merged and
        compiled into a Producer. When the formatter output is executable code, it
  @@ -256,21 +261,21 @@
        as a document producer. This guarantees both performance improvement
        (since the producer are cached) as well as easier producer development,
        following the common compiled server pages model. [this part is not yet
  -     implemented]</item>
  -   </list>
  -  </section>
  +     implemented]</li>
  +   </ul>
  +  </s1>
     
  -<section title="Cocoon Processing Instructions">
  +<s1 title="Cocoon Processing Instructions">
     <p>The Cocoon reactor uses XML processing instructions to forward the document
     to the right processor or formatter. These processing instructions are:</p>
     
  -<source><![[CDATA[
  -<?cocoon-process type="xxx"?> for processing
  +<source>
  +&lt;?cocoon-process type="xxx"?&gt; for processing
   
         and
   
  -<?cocoon-format type="yyy"?> for formatting
  -]]></source>
  +&lt;?cocoon-format type="yyy"?&gt; for formatting
  +</source>
   
     <p>These PIs are used to indicate the processing and formatting path that the
     document should follow to be served. In the example above, we didn't use them
  @@ -278,17 +283,17 @@
     document should be processed by the XSLT processor. To do this, the HelloWorld.xml
     document should be modified like this:</p>
     
  -<source><![[CDATA[
  -<?xml version="1.0"?>
  -<?cocoon-process type="xslt"?>
  -<?xml-stylesheet href="hello.xsl" type="text/xsl"?>
  -<page>
  - <title>Hello World!</title>
  - <content>
  -  <paragraph>This is my first Cocoon page!</paragraph>
  - </content>
  -</page>
  -]]></source>  
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;?cocoon-process type="xslt"?&gt;
  +&lt;?xml-stylesheet href="hello.xsl" type="text/xsl"?&gt;
  +&lt;page&gt;
  + &lt;title&gt;Hello World!&lt;/title&gt;
  + &lt;content&gt;
  +  &lt;paragraph&gt;This is my first Cocoon page!&lt;/paragraph&gt;
  + &lt;/content&gt;
  +&lt;/page&gt;
  +</source>  
     
     <p>The other processing instruction is used to indicate what formatter should
     be used to transform the document tree into a suitable form for the requesting
  @@ -296,84 +301,32 @@
     DTD, the Cocoon PI indicates that this document should be formatted using the
     formatter associated to the <code>text/xslfo</code> document type.</p>
   
  -<source><![[CDATA[
  -<?xml version="1.0"?>
  -<?cocoon-format type="text/xslfo"?>
  -
  -<fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0">
  - <fo:layout-master-set>
  -  <fo:simple-page-master page-master-name="one" margin-left="100pt" margin-right="100pt">
  -   <fo:region-body margin-top="50pt" margin-bottom="50pt"/>
  -  </fo:simple-page-master>
  - </fo:layout-master-set>
  - 
  - <fo:page-sequence>
  -  <fo:sequence-specification>
  -   <fo:sequence-specifier-repeating page-master-first="one" page-master-repeating="one"/>
  -  </fo:sequence-specification>
  -  
  -  <fo:flow font-size="14pt" line-height="14pt">
  -   <fo:block>Welcome to Cocoon</fo:block>  
  -  </fo:flow>  
  - </fo:page-sequence> 
  -</fo:root>
  -]]></source>  
  +<source>
  +&lt;?xml version="1.0"?&gt;
  +&lt;?cocoon-format type="text/xslfo"?&gt;
  +
  +&lt;fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0"&gt;
  + &lt;fo:layout-master-set&gt;
  +  &lt;fo:simple-page-master page-master-name="one" margin-left="100pt" margin-right="100pt"&gt;
  +   &lt;fo:region-body margin-top="50pt" margin-bottom="50pt"/&gt;
  +  &lt;/fo:simple-page-master&gt;
  + &lt;/fo:layout-master-set&gt;
    
  -  <p>Cocoon comes with a number of processors and formatters which are
  -  configured as follows</p>
  -  
  -  <table>
  -   <row>
  -      <element>type</element>
  -      <element>class</element>
  -      <element></element>
  -   </row>
  -   <row>
  -      <element rowspan="3">Processors</element>
  -      <element><em>xslt</em></element>
  -      <element>org.apache.cocoon.processor.xslt.XSLPProcessor</element>
  -      <element>The XSLT Processor</element>
  -    </row>
  -    <row>
  -      <element><em>dcp</em></element>
  -      <element>org.apache.cocoon.processor.dcp.DCPProcessor</element>
  -      <element>The <link href="dcpprocessor.html">DCP</link> Processor</element>
  -    </row>
  -    <row>
  -      <element><em>sql</em></element>
  -      <element>org.apache.cocoon.processor.sql.SQLProcessor</element>
  -      <element>The <link href="sqlprocessor.html">SQL</link> Processor</element>
  -    </row>
  -    <row>
  -      <element rowspan="5">Formatters</element>
  -      <element><em>text/xml</em></element>
  -      <element>org.apache.cocoon.formatter.xml.OpenXMLXMLFormatter</element>
  -      <element>General XML Formatter</element>
  -    </row>
  -    <row>
  -      <element><em>text/html</em></element>
  -      <element>org.apache.cocoon.formatter.html.OpenXMLHTMLFormatter</element>
  -      <element>HTML 4.0 Formatter</element>
  -    </row>
  -    <row>
  -      <element><em>text/xhtml</em></element>
  -      <element>org.apache.cocoon.formatter.xhtml.OpenXMLXHTMLFormatter</element>
  -      <element>XHTML Formatter</element>
  -    </row>
  -    <row>
  -      <element><em>text/wml</em></element>
  -      <element>org.apache.cocoon.formatter.wml.OpenXMLWMLFormatter</element>
  -      <element>WML 1.1 Formatter</element>
  -    </row>
  -    <row>
  -      <element><em>text/xslfo</em></element>
  -      <element>org.apache.cocoon.formatter.pdf.FOPFormatter</element>
  -      <element>PDF Formatter</element>
  -    </row>
  -   </table>
  -</section>
  + &lt;fo:page-sequence&gt;
  +  &lt;fo:sequence-specification&gt;
  +   &lt;fo:sequence-specifier-repeating page-master-first="one" page-master-repeating="one"/&gt;
  +  &lt;/fo:sequence-specification&gt;
  +  
  +  &lt;fo:flow font-size="14pt" line-height="14pt"&gt;
  +   &lt;fo:block&gt;Welcome to Cocoon&lt;/fo:block&gt;  
  +  &lt;/fo:flow&gt;  
  + &lt;/fo:page-sequence&gt; 
  +&lt;/fo:root&gt;
  +</source>  
  +
  +</s1>
   
  -<section title="Cocoon Cache System">
  +<s1 title="Cocoon Cache System">
     <p>In a complex server environment like Cocoon, performance and
     memory usage are critical issues. Moreover, the processing requirement for
     both XML parsing, XSLT transformations, document processing and formatting are
  @@ -383,34 +336,29 @@
     
     <p>Its operation is simple but rather powerful:</p>
     
  -  <list>
  -   <item>when the request comes, the cache is searched.
  -    <list>
  -     <item>if the request is found;
  -      <list>
  -       <item>its <em>changeable</em> points are evaluated</item>
  -       <item>if all changeable points are unchanged
  -        <list>
  -         <item>the page is served directly from the cache</item>
  -        </list>
  -       </item>
  -       <item>if a single point has changed and requires reprocessing
  -        <list>
  -         <item>the page is invalidated and continues as if it wasn't found</item>
  -        </list>
  -       </item>
  -      </list>
  -     </item>
  -     <item>if the request is not found:
  -      <list>
  -       <item>the page is normally processed</item>
  -       <item>it's sent to the client</item>
  -       <item>it's stored into the cache</item>
  -      </list>
  -     </item>
  -    </list>
  -   </item>
  -  </list>
  +  <ul>
  +   <li>when the request comes, the cache is searched.</li>
  +   <ul>
  +    <li>if the request is found;</li>
  +    <ul>
  +     <li>its <em>changeable</em> points are evaluated</li>
  +     <li>if all changeable points are unchanged</li>
  +     <ul>
  +      <li>the page is served directly from the cache</li>
  +     </ul>
  +     <li>if a single point has changed and requires reprocessing</li>
  +     <ul>
  +      <li>the page is invalidated and continues as if it wasn't found</li>
  +     </ul>
  +    </ul>
  +    <li>if the request is not found:</li>
  +    <ul>
  +     <li>the page is normally processed</li>
  +     <li>it's sent to the client</li>
  +     <li>it's stored into the cache</li>
  +    </ul>
  +   </ul>
  +  </ul>
     
     <p>This special cache system is required since the page is
     processed with the help of many components which, independently, may change
  @@ -436,5 +384,6 @@
     processors which store their stylesheets in a pre-parsed form to speed up
     execution in those cases where the original file has changed, but the
     stylesheet has not (which is a rather frequent case).</p>
  -</section>
  -</page>
  +</s1>
  +</body>
  +</document>
  \ No newline at end of file
  
  
  
  1.2       +44 -35    xml-cocoon/docs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/index.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- index.xml	1999/11/20 01:16:26	1.1
  +++ index.xml	1999/11/30 16:29:51	1.2
  @@ -1,13 +1,20 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Cocoon">
  - <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  +<?xml-stylesheet href="./stylesheet/simple.document.html.xsl" type="text/xsl"?>
   
  - <section title="What is it?">
  +<document>
  + <header>
  +  <title>Cocoon</title>
  +  <subtitle>XML Publishing Framework</subtitle>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
  +
  + <body>
  + <s1 title="What is it?">	
     <p>
      Cocoon is a 100% pure Java publishing framework that relies on new W3C
      technologies (such as DOM, XML, and XSL) to provide web content.
  @@ -26,9 +33,9 @@
      Read the <link href="technologies.html">Introduction on Cocoon
      technologies</link> white paper to find out more on the subject.
     </p>
  - </section>
  + </s1>
    
  - <section title="What does it do?">
  + <s1 title="What does it do?">
     <p>
      Web content generation is mostly based on HTML, but HTML doesn't separate
      the information from its presentation, mixing formatting tags, descriptive tags and
  @@ -36,9 +43,9 @@
      allowing content, logic and style on different XML files and uses XSL transformation
      capabilities to merge them.
     </p>
  - </section>
  + </s1>
    
  - <section title="What does it change for me?">
  + <s1 title="What does it change for me?">
     <p>
      Even if the most common use of Cocoon is the automatic creation of HTML
      through the processing of statically or dynamically generated XML files, Cocoon is also
  @@ -60,26 +67,26 @@
     <p>
      To do this, the Cocoon model divides the development of web content in three
      separate levels:
  -   <list>
  -    <item name="XML creation">
  -     the XML file is created by the <em>content owners</em>. They do not
  +  </p>
  +  
  +  <dl>
  +    <dt>XML creation</dt>
  +    <dd>the XML file is created by the <em>content owners</em>. They do not
        require specific knowledge on how the XML content is further processed rather than the
        particular chosen DTD/namespace. This layer is always performed by humans directly
  -     through normal text editors or XML-aware tools/editors.
  -    </item>
  -    <item name="XML processing">
  -     the requested XML file is processed and the logic contained in its 
  +     through normal text editors or XML-aware tools/editors.</dd>
  +    <dt>XML processing</dt>
  +    <dd>the requested XML file is processed and the logic contained in its 
        logicsheet is applied. Unlike other dynamic content generators, the logic
  -     is separated from the content file.
  -    </item>
  -    <item name="XSL rendering">the created document is then rendered by applying an XSL
  -     stylesheet to it and formatting it to the specified resource type (HTML, PDF, XML, WML, XHTML)
  -    </item>
  -   </list>
  -  </p>
  - </section>
  +     is separated from the content file.</dd>
  +    <dt>XSL rendering</dt>
  +    <dd>the created document is then rendered by applying an XSL
  +     stylesheet to it and formatting it to the specified resource type 
  +     (HTML, PDF, XML, WML, XHTML)</dd>
  +  </dl>
  + </s1>
   
  - <section title="Are there any known problems?">
  + <s1 title="Are there any known problems?">
     <p>
      The biggest known problem in this framework is the lack of XML/XSL
      knowledge, being relatively new formats. We do believe, though, that this publishing
  @@ -112,7 +119,7 @@
      sites. In fact, the Cocoon projects aims to gather as much information as
      possible during it's first generation while its second generation, starting
      from Cocoon 2.0, will aim to be a usable and real-life publishing framework.
  -   See the <link href="cocoon2.html">Cocoon 2 outline</link> to understand the 
  +   See the <connect href="cocoon2.xml">Cocoon 2 outline</connect> to understand the 
      design plans already established.
     </p>
     <p>
  @@ -122,16 +129,16 @@
      web browsers since the XSL rendering would be then
      performed on client side reducing the server work.
     </p>
  - </section>
  + </s1>
   
  - <section title="Where do I get it?">
  + <s1 title="Where do I get it?">
     <p>
  -   Go to the <link href="http://java.apache.org/cocoon/dist/">download area</link>
  +   Go to the <link href="http://xml.apache.org/dist/">download area</link>
      and be sure you read the release note in that page.
     </p>
  - </section>
  + </s1>
    
  - <section title="How do I Contribute?">
  + <s1 title="How do I Contribute?">
     <p>
      The Cocoon Project is an open volunteer project based on the spirit of the 
      <link href="http://www.apache.org">Apache Software Foundation</link> (ASF). 
  @@ -147,7 +154,7 @@
      (follow the link for information on how to subscribe and to access the mail 
      list archives), to checkout the <link href="http://www.apache.com/cvsweb/index.cgi/cocoon/">
      latest and greatest code</link> (which you found in the xml-cocoon module in 
  -   the xml.apache.org CVS code repository), control the <link href="todo.html">todo</link>
  +   the xml.apache.org CVS code repository), control the <connect href="../todo.xml">todo</connect>
      list and jump in. Document writers are usually the most wanted people so if
      you like to help but you're not familiar with technical details, don't worry
      we have work for you.
  @@ -172,5 +179,7 @@
     <p>
      Thank you very much.
     </p>
  - </section>
  -</page>
  +  <img-block src="images/cocoon-small.jpg" alt="Powered by Cocoon"/>
  + </s1>
  + </body>
  +</document>
  
  
  
  1.2       +51 -48    xml-cocoon/docs/installing.xml
  
  Index: installing.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/installing.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- installing.xml	1999/11/20 01:16:28	1.1
  +++ installing.xml	1999/11/30 16:29:51	1.2
  @@ -1,36 +1,39 @@
  -<?xml version="1.0" encoding="utf-8"?>
  +<?xml version="1.0" encoding="UTF-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Installing Cocoon">
  -
  - <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  +<document>
  + <header>
  +  <title>Installing Cocoon</title>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
    
  - <section title="System Requirements">
  + <body>
  + <s1 title="System Requirements">
     <p>
      Cocoon requires the following systems to be already installed in your
      system:
     </p>
     
  -  <list>
  -   <item name="Java Virtual Machine">
  +  <ul>
  +   <li><strong>Java Virtual Machine</strong>
       A Java 1.1 or greater compatible virtual machine must be present for both
       command line and servlet type usage of Cocoon. Note that all servlet engines
       require a JVM to run so if you are already using servlets you already have
       one installed.
  -   </item>
  -   <item name="Servlet Engine">
  +   </li>
  +   <li><strong>Servlet Engine</strong>
       A Servlet 2.x compliant servlet engine  must be present in order to support 
       servlet operation and dynamic request handling. Note that this requirement
       is optional for command line operation.
  -   </item>
  -  </list>
  +   </li>
  +  </ul>
      
  - </section>
  + </s1>
    
  - <section title="Required Components">
  + <s1 title="Required Components">
     <p>
      Cocoon is a publishing framework and was designed to be highly modular to
      allow users to choose their preferred implementation for the required
  @@ -61,9 +64,9 @@
      engine.
     </p>
    
  - </section>
  + </s1>
     
  - <section title="Installing Cocoon">
  + <s1 title="Installing Cocoon">
     <p>
      Being Cocoon a servlet, you should be able to install it on every compliant
      servlet engine by associating the "org.apache.cocoon.Cocoon" servlet
  @@ -72,7 +75,7 @@
      servlet systems.
     </p>
     
  -  <section title="Installing Cocoon on Apache JServ">
  +  <s2 title="Installing Cocoon on Apache JServ">
      <p>
       Apache JServ has one configuration file for the whole engine (normally called
       <code>jserv.properties</code>) and one for each servlet zone. Please, refer
  @@ -146,50 +149,51 @@
       where <em>.xml</em> is the file extention you want to map to the servlet
       and <em>/servlet/</em> is the mount point of your servlet zone (and the
       above is the standard name for servlet mapping for Apache JServ).
  -   </p>>
  +   </p>
        
      <p>
       Everything should be configured fine. Restart both Apache and Apache JServ
       and try accessing the samples contained in the distribution to see
       Cocoon in action.
      </p>
  -  </section>
  +  </s2>
     
  -  <section title="Installing Cocoon on Apache Tomcat">
  +  <s2 title="Installing Cocoon on Apache Tomcat">
      <p>Yet to be written! <em>Volunteers welcome!</em></p>
  -  </section>
  +  </s2>
     
  -  <section title="Installing Cocoon on Allaire JRun">
  +  <s2 title="Installing Cocoon on Allaire JRun">
      <p>Yet to be written! <em>Volunteers welcome!</em></p>
  -  </section>
  +  </s2>
     
  -  <section title="Installing Cocoon on NewAtlanta ServletExec">
  +  <s2 title="Installing Cocoon on NewAtlanta ServletExec">
      <p>Yet to be written! <em>Volunteers welcome!</em></p>
  -  </section>  
  +  </s2>  
   
  - </section>
  + </s1>
    
  - <section title="Working Systems">
  + <s1 title="Working Systems">
     <p>
      Cocoon has been reported to be working on these systems:
     </p>
     
  -  <list>
  -    <item>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.8</item>
  -    <item>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.8</item>
  -    <item>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + Blackdown JDK 1.2pre2</item>    
  -    <item>RedHat Linux 6.1 + Apache 1.3.9 + JRun 2.3.3 + IBM JRE 1.1.8</item>
  -    <item>Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.7</item>
  -    <item>Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.7</item>
  -    <item>Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + Sun JDK 1.2.2</item>
  -    <item>Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.2.2</item>
  -    <item>Windows 98 + MS Personal Web Server + ServletExec 2.2 + Sun JDK 1.2.1</item>
  -    <item>Windows NT 4.0 + IIS 4.0 + ServletExec 2.2 + Sun JDK 1.2.1</item>
  -    <item>Windows NT 4.0 + IIS 4.0 + JRun 2.3.3 + Sun JDK 1.2.1</item>
  -    <item>MacOS 8.6 + WebSTAR 4.0 + JRun 2.3 + MrJ 2.1.4</item>
  -    <item>MacOS 8.6 + WebSTAR 4.0 + ServletExec 2.1 + Mrj 2.1.4</item>
  -    <item>SunOS Netria 5.6 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.1.7</item>
  -  </list>
  +  <ul>
  +    <li>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.8</li>
  +    <li>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.8</li>
  +    <li>RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + Blackdown JDK 1.2pre2</li>    
  +    <li>RedHat Linux 6.1 + Apache 1.3.9 + JRun 2.3.3 + IBM JRE 1.1.8</li>
  +    <li>Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.7</li>
  +    <li>Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.7</li>
  +    <li>Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + Sun JDK 1.2.2</li>
  +    <li>Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.2.2</li>
  +    <li>Windows 98 + MS Personal Web Server + ServletExec 2.2 + Sun JDK 1.2.1</li>
  +    <li>Windows NT 4.0 + IIS 4.0 + ServletExec 2.2 + Sun JDK 1.2.1</li>
  +    <li>Windows NT 4.0 + IIS 4.0 + JRun 2.3.3 + Sun JDK 1.2.1</li>
  +    <li>MacOS 8.6 + WebSTAR 4.0 + JRun 2.3 + MrJ 2.1.4</li>
  +    <li>MacOS 8.6 + WebSTAR 4.0 + ServletExec 2.1 + Mrj 2.1.4</li>
  +    <li>SunOS Netria 5.6 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.1.7</li>
  +    <li>SCO OpenServer 5 + WebLogic 4.5.1 + SCO JDK 1.1.7A</li>
  +  </ul>
     
     <p>
      <em>Note:</em> due to a bug in <link href="http://www.blackdown.org">Blackdown
  @@ -201,6 +205,5 @@
      Please, submit your feedback if you were able to install Cocoon on a
      different combination not listed above. Thanks.
     </p>
  - </section>
  -</page>
  -
  + </s1>
  +</body></document>
  \ No newline at end of file
  
  
  
  1.2       +13 -9     xml-cocoon/docs/license.xml
  
  Index: license.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/license.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- license.xml	1999/11/20 01:16:29	1.1
  +++ license.xml	1999/11/30 16:29:51	1.2
  @@ -1,14 +1,17 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Installing Cocoon">
  +<document>
  + <header>
  +  <title>Cocoon Public License</title>
  +  <authors>
  +   <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  </authors>
  + </header>
   
  - <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  - </authors>
  - 
  -<section title="Cocoon Public License">
  +<body>
  +<s1 title="Cocoon Public License">
   <source><![CDATA[
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -58,5 +61,6 @@
    Software Foundation, please see <http://www.apache.org/>.
   
   ]]></source>
  -</section>
  -</page>
  \ No newline at end of file
  +</s1>
  +</body>
  +</document>
  \ No newline at end of file
  
  
  
  1.2       +14 -9     xml-cocoon/docs/sqlprocessor.xml
  
  Index: sqlprocessor.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/sqlprocessor.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sqlprocessor.xml	1999/11/20 01:16:32	1.1
  +++ sqlprocessor.xml	1999/11/30 16:29:51	1.2
  @@ -1,13 +1,18 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="SQLProcessor User Guide">
  - <authors>
  -  <author name="Donald A. Ball Jr." email="balld@webslingerz.com"/>
  - </authors>
  +<document>
  + <header>
  +  <title>SQLProcessor User Guide</title>
  +  <authors>
  +   <person name="Donald A. Ball Jr." email="balld@apache.org"/>
  +  </authors>
  + </header>
   
  - <section title="Introduction">
  -  <p>Yet to be XML-ized!</p>
  - </section>
  -</page>
  \ No newline at end of file
  + <body>
  +  <s1 title="Introduction">
  +   <p>Yet to be XML-ized!</p>
  +  </s1>
  + </body>
  +</document>
  \ No newline at end of file
  
  
  
  1.2       +104 -100  xml-cocoon/docs/technologies.xml
  
  Index: technologies.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/docs/technologies.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- technologies.xml	1999/11/20 01:16:40	1.1
  +++ technologies.xml	1999/11/30 16:29:51	1.2
  @@ -1,24 +1,28 @@
   <?xml version="1.0" encoding="utf-8"?>
   
  -<!DOCTYPE page SYSTEM "./dtd/page.dtd">
  +<!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
   
  -<page title="Introduction on Cocoon Technologies">
  -
  +<document>
  + <header>
  + <title>Introduction on Cocoon Technologies</title>
    <authors>
  -  <author name="Stefano Mazzocchi" email="stefano@apache.org"/>
  -  <author name="Keith Visco" email="visco@exoffice.com"/>
  +  <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
  +  <person name="Keith Visco" email="visco@exoffice.com"/>
    </authors>
  + </header>
    
  - <section title="Introduction">
  + <body>
  +
  +<s1 title="Introduction">
   
   <p>Many people do not seem to understand the global picture about the
   technologies used by Cocoon, I will try to explain my vision of these
   technologies as well as some information that might be useful to you to jump in,
   help with its development or show your boss how much money he can save.</p>
   
  - </section>
  + </s1>
   
  -<section title="What is this XML?">
  +<s1 title="What is this XML?">
   
     <p>XML (<link href="http://www.w3.org/markup/">eXtended Markup Language</link>) is an SGML subset. SGML is the father of all
     markup languages and its a 15-years old ISO standard for creating languages.
  @@ -28,8 +32,8 @@
     Exactly like ASCII that defines a standard way to map characters to bytes and
     not a bunch of character strings.</p>
   
  -<p>XML is usually referred to as &quot;portable data&quot; in the sense that its
  -parsing is &quot;application independent&quot; and one XML parser can read every
  +<p>XML is usually referred to as <em>portable data</em> in the sense that its
  +parsing is <em>application independent</em> and one XML parser can read every
   possible XML document, one describing your bank account, another describing your
   favorite Italian meal, etc. This is, as you all know, impossible with other file
   formats which are text based or binary. Some sort of equivalent in the old days
  @@ -41,15 +45,15 @@
   <p>A particular XML language is defined by its Document Type Definition (DTD)
   which is described inside the XML specification. An XML document may be
   validated against a DTD (if present) and if the validation is successful the
  -document is said &quot;valid XML based on the particular DTD&quot;, if a DTD is
  +document is said <em>valid XML based on the particular DTD</em>, if a DTD is
   not present and the parser does not encounter syntax errors parsing the file,
  -the XML document is said &quot;well-formed&quot;. If errors are found, the
  +the XML document is said <em>well-formed</em>. If errors are found, the
   document is not XML compliant.</p>
   
   <p>So, any valid XML document is <em>well-formed</em> and an XML document <em>valid
   </em>for one particular DTD may not necessary be valid for another DTD.
  -For example, HTML is not an XML language because the <code>&lt;br&gt;</code> tag
  -is not XML compliant. XHTML (where <code>&lt;br&gt;</code> is replaced by <code>&lt;br/&gt;</code>)
  +For example, HTML is not an XML language because the <code>&lt;br&gt;&gt;</code> tag
  +is not XML compliant. XHTML (where <code>&lt;br&gt;&gt;</code> is replaced by <code>&lt;br/&gt;&gt;</code>)
   is XML compliant. While HTML pages are not always XML documents (some pages
   might be), XHTML pages are always well-formed and valid if matched against the
   XHTML DTD.</p>
  @@ -57,34 +61,34 @@
     <p>So far for the technical differences, but why HTML was not good enough?
     Let's make an example.</p>
   
  -</section>
  +</s1>
   
  -<section title="XML shows its power">
  +<s1 title="XML shows its power">
     <p>Consider why the need for XML came about:</p>
  -  <list>
  -    <item>Everyone starts pubitemshing HTML documents on the web.</item>
  -    <item>Search engines spring up across the net to help find documents.</item>
  -    <item>Search engines have a difficult time searching specific pieces of a
  +  <ul>
  +    <li>Everyone starts pubitemshing HTML documents on the web.</li>
  +    <li>Search engines spring up across the net to help find documents.</li>
  +    <li>Search engines have a difficult time searching specific pieces of a
         document since HTML was designed to hierarchically represent how data
  -      should be presented, but not what the data being presented is.</item>
  -    <item>Web appitemcations spring up across the net to provide information and
  -      &quot;services&quot;.</item>
  -  </list>
  +      should be presented, but not what the data being presented is.</li>
  +    <li>Web appitemcations spring up across the net to provide information and
  +      <em>services</em>.</li>
  +  </ul>
     <p>These services could be web pages that serve up important information about
     an organization or the structure of the organization. They could be weather
     information, or travel advisories. They could be contact information for
     people. Stock quotes. It could a book on how to grow the perfect Tomato.</p>
     <p>So now we have all this information. Tons of it. Great! Now go and search
     all these web pages for specific content, like Author or Subject. Find me all
  -  abstracts of any documents published that have a subject of &quot;Big Tomatoes&quot;,
  +  abstracts of any documents published that have a subject of <em>Big Tomatoes</em>,
     since I only want to view abstracts to find out which document is best for me.
     An HTML page is not designed for this. It was designed for <em>how to present</em>
     the data.</p>
     <p>When I look at a web page I might see that an author choose to make every
  -  paragraph heading bold with <code>&lt;font size+1&gt;</code>. Yet if I look at
  -  another page I might notice that every paragraph heading was marked up with <code>&lt;H1&gt;</code>.
  +  paragraph heading bold with <code>&lt;font size+1&gt;&gt;</code>. Yet if I look at
  +  another page I might notice that every paragraph heading was marked up with <code>&lt;H1&gt;&gt;</code>.
     Yet another page may use tables and table headers to format the data. Find me
  -  every document that has the word &quot;potato&quot; in the paragraph heading
  +  every document that has the word <em>potato</em> in the paragraph heading
     of the first paragraph.</p>
     <p>Suppose I have a weather web-based application that servers up weather
     information for different parts of the country. Let's say you live in Boston,
  @@ -112,74 +116,74 @@
     weather information. And another link that says XML stream for weather
     information available. Yikes, would you look at that:</p>
     
  -  <source><![CDATA[
  -   <weather-information>
  -    <location>
  -     <city>Boston</city>
  -     <state>MA</state>
  -    </location>
  -    <summary>
  +  <source>
  +   &lt;weather-information&gt;
  +    &lt;location&gt;
  +     &lt;city&gt;Boston&lt;/city&gt;
  +     &lt;state&gt;MA&lt;/state&gt;
  +    &lt;/location&gt;
  +    &lt;summary&gt;
        Beautiful and Sunny, lows 50, highs 65, with the
        chance of a blizzard and gail force winds.
  -    </summary>
  -   </weather-information>
  -  ]]></source>
  +    &lt;/summary&gt;
  +   &lt;/weather-information&gt;
  +  </source>
             
     <p>So you download Cocoon, simply write an XSL stylesheet that looks the the following:</p>
     
  -  <source><![CDATA[
  -   <xsl:stylesheet>
  -    <xsl:template match="/">
  +  <source>
  +   &lt;xsl:stylesheet&gt;
  +    &lt;xsl:template match="/"&gt;
        ... presentation info here ...
  -    </xsl:template>
  -    <xsl:tempate match="weather-information[location/city = 'Boston']">
  -     <xsl:apply-templates select="summary"/>
  -    </xsl:template>
  -   </xsl:stylesheet>  
  -  ]]></source>
  +    &lt;/xsl:template&gt;
  +    &lt;xsl:tempate match="weather-information[location/city = 'Boston']"&gt;
  +     &lt;xsl:apply-templates select="summary"/&gt;
  +    &lt;/xsl:template&gt;
  +   &lt;/xsl:stylesheet&gt;  
  +  </source>
     
     <p>And your boss gives you your job back! ;-)</p>
  - </section>
  + </s1>
   
  -<section title="The HTML Model">
  +<s1 title="The HTML Model">
   
   <p>As the above example explains very well, HTML is a language for describing
   graphics, behavior and hyperlinks on web pages. HTML is NOT able to <em>contextualize</em>
  -(means &quot;give meaning to some text&quot;) in the sense that if you look for
  -the &quot;title&quot; of your page, a nice HTML tag gives you that, but if you
  +(means <em>give meaning to some text</em>) in the sense that if you look for
  +the <em>title</em> of your page, a nice HTML tag gives you that, but if you
   look at the author or version or something more specific like the author mail
   address, even if this information is present in the text you don't have a way to
  -&quot;isolate&quot; this (contextualize it) from the surrounding information.</p>
  +<em>isolate</em> this (contextualize it) from the surrounding information.</p>
   
   <p>In some HTML like this</p>
   
  -<source><![CDATA[
  -  <html>
  -   <head>
  -    <title>This is my article</title>
  -   </head>
  -   <body>
  -    <h1 align="center">This is my article</h1>
  -    <h3 align="center>by <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a></h3>
  +<source>
  +  &lt;html&gt;
  +   &lt;head&gt;
  +    &lt;title&gt;This is my article&lt;/title&gt;
  +   &lt;/head&gt;
  +   &lt;body&gt;
  +    &lt;h1 align="center"&gt;This is my article&lt;/h1&gt;
  +    &lt;h3 align="center&gt;by &lt;a href="mailto:stefano@apache.org"&gt;Stefano Mazzocchi&lt;/a&gt;&lt;/h3&gt;
       ...
  -   </body>
  -  </html> 
  -]]></source>
  +   &lt;/body&gt;
  +  &lt;/html&gt; 
  +</source>
   
   <p>you don't have a guaranteed way to extract the mail address, while in the
   following XML document</p>
   
  -<source><![CDATA[
  - <?xml version="1.0"?>
  -  <page>
  -   <title>This is my article</title>
  -   <author>
  -    <name>Stefano Mazzocchi</name>
  -    <mail>stefano@apache.org</mail>
  -   </author>
  +<source>
  + &lt;?xml version="1.0"?&gt;
  +  &lt;page&gt;
  +   &lt;title&gt;This is my article&lt;/title&gt;
  +   &lt;author&gt;
  +    &lt;name&gt;Stefano Mazzocchi&lt;/name&gt;
  +    &lt;mail&gt;stefano@apache.org&lt;/mail&gt;
  +   &lt;/author&gt;
      ...
  -  </page>
  -]]></source> 
  +  &lt;/page&gt;
  +</source> 
   
   <p>it's trivial and algorithmically certain.</p>
   
  @@ -189,9 +193,9 @@
   complex dynamic information systems, but only to parallelize and simplify the
   deployment and management of personal information.</p>
   
  -</section>
  +</s1>
   
  -<section title="The XSL Language">
  +<s1 title="The XSL Language">
   
   <p>As you see, XML alone is useless without some defined semantics: even if an
   application is able to parse a document in memory, it must be able to <em>understand</em>
  @@ -204,17 +208,17 @@
   XML DTDs that define a particular XML syntax. So every XSL and XSLT document is
   a well-formed XML document.</p>
   
  -</section>
  +</s1>
   
  -<section title="XSL Transformations (XSLT)">
  +<s1 title="XSL Transformations (XSLT)">
   
   <p>XSLT is a language for transforming one well-formed XML document into
   something else. This means that you may use it to go from one DTD to another in an procedural way
   that is defined inside your XSLT document. Even if the name tells the opposite,
   this language can be used for document styling as well as for many other useful
   transformations: in fact, transformations may be applied to one particular XML
  -DTD and come up with some &quot;graphical description&quot; of the original
  -content. This is called &quot;styling&quot;, but, as you can see, this is just
  +DTD and come up with some <em>graphical description</em> of the original
  +content. This is called <em>styling</em>, but, as you can see, this is just
   one of the possible uses of the technology.</p>
   
   <p>For example, the above HTML example may be created from the second XML file
  @@ -227,47 +231,47 @@
   reason may be used in chain: transformA goes from DTD1 to DTD2 and transformB
   from DTD2 to DTD3 or graphically</p>
   
  -<source>DTD1 ---(transformA)--&gt; DTD2 ---(transformB)---&gt; DTD3</source>
  +<source>DTD1 ---(transformA)--&gt;&gt; DTD2 ---(transformB)---&gt;&gt; DTD3</source>
   
   <p>We'll call DTD1 the <em>original DTD</em> (because its the origin), DTD2 some <em>intermediate
   DTD</em>, DTD3 the <em>final DTD</em>. It can be shown that a transformation can
   always be created to go directly from DTD1 to DTD3, but this might be more
   complicated and less human readable/manageable.</p>
   
  -</section>
  +</s1>
   
  -<section title="XSL Formatting Objects (XSL:FO)">
  +<s1 title="XSL Formatting Objects (XSL:FO)">
   
   <p>XSLFO is a language (an XML DTD) for describing 2D graphics of text in both
   printed and digital media. I will not concentrate on the graphical abilities
   that formatting objects gives you, but rather on the fact that it is most of the
  -time used as a &quot;final DTD&quot;, meaning that a transformation is used to
  +time used as a <em>final DTD</em>, meaning that a transformation is used to
   generate a formatting object description of a document starting from a general
   XML file.</p>
   
   <p>The example above would lead:</p>
   
  -<source><![CDATA[
  - <?xml version="1.0"?>
  -  <fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0">
  +<source>
  + &lt;?xml version="1.0"?&gt;
  +  &lt;fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0"&gt;
       ...
  -    <fo:flow font-size="14pt" line-height="14pt">
  -     <fo:block text-align="centered" font-size="24pt" line-height="28pt">This is my article</fo:block>
  -     <fo:block space-before.optimum="12pt" text-align="centered">by Stefano Mazzocchi</fo:block>
  -    </fo:flow>
  -  </fo:root>
  -]]></source> 
  +    &lt;fo:flow font-size="14pt" line-height="14pt"&gt;
  +     &lt;fo:block text-align="centered" font-size="24pt" line-height="28pt"&gt;This is my article&lt;/fo:block&gt;
  +     &lt;fo:block space-before.optimum="12pt" text-align="centered"&gt;by Stefano Mazzocchi&lt;/fo:block&gt;
  +    &lt;/fo:flow&gt;
  +  &lt;/fo:root&gt;
  +</source> 
   
     <p>which tells the formatting object formatter (the rendering engine), how to
  -  &quot;draw&quot; and place the text on the screen or on paper. Formatting
  +  <em>draw</em> and place the text on the screen or on paper. Formatting
     objects and transformations are created by the same working group and show
     very high synergies even if the XSLT specification also includes way to create
     HTML and text out of XML files as well.</p>
   
  -</section>
  +</s1>
   
   
  -<section title="The XSP Language">
  +<s1 title="The XSP Language">
   
     <p>The Cocoon publishing model is heavily based on the XSLT transformation
     capabilities that allow complete separation of content and style (something
  @@ -278,8 +282,8 @@
   
     <p>The XSP language (<link href="xsp/WD-xsp.html">eXtensible Server Pages</link>) languages defines an XML DTD for
     separating content and logic for compiled server pages. 
  -  XSP (eXtensible Server Pages) is, like XSLFO, supposed to be a &quot;final
  -  DTD&quot; in the sense that is the result of one or more transformation steps
  +  XSP (eXtensible Server Pages) is, like XSLFO, supposed to be a <em>final
  +  DTD</em> in the sense that is the result of one or more transformation steps
     and must be rendered by some formatter into pure source code that can then be
     compiled into binary code.</p>
   
  @@ -297,7 +301,7 @@
     pure content to these final DTDs, placing the style and logic on the
     transformation layers and guaranteeing complete separation and easier
     maintenance.</p>
  -
  -</section>
  -</page>
   
  +</s1>
  +</body>
  +</document>
  \ No newline at end of file
  
  
  
  1.1                  xml-cocoon/docs/WD-xsp.xml
  
  Index: WD-xsp.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!DOCTYPE spec SYSTEM "../dtd/specification-v10.dtd">
  
  <spec>
   <header>
    <title>eXtensible Server Pages (XSP) Layer 1</title>
    <version>11091999</version>
    <type>Working Draft</type>
    <authors>
     <person name="Stefano Mazzocchi" email="stefano@apache.org"/>
    </authors>
    <notice>
      This is an Apache Working Draft for review by all interested
      parties. It is a draft document and may be updated, replaced, or obsoleted by other
      documents at any time. It is inappropriate to use Working Drafts as reference material or
      to cite them as other than &quot;work in progress&quot;. This work is part of the <link
      href="http://xml.apache.org/cocoon/">Apache Cocoon Project</link>
    </notice>
    <abstract>
      This document specifies an XML namespace that addresses a complete
      region of web publishing, that of logic-based, dynamic content generation. This language
      is introduced to fill an existing gap between the W3C specifications and working draft and
      the increasing demand for a flexible server side approach based on the new XML paradigm.
    </abstract>
   </header>
   
   <body>
    <s1 title="Introduction">
     <p>This document specifies both an XML document type definition and a development
     methodology to generate dynamic XML by server side processing of client's requests. Such a
     specification is useful to define an open and standard way to develop and maintain dynamic
     XML server pages. The technology described in this document was designed to complete the
     XML-based publishing framework defined by the Cocoon Project and it's mainly targeted
     on this project, even if the final goal of this effort is to submit a request to a standard
     body (such as W3C) for final recommendation.</p>
     
     <s2 title="Origins">
     <p>The need for an open language to standardizing server side programmatic XML generation
    was observed when XML-based web publishing frameworks emerged and no available technology
    was detailed, stable, useful and open enough to be used. XSP, by mixing Turing-complete
    programming logic with page content, provide a flexible yet fully portable and extensible
    way to develop dynamic XML content. Moreover, being completely XML-based, XSP are fully
    integrated with XML-based web architectures that allow XSL-transformation to obtain the
    context separation that is needed for complex sites to increase their management
    parallelism.</p>
    
    <p>Being based on an XML paradigm from the beginning, XSP don't suffer limitations other
    server pages technologies do: the ability to XSL-transform XSP directly and recursively
    allows a more compact and precise DTD to be designed since content/logic/style separation
    is performed by the architecture and not by the language itself. For this reason, XSP are
    completely transparent to the namespaces/document-types used.</p>
     </s2>
   
  <s2 title="Layer Separation">
    <p>Being a rather complex technology, the XSP specification will be separated into layers.
    These layers will have different goals and restrictions and will allow faster development
    cycles and a better defined development model. Every layer will define its own document
    type definition which may extend the one of the previous layer or completely change it,
    depending on layer goals. Layers should be seen as levels of abstraction, much like
    programming languages range from higher-levels to lower-levels.</p>
  </s2>
  
  <s2 title="General Goals">
    <p>Following is a summary of the design principles governing the general XSP specification:</p>
    <ol>
     <li>should integrate completely with existing W3C recommendations and working drafts</li>
     <li>should be programming language independent</li>
     <li>should be aimed to programmers but should be relatively easy to understand</li>
     <li>should allow pages to be compiled (into Java servlets or other equivalent technology)</li>
     <li>should not aim to replace existing technologies</li>
     <li>should be document oriented</li>
     <li>should allow easy reusability of page code</li>
     <li>should allow complete separation of knowledge contexts (content, logic and style)</li>
     <li>should be transparent to all but page programmers</li>
     <li>specification should be open to all but controlled directly by the Cocoon Project</li>
    </ol>
  </s2>
  
  <s2 title="Layer 1 Goals">
    <p>Following is a summary of the design principles governing the Layer 1 of the XSP
    specification:</p>
    <ol>
      <li>should define the complete element set</li>
      <li>should be aimed to machine generations so:
       <ul>
        <li>reducing the number of elements to a minimum is of maximal importance</li>
        <li>verbosity of the generated documents is of minimal importance</li>
       </ul>
      </li>
      <li>should be human readable/editable so:
       <ul>
        <li>terseness and readability are of maximal importance</li>
        <li>indenting and formattation are of maximal importance</li>
       </ul>
      </li>
      <li>should be possibly XSLT transformed directly into programming language source code</li>
      <li>should define the relations to the programming languages (object models, variable scopes)</li>
    </ol>
  </s2>
  
  <s2 title="Layer 2 Goals">
    <p>Following is a summary of the design principles governing the Layer 2 of the XSP
    specification:</p>
    
    <ol>
     <li>should define a human oriented element set</li>
     <li>should be aimed to human generations so:
      <ul>
       <li>reducing the number of elements to a minimum is of minimal importance</li>
       <li>reducing verbosity of the documents is of maximal importance</li>
      </ul>
     </li>
     <li>should be aimed to medium-low knowledged programmers:
      <ul>
       <li>automatization of complex operations is of maximal importance</li>
       <li>tendency to hide page logic is of maximal importance</li>
      </ul>
     </li>
     <li>should be possibly XSLT transformed into XSP Layer 1 documents</li>
    </ol>
  </s2>
  
  <s2 title="Final Goals">
    <p>The XSP specification would eventually evolve into a single specification with a single
    document type definition. This will happen when the working draft phase will be terminated
    and all involved parties will agree on the specification stability. The Layer 1 will be
    the first to be developed and tested in a working implementation. Subsequent layers will
    probably need several evolution stages to reach their final shape.</p>
  </s2>
  
  <s2 title="Relationship to Existing Standards">
    <p>Three standards have been especially influential:</p>
    <ul>
      <li><strong>JSP</strong> defines a way to embed programmatic logic into web documents.</li>
      <li><strong>XSLT</strong> defines a way to transform XML documents.</li>
      <li><strong>XML</strong> defines a flexible still highly structured paradigm for web
        content generation and distribution.</li>
    </ul>
    <p>Many server side dynamic web content generators have been evaluated and confronted,
    especially WebMacro and GSP.</p>
  </s2>
  
  <s2 title="Terminology">
    <p>The following basic terms apply in this document:</p>
    <dl>
      <dt>document</dt>
      <dd>
        a document is the final result of the client request phase and they can be obtain from a
        single file that is read from disk/cache or by processing several ones. Documents are said
        <em>static</em> if their content doesn't change with user request parameters nor time.
        Documents are said <em>dynamic</em> if they do.
      </dd>
      <dt>page</dt>
      <dd>
        a page is the entity that is requested by the client and drives the document creation
        process. In the simplest case, a document is created reading the page and sending it
        directly without further processing. In case of compiled pages, a binary object is
        executed and it's content is used as page content. Pages are said <em>compiled</em> if
        they are translated into binary code. Note that compiled pages may be created from normal
        pages the first time the page is requested and executed as binary code in further requests
        for performance reasons.
      </dd>
      <dt>sheet</dt>
      <dd>
        a sheet is the processing unit of the document creation chain. Each sheet is a file and
        they contain the instructions to transform the requested page into the document sent to
        the requesting client. Sheets are said <em>style sheets</em> if they are the last of the
        chain and no further processing in performed, <em>logic sheets</em> if they contain XSP
        elements. Both types are said <em>transformation sheets</em> since they contain XSLT
        elements.
      </dd>
      <dt>document type</dt>
      <dd>
        a document type is a unique name that identifies the type of the document being
        generated. This term has the same meaning as in the XML specification. Note how a document
        has only one document type but this could change during processing since transformation
        sheets allow the transformation from one document type into another.
      </dd>
    </dl>
  </s2>
  </s1>
  
  <s1 title="XSP Syntax and DTD">
  
  <s2 title="Defined External Entities">
  
    <p>The XSP specification defines some external entities that may be used to reduce the
    verbosity of XSP document, allowing the inclusion the default DTD via entity mapping. The
    standard way to include the XSP DTD into XSP documents is:</p>
    
    <source><![CDATA[  ]]></source>
  
  </s2>
  
  <s2 title="The XSP Layer 1 Document Type Definition">
    <p>The XSP DTD was designed with simplicity in mind. The number of elements and attributes
    was reduced to a minimum to allow a fast and easy learning process. On the other hand, no
    special helper elements were defined in Layer 1 to reduce the spec development time and to
    favor early feedback from both implementers and users.</p>
    
    <p>The following is the complete DTD. It must be noted that this DTD can hardly be used
    (alone) to validate any XSP due to the fact that XSP are namespace orthogonal and are
    designed to include as content mark-up elements that belong to other namespaces.
    The XSchema effort will allow multi-namespace validation.</p>
  
    <source><![CDATA[  ]]></source>
    
  </s2>
  </s1>
  
  <s1 title="Example of Usage">
    <p>Consider the following XML source document:</p>
  
    <source><![CDATA[  ]]></source>
  
    <p>This simple example shows the power of content/logic/style separation. While the <code>&lt;title&gt;</code>
    tag has a very special meaning in the <em>page</em> document type, indicating the page
    title, the <code>&lt;counter&gt;</code> element is needs to be dynamically substituted by
    the number of times the document has been requested. The logic that performs such behavior
    is included in tag itself, but unlike other existing server side technologies, the
    behavior is not defined in the page itself, but on the logic sheet that is applied to
    evaluate this behavior. In fact, the same page may have a totally different behavior
    depending on the logicsheet that is applied to the page. Note that it's beyond the scope
    of this specification to define a way to associate transformation sheets to pages. The
    associated logicsheet that uses the Java language as logic definition may look like:</p>
    
    <source><![CDATA[  ]]></source>
  
      
    <p>After applying the above logic sheet, the resulting document would be equivalent to the
    following:</p>
    
    <source><![CDATA[  ]]></source>
   
    <p>Note that in this example the XML document is being generated as a <em>stream</em>
    but a DOM tree is used to create it. The DOM tree can't be passed directly to
    the servlet engine for further processing because the current servlet specification
    (2.2) does not allow for content generation in a format other than a stream. A rather undesirable consequence
    of this is that the resulting XML document would need to be re-parsed in case a final XSL
    stylesheet or other post-transformation must be applied.</p>
    
    <p>To solve this problem and speed up the execution on server side XML
    processing, the XSP can be compiled into something like this:</p>
  
    <source><![CDATA[  ]]></source>
  
    <p>The above shows one of the best features of XSP: output independence.
    Since the output objects are not accessible directly from the internal page
    logic (unlike other similar technologies, such as JSP), the page compiler can
    choose between a great variety of possible ways to generate and forward the
    page content. In fact, while the first example uses DOM as a construction set
    and a stream as output method, the exact same page is compiled in the second
    example to use a SAX event-based model and a document handler as output.</p>
    
    <p>Finally, It is beyond the scope of this specification to define how XSP are translated
    into binary code and how these interact with the publishing frameworks that handle
    them, but it is mandated that this should be completely transparent to the
    page programmer and an XSP page should behave exactly the same (modulo
    performance) in every XSP engine.</p>
  </s1>
  
  <s1 title="XSP and JSP">
    <p>XSP and JSP might appear as overlapping at a first glance since they both:</p>
    
    <ul>
      <li>follow the <em>compiled server pages</em> model, allowing server pages to
        be compiled into binary code for faster execution.</li>
      <li>can be parsed and validated by regular XML parsers</li>
      <li>can be transformed by XSLT processors</li>
      <li>aim to programming language abstraction</li>
    </ul>
    
    <p>While these are very important points were the two specifications <em>do</em>
    overlap, there are significant differences described hereafter.</p>
  
  <s2 title="Output Exposure">
    <p>In all different server pages technologies, some data regarding the status
    of the resource are available to page logic. Since JSP follow the Servlet API
    model, expecting JSP pages to be compiled into servlets, the same data
    available to servlet is available to page logic. This allows the page logic to
    obtain access to the output channel (being either an OutputStream or a Writer
    for servlets).</p>
    
    <p>While this is not a problem for normal web operation when no further server
    side processing is performed, for XML generation (where further server side
    processing may be needed, depending on client capabilities) the Servlet/JSP
    limitations impose on the server pages engine a parsing stage that is
    completely avoided in XSP.</p>
    
    <p>In fact, in XSP, page logic has <em>not</em> direct access to the output
    channel and it's the page compiler responsibility to choose the preferred
    method to compile the page, depending on processing needs and server
    requirements.</p>
    <p>It should be noted how XSP spec provides three different contexts: <code>content</code>,
    <code>logic</code> and <code>eval</code>. These three contexts never overlap
    since <code>content</code> is used to create static markup content, <code>logic</code>
    to indicate programming logic and <code>eval</code> to bridge the two domains,
    allowing a logic component to be evaluated without exposing the output channel
    to the logic context.</p>
    <p>This is a very significant difference since it allows XSP page compiler to <em>hardcode</em>
    pre-parsed XML content thus removing the request time parsing overhead that
    JSP always require.</p>
  </s2>
  
  <s2 title="Page Readability">
    <p>For these reasons, XSP, unlike JSP, uses the XML feature of <em>syntax
    orthogonalily</em> that allows almost any programming language code to be
    easily distinguishable between markup elements, while JSP needs to enclose
    programming code by <code>scriptlet</code> tags. The following is an example to show
    the different results based on the same logic and code.</p>
    
    <source><![CDATA[  ]]></source>
  
    <p>This is the JSP equivalent:</p>
    
    <source><![CDATA[  ]]></source>
  
    <p>It must be noted the use of the <code>out</code> object in the JSP example while
    XSP provide specific tags to avoid that.</p>
  </s2>
  </s1>
  </body>
  
  <appendices>
  
  <s1 title="Normative References">
  <bl>
    <bi name="DOM" 
        href="http://www.w3.org/TR/REC-DOM-Level-1" 
        title="Document Object Model (DOM) Level 1 Specification"
        authors="Lauren Wood et al."
        date="1 October 1998"/>
        
    <bi name="RFC2119" 
        href="http://www.ietf.org/rfc/rfc2119.txt"
        title="Key words for use in RFCs to Indicate Requirement Levels"
        authors="S. Bradner"
        date="March 1997"/>
        
    <bi name="RFC2376" 
        href="http://www.ietf.org/rfc/rfc2376.txt"
        title="XML Media Types"
        authors="E. Whitehead, M. Murata"
        date="July 1998"/>
        
    <bi name="RFC2396"
        href="http://www.ietf.org/rfc/rfc2396.txt"
        title="Uniform Resource Identifiers (URI): Generic Syntax"
        authors="T. Berners-Lee, R. Fielding, L. Masinter"
        date="August 1998"/>
        
    <bi name="XML" 
        href="http://www.w3.org/TR/REC-xml"
        title="Extensible Markup Language (XML) 1.0 Specification"
        authors="T. Bray, J. Paoli, C. M. Sperberg-McQueen"
        date="10 February 1998"/>
        
    <bi name="XMLNAMES"
        href="http://www.w3.org/TR/REC-xml-names"
        title="Namespaces in XML"
        authors="T. Bray, D. Hollander, A. Layman"
        date="14 January 1999"/>
        
    <bi name="XSLT"
        href="http://www.w3.org/TR/xslt"
        title="XSL Transformations (XSLT) Specification Version 1.0"
        authors="J. Clark"
        date="16 November 1999"/>
        
    <bi name="SAX"
        href="http://www.megginson.com/SAX/"
        title="The Simple API for XML (Java implementation) version 1.0"
        authors="D.Megginson"/>
  </bl>
  </s1>
  
  <s1 title="Acknowledgements">
    <p>The following people have greatly contributed to the creation and design of this draft:</p>
    <ul>
     <li><p>Ricardo Rocha &lt;<link href="mailto:rrocha@plenix.org">rrocha@plenix.org</link>&gt;</p></li>
    </ul>
  </s1>
  
  </appendices>
  
  <footer>
     <legal>
     <p>Copyright (c) 1999 Apache XML Project. All Rights Reserved.</p>
    </legal>
  </footer>
  </spec>
  
  
  
  
  1.1                  xml-cocoon/docs/javadoc.xml
  
  Index: javadoc.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!DOCTYPE document SYSTEM "../dtd/document-v10.dtd">
  
  <document>
   <header>
    <title>Javadoc Documentation in XML</title>
    <authors>
     <person name="Kenneth Murphy" email="murphyk@umsystem.edu"/>
    </authors>
   </header>
  
   <body>
    <s1 title="Introduction">
     <p>We are currently working on enhancing the documentation provided for the
     Cocoon XML publishing framework by converting javadoc commented source code into
     XML for use within Cocoon.</p>
    </s1>
  
    <s1 title="The plan">
     <p>In order to do this we are currently planning to implement the following
  phases:</p>
  
    <ol>
    <li>Develop a JavaDoc XML DTD that acts as a data structure representing the
      information provided by the rootDoc object of the SUN Javadoc program to a
      plugged doclet. This DTD is intended to closely mirror the look of a raw
      java source file.</li>
    <li>Develop a JavaDoc doclet (JavaDocXML) that takes the information from the
      JavaDoc rootDoc object and converts it into an XML file using the
      javadoc.dtd.</li>
    <li>Wrap the javadoc with XML doclet invocation into a cocoon producer as follows:</li>
    <ul>
     <li>reads the document from the file system</li>
     <li>spawns the javadoc tool using the javadoc XML servlet and using the
         parameters found in the "javadoc makefile"</li>
     <li>produces the XML output as a single document</li>
     <li>the Cocoon engine process it with the stylesheet indicated (from
         command line or whatever)</li>
     <li>formats it either as PDF or HTML or whatever depending on the chosen
         stylesheet. (the HTML formatter will be able to split a single
         XML document into several ones based on special page-break tags or PIs
          or using FO directly)</li>
     <li>formatter will also be able to react on the SVG namespace
         inlining vector graphics or formatted as raster graphics.</li>
    </ul>
    <li>Some final formats we could produce are:</li>
    <ul>
      <li>javadoc.dtd ---&gt; javadoc_html.dtd ---&gt; HTML (this would create a
          javadoc that looks like the current HTML javadoc standard).</li>
      <li>javadoc.dtd ---&gt; docBook.dtd&nbsp; (this would facilitate printed
          books based having heavy content about java API's. For example &quot;The
          JDBC API Tutorial and Reference: 2nd Edition&quot; could make heavy use
          of this.</li>
      <li>javadoc.dtd ---&gt; ebook.dtd (this would facilitate the electronic
          version of documentation)</li>
      <li>javadoc.dtd ---&gt; ??? ---&gt; pdf&nbsp;</li>
    </ul>
    <li>Using this method we will then enhance the existing Cocoon documentation to provide rich documentation
        using some subset of the above formats.</li>
    <li>Finally, we can incorporate XML versions of UML vector diagrams to further enhance the
        source code documentation.</li>
    </ol>
    </s1>
  
    <s1 title="Progress to date">
    <p><strong>Current Status:</strong> Phase 2</p>
    <p>Items currently under development:</p>
    <ul>
    <li>Phase 1</li>
    <ul>
     <li><connect href="../dtd/javadoc.dtd">javadoc.dtd</connect></li>
     <ul>
       <li>Note: I still need to update the sample to reflect the use of
           namespaces and the addition of the interfaceref element</li>
     </ul>
    </ul>
    <li>Phase 2</li>
    <ul>
      <li>Working on XML javadoc doclet</li>
    </ul>
    </ul>
    </s1>
  
    <s1 title="To do">
     <p>Currently, I am needing lots of feedback on the javadoc.dtd. We can't proceed
     to phase 2 until we feel we are on the right track with the DTD. It doesn't need
     to be perfect, but it should be close. When I get the next round of feedback, I
     am planning on adding &quot;import&quot; as an element of class. I am also
     planning on moving the position of the element &quot;doc&quot; to the start of
     each place it is appropriate. They will more closely reflect the source code and
     it just makes since to put the documentation before not after what you are
     talking about.</p>
    </s1>
  
   </body>
  </document>
  
  
  1.1                  xml-cocoon/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)
      
  COPYRIGHT:
    Copyright (c) 1999 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>
      
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-cocoon/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-cocoon/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)
      
  COPYRIGHT:
    Copyright (c) 1999 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">
  <!ENTITY % empty "EMPTY">
  
  
  
  <!-- =============================================================== -->
  <!-- Entities for general XML compliance -->
  <!-- =============================================================== -->
  
  <!-- Common attributes 
          Every element has an ID attribute (sometimes required,
          but usually optional) for links, and a Role attribute
          for extending the useful life of the DTD by allowing
          authors to make subclasses for any element. %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
           role                   NMTOKEN         #IMPLIED'>
  <!ENTITY % common-idreq.att
          'id                     ID              #REQUIRED
           xml:lang               NMTOKEN         #IMPLIED
           role                   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">
  
  <!ENTITY % link-content.mix "%text;|%markup;|%special;%local.content.mix;">
  
  <!ENTITY % content.mix "%link-content.mix;|%links;">
  
      <!-- ==================================================== -->
      <!-- Phrase Markup -->
      <!-- ==================================================== -->
  
      <!-- Strong (typically bold) -->
      <!ELEMENT strong (%text;)>
      <!ATTLIST strong %common.att;>
  
      <!-- Emphasis (typically italic) -->
      <!ELEMENT em (%text;)>
      <!ATTLIST em %common.att;>
      
      <!-- Code (typically monospaced) -->
      <!ELEMENT code (%text;)>
      <!ATTLIST code %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;>    
  
  
  
  
  
          
  <!-- =============================================================== -->
  <!-- Blocks definitions -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.blocks "">
  
  <!ENTITY % local.lists "">
  
  <!ENTITY % paragraphs "p|source|note|fixme|img-block">
  
  <!ENTITY % tables "table">
  
  <!ENTITY % lists "ol|ul|sl|dl %local.lists;">
  
  <!ENTITY % blocks "%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 -->
      <!-- ==================================================== -->
  
      <!ENTITY % cellhalign.att
              'align          (left|center
                              |right|justify
                              |char)          #IMPLIED
              char            CDATA           #IMPLIED
              charoff         CDATA           #IMPLIED'>
      
      <!ENTITY % cellvalign.att
              'valign         (top|middle
                              |bottom
                              |baseline)      #IMPLIED'>
      
      <!ENTITY % thtd.att
              'abbr           CDATA           #IMPLIED
              axis            CDATA           #IMPLIED
              headers         IDREFS          #IMPLIED
              scope           (row
                              |col
                              |rowgroup
                              |colgroup)      #IMPLIED
              rowspan         NMTOKEN         "1"
              colspan         NMTOKEN         "1"'>
      
      <!ENTITY % width.att
              'width          CDATA           #IMPLIED'>
      
      <!ENTITY % span.att
              'span           NMTOKEN         "1"'>
  
  
  
      <!-- Table (based on the IETF HTML table standard [RFC1942]) -->
      <!ELEMENT table
              (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
      <!ATTLIST table
              %common.att;
              %width.att;
              summary         CDATA           #IMPLIED
              border          CDATA           #IMPLIED
              frame           (void|above
                              |below|hsides
                              |lhs|rhs
                              |vsides|box
                              |border)        #IMPLIED
              rules           (none|groups
                              |rows|cols
                              |all)           #IMPLIED
              cellspacing     CDATA           #IMPLIED
              cellpadding     CDATA           #IMPLIED>
      
          <!ELEMENT caption (%content.mix;)*>
          <!ATTLIST caption %common.att;>
               
          <!ELEMENT colgroup (col)*>
          <!ATTLIST colgroup
                  %common.att;
                  %span.att;
                  %width.att;
                  %cellhalign.att;
                  %cellvalign.att;>
       
              <!ELEMENT col %empty;>
              <!ATTLIST col
                      %common.att;
                      %span.att;
                      %width.att;
                      %cellhalign.att;
                      %cellvalign.att;>        
  
          <!ELEMENT thead (tr)+>
          <!ATTLIST thead
                  %common.att;
                  %cellhalign.att;
                  %cellvalign.att;>
          
          <!ELEMENT tfoot (tr)+>
          <!ATTLIST tfoot
                  %common.att;
                  %cellhalign.att;
                  %cellvalign.att;>
          
          <!ELEMENT tbody (tr)+>
          <!ATTLIST tbody
                  %common.att;
                  %cellhalign.att;
                  %cellvalign.att;>
      
              <!ELEMENT tr (th|td)+>
              <!ATTLIST tr
                      %common.att;
                      %cellhalign.att;
                      %cellvalign.att;>
              
                  <!ELEMENT th (%content.mix;)*>
                  <!ATTLIST th
                          %common.att;
                          %thtd.att;
                          %cellhalign.att;
                          %cellvalign.att;>
                  
                  <!ELEMENT td (%content.mix;)*>
                  <!ATTLIST td
                          %common.att;
                          %thtd.att;
                          %cellhalign.att;
                          %cellvalign.att;>
  
      <!-- ==================================================== -->
      <!-- 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 img-block %empty;>
      <!ATTLIST img-block 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 %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-cocoon/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) 1999 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-cocoon/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) 1999 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-cocoon/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) 1999 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 spec (header?, body, appendices?, footer?)>
  <!ATTLIST spec %common.att;>
  
      <!ELEMENT appendices (%sections;)+>
      <!ATTLIST appendices %common.att;>
  
  <!-- =============================================================== -->
  <!-- Bibliography List -->
  <!-- =============================================================== -->
  
  <!ENTITY % local.lists "|bl">
  
      <!-- 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-cocoon/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)
      
  COPYRIGHT:
    Copyright (c) 1999 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, action*)>
  <!ATTLIST todo %common.att; 
                 %title.att;>
  
      <!ELEMENT devs (person+)>
      <!ATTLIST devs %common.att;>
  
      <!ELEMENT action (%content.mix;)*>
      <!ATTLIST action %common.att;
                       assigned-to  IDREF           #IMPLIED
                       context      (%contexts;)    #REQUIRED
                       priority     (%priorities;)  #IMPLIED>
      
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  
  1.1                  xml-cocoon/resources/cocoon-small.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-cocoon/resources/cocoon.jpg
  
  	<<Binary file>>
  
  
  1.1                  xml-cocoon/resources/logo.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-cocoon/resources/pyramid-model.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-cocoon/resources/schema.jpg
  
  	<<Binary file>>
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2       +7 -7      xml-cocoon/samples/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/samples/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README	1999/11/09 01:51:35	1.1
  +++ README	1999/11/30 16:29:58	1.2
  @@ -9,11 +9,11 @@
         - hello ................. a simple hello world example
         - sites ................. some live Apache web sites XML-ized
         - fo .................... examples regarding XSL formatting objects
  -      - wap ................... how to turn your site wireless ready
  -      - multi ................. to show multiple xslt transformations
  +      - wap ................... how to turn your site wireless ready with WML
  +      - vml ................... how to turn your site voice ready with VoiceML
         - sql ................... how to XML-ize your legacy rational data
         - dcp ................... how to add dynamic PI evaluation
  -      - xsp ................... examples to show XML compiled pages
  +      - xsp ................... examples to show XML compiled server pages
   
   Filenames
   ---------
  @@ -26,19 +26,19 @@
   
   The pattern used in Cocoon's examples follows these rules:
   
  - <name>.<doctype>.xml ....................... for XML files
  - <name>.<from-doctype>.<to-doctype>.xsl ..... for XSLT transformation sheets
  + <name>-<doctype>.xml ....................... for XML files
  + <name>-<from-doctype>-<to-doctype>.xsl ..... for XSLT transformation sheets
    
   This allows you to understand without opening the file, if the stylesheet you
   are using matches and the processing pipe thus created is significant. For
   example, while the following is correct
   
  -   correct.whatever.xml -> simple.whatever.somethingelse.xsl
  +   correct-whatever.xml -> simple-whatever-somethingelse.xsl
      
   since the file "correct" uses the "whatever" doctype and the stylesheet "simple" 
   transforms "whatever" documents into "somethingelse" documents, this is not
   
  -   wrong.whatever.xml -> simple.anything.somethingelse.xsl
  +   wrong-whatever.xml -> simple-anything-somethingelse.xsl
      
   since the file "wrong" is a document of type "whatever" and the stylesheet
   "simple" doesn't know how to handle those documents but only "anything" 
  
  
  
  1.1                  xml-cocoon/samples/dcp/sample-page-html.xsl
  
  Index: sample-page-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
   
    <xsl:template match="page">
      <xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:processing-instruction>
      <HTML>
      <HEAD>
        <TITLE><xsl:value-of select="title"/></TITLE>
      </HEAD>
      <BODY BGCOLOR="white">
        <H1 ALIGN="center"><xsl:value-of select="title"/></H1>
        <xsl:apply-templates/>
      </BODY>
      </HTML>
    </xsl:template>
  
    <xsl:template match="title">
     <!-- remove -->
    </xsl:template>
  
    <xsl:template match="p">
     <P>
      <xsl:apply-templates/>
     </P>
    </xsl:template>
  
    <xsl:template match="em">
      <STRONG><xsl:apply-templates/></STRONG>
    </xsl:template>
  
    <xsl:template match="parameters">
      <P>The following is the list of parameters for this request:</P>
  
      <TABLE BORDER="1">
        <CAPTION><I><B>Parameters</B></I></CAPTION>
        <TR>
          <TH>Name</TH>
  	    <TH>Value(s)</TH>
        </TR>
        <xsl:apply-templates/>
      </TABLE>
    </xsl:template>
  
    <xsl:template match="parameter">
      <TR>
        <TD VALIGN="top"><xsl:value-of select="@name"/></TD>
        <TD VALIGN="top">
  	    <TABLE>
            <xsl:apply-templates/>
          </TABLE>
        </TD>
      </TR>
    </xsl:template>
   
    <xsl:template match="parameter-value">
      <TR>
        <TD>
          <xsl:apply-templates/>
        </TD>
      </TR>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon/samples/dcp/ecmascript/sample-page.xml
  
  Index: sample-page.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="../sample-page-html.xsl" type="text/xsl"?>
  <?cocoon-process type="dcp"?>
  <?cocoon-process type="xslt"?>
  
  <page>
  
   <!-- Script filenames are relative to the document's path -->
   <!-- Languages names 'ecmascript' and 'javascript' are interchangeable -->
   <?dcp-object name="util" language="javascript" code="sample.es"?>
  
   <title>A Dynamic Cocoon Page</title>
  
   <p>
     Hi, I'm a dynamic page generated by <em>Cocoon</em> on
     <?dcp-content method="util.getSystemDate" format="MM/dd/yyyy"?>.
   </p>
  
   <p>
     During my current incarnation, I've been hit
     <?dcp-content method="util.getCount"?>
     times.
   </p>
  
   <p><?dcp-content method="util.getRequestParameters"?></p>
  </page>
  
  
  
  1.1                  xml-cocoon/samples/dcp/java/sample-page.xml
  
  Index: sample-page.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="../sample-page-html.xsl" type="text/xsl"?>
  <?cocoon-process type="dcp"?>
  <?cocoon-process type="xslt"?>
  
  <page>
  
   <!-- Script filenames are relative to the document's path -->
   <?dcp-object name="util" language="java" code="org.apache.cocoon.example.DCPExample"?>
   
   <title>A Dynamic Cocoon Page</title>
  
   <p>
     Hi, I'm a dynamic page generated by <em>Cocoon</em> on
     <?dcp-content method="util.getSystemDate" format="MM/dd/yyyy"?>.
   </p>
  
   <p>
     During my current incarnation, I've been hit
     <?dcp-content method="util.getCount"?>
     times.
   </p>
  
   <p><?dcp-content method="util.getRequestParameters"?></p>
  </page>
  
  
  
  1.1                  xml-cocoon/samples/fo/darkness-novel.xml
  
  Index: darkness-novel.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <?xml-stylesheet href="darkness-novel.xsl" type="text/xsl"?>
  <?cocoon-process type="xslt"?>
  
  <!DOCTYPE novel [
   <!ENTITY mdash "--">
   <!ENTITY ldquo "``">
   <!ENTITY rdquo "''">
   <!ENTITY lsquo "`">
   <!ENTITY rsquo "'">
   <!ENTITY hellip "...">
   <!ENTITY % phrasal "#PCDATA | emphasis">
   <!ELEMENT novel (front, body)>
   <!ELEMENT front (title, author, revision-list)>
   <!ELEMENT body (chapter+)>
   <!ELEMENT chapter (title, paragraph+)>
   <!ATTLIST chapter id ID #REQUIRED>
   <!ELEMENT revision-list (item+)>
   <!ELEMENT item (%phrasal;)*>
   <!ELEMENT title (%phrasal;)*>
   <!ELEMENT author (%phrasal;)*>
   <!ELEMENT paragraph (%phrasal;)*>
   <!ELEMENT emphasis (%phrasal;)*>
  ]>
  
  <novel>
  
   <front>
    <title>The Heart of Darkness</title>
    <author>Joseph Conrad</author>
  
    <revision-list>
     <item>
      Abbreviated and inlined as Cocoon example 5 June 1999 by stefano@apache.org 
     </item>
     <item>
      XML version 30 November 1997 by David Megginson, dmeggins@microstar.com 
      (still needs to be proofread against the printed edition).
     </item>
     <item>
      TEI markup added April 1995 by David Megginson, dmeggins@aix1.uottawa.ca
     </item>
     <item>
      Corrections to typos made 6/22/94 by PDCChristy@aol.com
     </item>
     <item>
      Original etext came from the Online Book Initiative (OBI) via the Internet 
      Wiretap [obi/Joseph.Conrad/heart.of.darkness.txt]
     </item>
    </revision-list>
   </front>
  
  <body>
   
  <chapter id="chapt01">
  <title>I</title>
  
  <paragraph>The Nellie, a cruising yawl, swung to her anchor without a
  flutter of the sails, and was at rest. The flood had made, the wind
  was nearly calm, and being bound down the river, the only thing for it
  was to come to and wait for the turn of the tide.</paragraph>
  
  <paragraph>The sea-reach of the Thames stretched before us like the
  beginning of an interminable waterway. In the offing the sea and the
  sky were welded together without a joint, and in the luminous space
  the tanned sails of the barges drifting up with the tide seemed to
  stand still in red clusters of canvas sharply peaked, with gleams of
  varnished spirits. A haze rested on the low shores that ran out to sea
  in vanishing flatness. The air was dark above Gravesend, and farther
  back still seemed condensed into a mournful gloom, brooding motionless
  over the biggest, and the greatest, town on earth.</paragraph>
  
  <paragraph>The Director of Companies was our captain and our host. We
  four affectionately watched his back as he stood in the bows looking
  to seaward. On the whole river there was nothing that looked half so
  nautical. He resembled a pilot, which to a seaman is trustworthiness
  personified. It was difficult to realize his work was not out there in
  the luminous estuary, but behind him, within the brooding
  gloom.</paragraph>
  
  <paragraph>Between us there was, as I have already said somewhere, the
  bond of the sea. Besides holding our hearts together through long
  periods of separation, it had the effect of making us tolerant of each
  other's yarns &mdash; and even convictions. The Lawyer &mdash; the
  best of old fellows &mdash; had, because of his many years and many
  virtues, the only cushion on deck, and was lying on the only rug. The
  Accountant had brought out already a box of dominoes, and was toying
  architecturally with the bones. Marlow sat cross-legged right aft,
  leaning against the mizzenmast. He had sunken cheeks, a yellow
  complexion, a straight back, an ascetic aspect, and, with his arms
  dropped, the palms of hands outwards, resembled an idol. The Director,
  satisfied the anchor had good hold, made his way aft and sat down
  amongst us. We exchanged a few words lazily. Afterwards there was
  silence on board the yacht. For some reason or other we did not begin
  that game of dominoes. We felt meditative, and fit for nothing but
  placid staring. The day was ending in a serenity of still and
  exquisite brilliance. The water shone pacifically; the sky, without a
  speck, was a benign immensity of unstained light; the very mist on the
  Essex marsh was like a gauzy and radiant fabric, hung from the wooded
  rises inland, and draping the low shores in diaphanous folds. Only the
  gloom to the west, brooding over the upper reaches, became more sombre
  every minute, as if angered by the approach of the sun.</paragraph>
  
  <paragraph>And at last, in its curved and imperceptible fall, the sun
  sank low, and from glowing white changed to a dull red without rays
  and without heat, as if about to go out suddenly, stricken to death by
  the touch of that gloom brooding over a crowd of men.</paragraph>
  
  <paragraph>Forthwith a change came over the waters, and the serenity
  became less brilliant but more profound. The old river in its broad
  reach rested unruffled at the decline of day, after ages of good
  service done to the race that peopled its banks, spread out in the
  tranquil dignity of a waterway leading to the uttermost ends of the
  earth. We looked at the venerable stream not in the vivid flush of a
  short day that comes and departs for ever, but in the august light of
  abiding memories. And indeed nothing is easier for a man who has, as
  the phrase goes, &ldquo;followed the sea&rdquo; with reverence and
  affection, than to evoke the great spirit of the past upon the lower
  reaches of the Thames. The tidal current runs to and fro in its
  unceasing service, crowded with memories of men and ships it had borne
  to the rest of home or to the battles of the sea. It had known and
  served all the men of whom the nation is proud, from Sir Francis Drake
  to Sir John Franklin, knights all, titled and untitled &mdash; the
  great knights-errant of the sea. It had borne all the ships whose
  names are like jewels flashing in the night of time, from the Golden
  Hind returning with her round flanks full of treasure, to be visited
  by the Queen's Highness and thus pass out of the gigantic tale, to the
  Erebus and Terror, bound on other conquests &mdash; and that never
  returned.  It had known the ships and the men. They had sailed from
  Deptford, from Greenwich, from Erith &mdash; the adventurers and the
  settlers; kings' ships and the ships of men on &lsquo;Change;
  captains, admirals, the dark "interlopers" of the Eastern trade, and
  the commissioned "generals" of East India fleets. Hunters for gold or
  pursuers of fame, they all had gone out on that stream, bearing the
  sword, and often the torch, messengers of the might within the land,
  bearers of a spark from the sacred fire. What greatness had not
  floated on the ebb of that river into the mystery of an unknown earth!
  &hellip; The dreams of men, the seed of commonwealths, the germs of
  empires.</paragraph>
  
  <paragraph>The sun set; the dusk fell on the stream, and lights began
  to appear along the shore. The Chapman lighthouse, a three-legged
  thing erect on a mud-flat, shone strongly. Lights of ships moved in
  the fairway &mdash; a great stir of lights going up and going
  down. And farther west on the upper reaches the place of the monstrous
  town was still marked ominously on the sky, a brooding gloom in
  sunshine, a lurid glare under the stars.</paragraph>
  
  <paragraph>&ldquo;And this also,&rdquo; said Marlow suddenly,
  &ldquo;has been one of the dark places of the
  earth.&rdquo;</paragraph>
  
  <paragraph>[NOTE: this is only an extract of the whole novel because it is
  intended to be only a technological example and not a piece of art. I
  apologize for this, and please, do not redistribute this broken document]
  </paragraph>
  
  </chapter>
  
  </body>
  
  </novel>
  
  
  
  1.1                  xml-cocoon/samples/fo/novel-fo.xsl
  
  Index: novel-fo.xsl
  ===================================================================
  <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
    xmlns:fo="http://www.w3.org/XSL/Format/1.0">
  
    <xsl:template match="novel">
      <xsl:pi name="cocoon-format">type="text/xslfo"</xsl:pi>
      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
        <fo:layout-master-set>
        <fo:simple-page-master
          page-master-name="right"
          margin-top="75pt"
          margin-bottom="25pt"
          margin-left="100pt"
          margin-right="50pt">
          <fo:region-body margin-bottom="50pt"/>
          <fo:region-after extent="25pt"/>
        </fo:simple-page-master>
        <fo:simple-page-master
          page-master-name="left"
          margin-top="75pt"
          margin-bottom="25pt"
          margin-left="50pt"
          margin-right="100pt">
          <fo:region-body margin-bottom="50pt"/>
          <fo:region-after extent="25pt"/>
        </fo:simple-page-master>
        </fo:layout-master-set>
  
        <fo:page-sequence>
  
          <fo:sequence-specification>
            <fo:sequence-specifier-alternating
              page-master-first="right"
              page-master-odd="right"
              page-master-even="left"/>
          </fo:sequence-specification>
  
          <fo:static-content flow-name="xsl-after">
            <fo:block text-align-last="centered" font-size="10pt"><fo:page-number/></fo:block>
          </fo:static-content>
  
          <fo:flow>
            <xsl:apply-templates/>
          </fo:flow>
        </fo:page-sequence>
  
      </fo:root>
    </xsl:template>
  
    <xsl:template match="front/title">
      <fo:block font-size="36pt" text-align-last="centered" space-before.optimum="24pt"><xsl:apply-templates/></fo:block>
    </xsl:template>
  
    <xsl:template match="author">
      <fo:block font-size="24pt" text-align-last="centered" space-before.optimum="24pt"><xsl:apply-templates/></fo:block>
    </xsl:template>
  
    <xsl:template match="revision-list">
    </xsl:template>
  
    <xsl:template match="chapter">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="chapter/title">
      <fo:block font-size="24pt" text-align-last="centered" space-before.optimum="24pt"><xsl:apply-templates/></fo:block>
    </xsl:template>
  
    <xsl:template match="paragraph">
      <fo:block font-size="12pt" space-before.optimum="12pt" text-align="justified"><xsl:apply-templates/></fo:block>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon/samples/fo/test-fo.xml
  
  Index: test-fo.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by James Tauber, Edited by Stefano Mazzocchi for Cocoon -->
  
  <?cocoon-format type="text/xslfo"?>
  
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <fo:layout-master-set>
    <fo:simple-page-master page-master-name="one" margin-left="100pt" margin-right="100pt">
     <fo:region-body margin-top="50pt" margin-bottom="50pt"/>
    </fo:simple-page-master>
   </fo:layout-master-set>
   
   <fo:page-sequence>
    <fo:sequence-specification>
     <fo:sequence-specifier-repeating page-master-first="one" page-master-repeating="one"/>
    </fo:sequence-specification>
    
    <fo:flow font-size="14pt" line-height="14pt">
   
     <fo:block text-align="centered" font-size="24pt" line-height="28pt">Welcome 
     to Cocoon</fo:block>
  
     <fo:block space-before.optimum="12pt" text-align="justified">This is an 
     example of James Tauber's <fo:inline-sequence font-weight="bold">FOP</fo:inline-sequence>
     formatter that formats XSL formatting objects in PDF. It is early days, but 
     FOP is increasingly supporting more and more formatting objects.</fo:block>
    
     <fo:block text-align="justified" space-before.optimum="12pt">What follows 
     is a list.</fo:block>
    
     <fo:list-block space-before.optimum="6pt">
      <fo:list-item space-before.optimum="12pt">
       <fo:list-item-label>
        <fo:block>1.</fo:block>
       </fo:list-item-label>
       <fo:list-item-body>
        <fo:block text-align="justified">This is item one. It is going to go 
        for a little longer to see if this list-item-body correctly wraps. 
        There, that should be enough.</fo:block>
       </fo:list-item-body>
      </fo:list-item>
  
      <fo:list-item space-before.optimum="12pt">
       <fo:list-item-label>
        <fo:block>2.</fo:block>
       </fo:list-item-label>
       <fo:list-item-body>
        <fo:block text-align="justified">This is item two. It has two blocks in 
        the body. This is the first.</fo:block>
        <fo:block text-align="justified">This is the second.</fo:block>
       </fo:list-item-body>
      </fo:list-item>
   
      <fo:list-item space-before.optimum="12pt">
       <fo:list-item-label>
        <fo:block>3.</fo:block>
       </fo:list-item-label>
       <fo:list-item-body>
        <fo:block text-align="justified">This is item three.</fo:block>
       </fo:list-item-body>
      </fo:list-item>
     </fo:list-block>
     
     <fo:block text-align="justified" space-before.optimum="12pt">This is an 
     example of FOP. This paragraph has to be long enough that it wraps so I 
     can test out text-align. That means I have to keep going and going until 
     I get at least a few lines to play with. I wonder if that's enough. Let 
     me go and check. Yep.</fo:block>
     
    </fo:flow>
    
   </fo:page-sequence>
   
  </fo:root>
  
  
  
  
  
  1.1                  xml-cocoon/samples/hello/hello-page-html.xsl
  
  Index: hello-page-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by Stefano Mazzocchi "stefano@apache.org" -->
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
  
    <xsl:template match="page">
     <xsl:pi name="cocoon-format">type="text/html"</xsl:pi>
     <html>
      <head>
       <title>
        <xsl:value-of select="title"/>
       </title>
      </head>
      <body bgcolor="#ffffff">
       <xsl:apply-templates/>
      </body>
     </html>
    </xsl:template>
  
    <xsl:template match="title">
     <h1 align="center">
      <xsl:apply-templates/>
     </h1>
    </xsl:template>
  
    <xsl:template match="paragraph">
     <p align="center">
      <i>
       <xsl:apply-templates/>
      </i>
     </p>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-cocoon/samples/hello/hello-page.xml
  
  Index: hello-page.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="hello-page-html.xsl" type="text/xsl"?>
  <?cocoon-process type="xslt"?>
  
  <!-- Written by Stefano Mazzocchi "stefano@apache.org" -->
  
  <page>
   <title>Hello</title>
   <content>
    <paragraph>This is my first Cocoon file!</paragraph>
   </content>
  </page>
  
  
  1.1                  xml-cocoon/samples/sites/java.apache.org/fancy-page-html.xsl
  
  Index: fancy-page-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "stefano@apache.org" -->
  <!-- Version: $Id: fancy-page-html.xsl,v 1.1 1999/11/30 16:30:01 stefano Exp $ -->
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
  
    <xsl:output>
    
    </xsl:output>
    
    <xsl:template match="page">
     <xsl:pi name="cocoon-format">type="text/html"</xsl:pi>
     <html>
      <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       <meta name="Author" content="{author}"/>
       <meta name="Version" content="{version}"/>
       <title><xsl:value-of select="title"/></title>
      </head>
      
      <body bgcolor="#ffffff">
      <center>
       <table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
        <tr>
         <td>
          <table border="0" width="100%" cellspacing="2" cellpadding="5">
           <tr>
            <td bgcolor="#F0F0F0">
             <table border="0" width="100%" cellspacing="0" cellpadding="3">
              <tr>
               <td width="100%" align="center">
                <table border="0" width="100%" cellspacing="10">
                 <tr>
                  <td valign="top" width="60%">
                   <xsl:apply-templates select="newscolumn"/>
                  </td>
                  <td valign="top" width="40%">
                   <xsl:apply-templates select="statuscolumn"/>
                  </td>
                 </tr>
                </table>
               </td>
              </tr>
              <tr>
               <td width="100%">
                <small><small>
                 <xsl:value-of select="legal"/>
                </small></small>
               </td>
              </tr>
             </table>
            </td>
           </tr>
          </table>
         </td>
        </tr>
       </table>
      </center>
      </body>
     </html>
    </xsl:template>
    
    <xsl:template match="newscolumn">
     <table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
      <tr>
       <td width="100%">
        <table border="0" width="100%" cellpadding="4">
         <tr>
          <td bgcolor="#C0C0C0" align="right">
           <big><big><b><xsl:text>News</xsl:text></b></big></big>
          </td>
         </tr>
         <xsl:apply-templates/>
        </table>
       </td>
      </tr>
     </table>
    </xsl:template>
    
    <xsl:template match="news">
     <tr>
      <td bgcolor="#E0E0E0">
       <a href="{link}">
        <strong><xsl:value-of select="title"/></strong>
       </a>
      </td>
     </tr>
     <tr>
      <td bgcolor="#ffffff">
       <strong><xsl:value-of select="date"/></strong>
       <xsl:text> - </xsl:text>
       <xsl:value-of select="content"/>
      </td>
     </tr>
    </xsl:template>
    
    <xsl:template match="statuscolumn">
     <table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
      <tr>
       <td width="100%">
        <table border="0" width="100%" cellpadding="4">
         <tr>
          <td bgcolor="#C0C0C0" colspan="2" align="right">
           <big><big><b><xsl:text>Status</xsl:text></b></big></big>
          </td>
         </tr>
         <xsl:apply-templates/>
        </table>
       </td>
      </tr>
     </table>
    </xsl:template>
  
    <xsl:template match="project">
     <tr>
      <td bgcolor="#E0E0E0" colspan="2">
       <a href="{link}">
        <b><xsl:value-of select="title"/></b>
       </a>
      </td>
     </tr>
     <xsl:apply-templates select="release"/>
    </xsl:template>
    
    <xsl:template match="release">
     <tr>
      <td bgcolor="#FFFFFF" align="center" rowspan="2">
       <b><xsl:value-of select="version"/></b>
      </td>
      <td bgcolor="#D0FFD0" align="left">
       <b><xsl:value-of select="status"/></b>
      </td>
     </tr>
     <tr>
      <td bgcolor="#FFFFFF" align="left">
       <small><xsl:value-of select="comment"/></small>
      </td>
     </tr>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  1.1                  xml-cocoon/samples/sites/java.apache.org/news-page.xml
  
  Index: news-page.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="fancy-page-html.xsl" type="text/xsl"?>
  <?xml-stylesheet href="text-page-html.xsl" type="text/xsl" media="lynx"?>
  <?cocoon-process type="xslt"?>
  
  <page>
  
   <title>The Java Apache Project News</title>
   <author>Stefano Mazzocchi</author>
   <version>$Id: news-page.xml,v 1.1 1999/11/30 16:30:01 stefano Exp $</version>
    
   <newscolumn>
    <news>
     <title>Apache JServ User mail list reaches 500 subscribers!</title>
     <link>http://java.apache.org/</link>
     <date>8 Mar 1999</date>
     <content>
      The Apache JServ User mail list has offically reached 500 people subscribed.
      We would like to thank all of you for being around and for partecipating in 
      the making of such interesting projects. This incredible amount of brain 
      power is what makes us really proud, and we are looking forward to host
      more projects and more people to make what open source is all about: 
      learning, meeting people, challenging ourselves and have fun!
     </content>
    </news>
    <news>
     <title>Apache JMeter 1.1 released!</title>
     <link>../jmeter/dist/</link>
     <date>27 Feb 1999</date>
     <content>
      This new release enhances its testing capabilities adding the possibility 
      to test multiple URLs instead of a single one, to dump the collected 
      samples to a file and to use aliases instead of big URLs.
     </content>
    </news>
    <news>
     <title>Apache JServ 1.0b3 released!</title>
     <link>../jserv/index.html</link>
     <date>19 Feb 1999</date>
     <content>
      A new release of Apache JServ is out. Please see the change notes for 
      more information.
     </content>
    </news>
    <news>
     <title>Java Apache Server Framework project started</title>
     <link>../framework/index.html</link>
     <date>1 Feb 1999</date>
     <content>
      A new project is started to design, implement and control the Java 
      Apache Server Framework, a modular and highly flexible common ground for 
      Java server projects. Based on latest software engineering technologies 
      and design patterns, this framework will allow different projects to share
      functional blocks of code as well as creating a standard environment for 
      configuration, deployment, installation and control. Everyone, even from 
      other projects, is welcome to partecipate in its development.
     </content>
    </news>
   </newscolumn>
   
   <statuscolumn>
   
    <project>
     <title>Apache JServ</title>
     <link>../jserv/index.html</link>
     
     <release>
      <version>1.0b3</version>
      <status type="available">Released</status>
      <comment>
       This new generation comes with: complete Servlet 2.0 compliance, 
       enhanced security, improved installation and documentation, performance
       improvements, tons of bug fixes, and much more.
      </comment>
     </release>
     
     <release>
      <version>0.9.12</version>
      <status type="available">Released</status>
      <comment>
       It offers some new experimental features (including load balancing), 
       performance improvements, and bug fixes, for those who want to upgrade 
       from JServ 0.9.x, without changing to the 1.0 tree (yet). 
       In the long term, the 0.9.x tree will probably be discontinued.
      </comment>
     </release>
   
    </project>
   
    <project>
     <title>Apache JServSSI</title>
     <link>../jservssi/index.html</link>
     
     <release>
      <version>1.0</version>
      <status type="available">Released</status>
      <comment>
       The servlet server side include servlet once contained into the Apache 
       JServ servlet engine has been moved in a separate project to allow 
       independent release cycles.
      </comment>
     </release>
    </project>
   
    <project>
     <title>Apache JMeter</title>
     <link>../jmeter/index.html</link>
     
     <release>
      <version>1.1</version>
      <status type="available">Released</status>
      <comment>
       The 100% pure, swing enabled, Java URL profiler/analyser to test your 
       server performance, your servlet performance, to stress your servlets 
       with heavy multi-threading concurrent requests and much more...
      </comment>
     </release>
    </project>  
   </statuscolumn>
   
   <legal>
    Sun, Sun Microsystems, Solaris, Java, JavaSoft, are trademarks or registered 
    trademarks of Sun Microsystems, Inc. UNIX is a registered 
    trademark in the United States and other countries, exclusively licensed 
    through X/Open Company, Ltd. Windows, WinNT and Win32 are registered trademark 
    of Microsoft Corp. All other product names mentioned herein and throughout 
    the entire web site are trademarks of their respective owners.
   </legal>
   
  </page>
  
  
  1.1                  xml-cocoon/samples/sites/java.apache.org/text-page-html.xsl
  
  Index: text-page-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "stefano@apache.org" -->
  <!-- Version: $Id: text-page-html.xsl,v 1.1 1999/11/30 16:30:01 stefano Exp $ -->
  
  <!-- This stylesheet is for text browsers -->
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
   
    <xsl:template match="page">
      <xsl:pi name="cocoon-format">type="text/html"</xsl:pi>
      <html>
      <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       <meta name="Author" content="{author}"/>
       <meta name="Version" content="{version}"/>
       <title><xsl:value-of select="title"/></title>
      </head>
      
      <body bgcolor="#ffffff">
       <xsl:apply-templates select="newscolumn|statuscolumn"/>
      </body>
     </html>
    </xsl:template>
    
    <xsl:template match="newscolumn">
     <h2><xsl:text>News</xsl:text></h2>
     <ul>
      <xsl:apply-templates select="news"/>
     </ul>
    </xsl:template>
    
    <xsl:template match="news">
     <li>
      <a href="{link}"><strong><xsl:value-of select="title"/></strong></a>
      <xsl:text> - </xsl:text>
      <strong><xsl:value-of select="date"/></strong>
      <xsl:text> - </xsl:text>
      <xsl:value-of select="content"/>
     </li>
    </xsl:template>
    
    <xsl:template match="statuscolumn">
     <h2><xsl:text>Status</xsl:text></h2>
     <ul>
      <xsl:apply-templates select="project"/>
     </ul>
    </xsl:template>
  
    <xsl:template match="project">
     <li>
      <a href="{link}"><strong><xsl:value-of select="title"/></strong></a>
      <ul>
       <xsl:apply-templates select="release"/>
      </ul>
     </li>
    </xsl:template>
    
    <xsl:template match="release">
     <li>
      <strong><xsl:value-of select="version"/></strong>
      <xsl:text> - </xsl:text>
      <strong><xsl:value-of select="status"/></strong>
      <xsl:text> - </xsl:text>
      <xsl:value-of select="comment"/>
     </li>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  1.1                  xml-cocoon/samples/sql/database-page.xml
  
  Index: database-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <?cocoon-process type="sql"?>
  <?cocoon-format type="text/xml"?>
  
  <page>
  
   <connectiondefs>
    <connection name="foo_connection">
     <driver>org.gjt.mm.mysql.Driver</driver>
     <dburl>jdbc:mysql://mysql.example.com/foo_database</dburl>
     <username>foo_user</username>
     <password>foo_password</password>
    </connection>
   </connectiondefs> 
   
   <query connection="foo_connection">
    select name,number,message from foo_table order by name
   </query>
   
  </page>
  
  
  
  1.1                  xml-cocoon/samples/vml/hello-page-vml.xsl
  
  Index: hello-page-vml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by Theodore B. Achacoso, MD 991122 ted@groupserve.com -->
  
  <!-- 
      The code is based on Motorola's VoxML (Version 1.2) implementation of
      the emerging VoiceXML standard (version 0.9 as of 17 August '99).
      Foremost is the absence of <form></form> tags that delineate input. That
      said, when this file is rendered in Motorola's Mobile ADK simulator
      (MADK, version 1 beta 4 this November) the interaction looks like this:
      
      Computer: Hello world! This is my first voice enabled cocoon page.
      
      If user says "repeat" then the computer repeats the prompt.
      If the user says "goodbye" then the computer says "Goodbye" and ends the
      session.
  -->
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
  
    <xsl:template match="page">
     <xsl:pi name="cocoon-format">type="text/xml"</xsl:pi>
      <DIALOG>
       <STEP NAME="init">
        <PROMPT><xsl:apply-templates/></PROMPT>
        <INPUT TYPE="OPTIONLIST">
         <OPTION NEXT="#init">repeat</OPTION>
         <OPTION NEXT="#goodbye">goodbye</OPTION>
        </INPUT>
       </STEP>
       <STEP NAME="goodbye">
         <PROMPT>Goodbye</PROMPT>
         <INPUT TYPE="NONE" NEXT="#end"/>
       </STEP>
      </DIALOG>
    </xsl:template>
  
    <xsl:template match="title">
     <!-- ignore -->
    </xsl:template>
  
    <xsl:template match="paragraph">
     <xsl:apply-templates/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.1                  xml-cocoon/samples/vml/hello-page.xml
  
  Index: hello-page.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="hello.page.vml.xsl" type="text/xsl"?>
  <?cocoon-process type="xslt"?>
  
  <!-- Written by Theodore B. Achacoso <ted@groupserve.com> -->
  
  <page>
   <title>Hello</title>
   <content>
    <paragraph>This is my first voice enabled Cocoon page!</paragraph>
   </content>
  </page>
  
  
  1.1                  xml-cocoon/samples/wap/example-portfolio.xml
  
  Index: example-portfolio.xml
  ===================================================================
  <?xml version="1.0"?>
  <?xml-stylesheet href="portfolio.html.xsl" type="text/xsl"?>
  <?xml-stylesheet href="portfolio.wml.xsl" type="text/xsl" media="wap"?>
  <?cocoon-process type="xslt"?>
  
  <!-- Written by Stefano Mazzocchi "stefano@apache.org" -->
  
  <!-- Let us suppose this page has been dynamically generated  -->
  <!-- against a stock quotes database.                         -->
  
  <portfolio>
   <total>122786</total>
   <variations>
    <!-- these are not calculated, only to show off -->
    <day rate="-">0.23</day>
    <week rate="+">1.82</week>
    <month rate="+">1.32</month>
    <ever rate="+">45.00</ever>
   </variations>
   <stocks company="Macrosoft" url="http://www.macrosoft.com">
    <quotes>300</quotes>
    <value>120.42</value>
    <total>36126.00</total>
    <variations>
     <day rate="-">0.04</day>
     <week rate="+">0.49</week>
     <month rate="-">3.89</month>
     <ever rate="+">459.58</ever>
    </variations>
   </stocks>
   <stocks company="HAL" url="http://www.hal.com">
    <quotes>1000</quotes>
    <value>47.34</value>
    <total>47340.00</total>
    <variations>
     <day rate="+">0.38</day>
     <week rate="+">0.59</week>
     <month rate="-">1.34</month>
     <ever rate="-">34.53</ever>
    </variations>
   </stocks>
   <stocks company="Riskape" url="http://www.riskape.com">
    <quotes>130</quotes>
    <value>85.43</value>
    <total>11105.00</total>
    <variations>
     <day rate="-">1.34</day>
     <week rate="-">10.49</week>
     <month rate="+">4.89</month>
     <ever rate="+">50.58</ever>
    </variations>
   </stocks>
   <stocks company="Moon" url="http://www.moon.com">
    <quotes>500</quotes>
    <value>56.43</value>
    <total>28215.00</total>
    <variations>
     <day rate="+">0.44</day>
     <week rate="+">2.38</week>
     <month rate="-">0.2</month>
     <ever rate="+">87.03</ever>
    </variations>
   </stocks>
  
  <note>If loading this page takes a while, you're probably using Netscape
  Navigator which is very slow at rendering the multiple nested tables
  used in this page. Try Mozilla and feel the power of the new rendering
  engine, instead of thinking that Cocoon is slow :)</note>
  
  </portfolio>
  
  
  1.1                  xml-cocoon/samples/wap/portfolio-html.xsl
  
  Index: portfolio-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by Stefano Mazzocchi "stefano@apache.org" -->
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
  
    <xsl:template match="portfolio">
     <xsl:pi name="cocoon-format">type="text/html"</xsl:pi>
     <html>
  
     <head>
      <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"/>
      <meta NAME="Author" CONTENT="Cocoon"/>
      <title>Portfolio</title>
     </head>
  
     <body BGCOLOR="#FFFFFF">
      <table border="0" bgcolor="#000000" cellspacing="0" cellpadding="0">
       <tr>
        <td>
         <table border="0" width="100%" cellspacing="2" cellpadding="5">
          <tr>
           <td bgcolor="#F0F0F0">
            <table border="0" width="100%" cellspacing="0" cellpadding="3">
             <tr>
              <td width="100%" align="center">
               <table border="0" width="100%" cellspacing="10">
                <tr>
                 <td valign="top" width="40%">
                  <table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
                   <tr>
                    <td width="100%">
                     <table border="0" cellpadding="4" width="933">
                      <tr>
                       <td bgcolor="#C0C0C0" align="right" colspan="2">
                        <strong><big><big>Portfolio</big></big></strong>
                       </td>
                      </tr>
                      <tr>
                       <td bgcolor="#FFFFFF" align="center">
                        <strong><big><big>
                         <xsl:value-of select="total"/>
                         <xsl:text>$ (</xsl:text>
                         <xsl:value-of select="variations/day/@rate"/>
                         <xsl:value-of select="variations/day"/>
                         <xsl:text>%)</xsl:text>
                        </big></big></strong>
                       </td>
                       <td bgcolor="#FFFFFF" align="center">
                        <table border="0" width="100%" cellspacing="10">
                         <xsl:apply-templates select="stocks"/>
                        </table>
                       </td>
                      </tr>
                     </table>
                    </td>
                   </tr>
                  </table>
                 </td>
                </tr>
               </table>
              </td>
             </tr>
            </table>
           </td>
          </tr>
         </table>
        </td>
       </tr>
      </table>
      <xsl:apply-templates select="note"/>    
     </body>
     </html>
    </xsl:template>
    
    <xsl:template match="stocks">
     <tr>
      <td valign="top">
       <table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
        <tr>
         <td width="100%">
          <table border="0" cellpadding="4" width="100%">
           <tr>
            <td bgcolor="#C0C0C0" align="left" colspan="3">
              <a href="{@url}">
               <strong><big>
                <xsl:value-of select="@company"/>
               </big></strong>
              </a>
            </td>
           </tr>
           <tr>
            <td bgcolor="#FFFFFF" align="center">
             <xsl:value-of select="quotes"/>
             <xsl:text> quotes</xsl:text>
            </td>
            <td bgcolor="#FFFFFF" align="center">
             <font color="#0000FF"><big>
              <xsl:value-of select="value"/>
              <xsl:text>$</xsl:text>
             </big></font>
            </td>
            <td bgcolor="#FFFFFF" align="center">
             <big>
              <xsl:value-of select="variations/day/@rate"/>
              <xsl:value-of select="variations/day"/>
              <xsl:text>%</xsl:text>
             </big>
            </td>
           </tr>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </xsl:template>
    
    <xsl:template match="note">
     <p>
      <xsl:apply-templates/>
     </p>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  1.1                  xml-cocoon/samples/wap/portfolio-wml.xsl
  
  Index: portfolio-wml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by Stefano Mazzocchi "stefano@apache.org" -->
  
  <xsl:stylesheet 
  	xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
  	xmlns="http://www.wapforum.org/DTD/wml_1.1.xml"
  	result-ns="http://www.wapforum.org/DTD/wml_1.1.xml">
  
   <xsl:template match="portfolio">
    <xsl:pi name="cocoon-format">type="text/wml"</xsl:pi>
  
    <wml>
     <card id="index" title="Your Portfolio">
      <p align="center">
       <a href="#value">Value</a><br/>
       <a href="#stocks">Stocks</a><br/>
      </p>
      <do type="accept" label="About">
       <go href="#About"/>
      </do>
     </card>
  
     <card id="about" title="About">
      <onevent type="ontimer">
       <prev/>
      </onevent>
      <timer value="25"/>
      <p align="center">
       <br/>
       <br/>
       <small>
        Copyright&#xA9; 1999<br/>
        Apache Software Foundation.<br/>
        All rights reserved.
       </small>
      </p>
     </card>   
     
     <card id="value" title="Portfolio Value">
      <p>
       Total value: <b>$$<xsl:value-of select="total"/></b><br/>
       <small>(<b><xsl:value-of select="variations/day/@rate"/><xsl:value-of select="variations/day"/>&#x25;</b> from yesterday)</small><br/>
       <small>(<b><xsl:value-of select="variations/week/@rate"/><xsl:value-of select="variations/week"/>&#x25;</b> from last week)</small><br/>
       <small>(<b><xsl:value-of select="variations/month/@rate"/><xsl:value-of select="variations/month"/>&#x25;</b> from last month)</small><br/>
       <small>(<b><xsl:value-of select="variations/ever/@rate"/><xsl:value-of select="variations/ever"/>&#x25;</b> ever)</small><br/>
      </p>
  	<do type="prev" label="Back"> 
  	 <prev/> 
  	</do> 
     </card>
     
     <card id="stocks" title="Your Current Stocks">
      <p align="center">
       <xsl:for-each select="stocks">
        <a href="#{@company}"><xsl:value-of select="@company"/></a><br/>
       </xsl:for-each>
      </p>
  	<do type="prev" label="Back"> 
  	 <prev/> 
  	</do> 
     </card>
     
     <xsl:apply-templates select="stocks"/>
    </wml>
   </xsl:template>
   
   <xsl:template match="stocks">
    <card id="{@company}" title="{@company}">
     <p>
      Quotes: <xsl:value-of select="quotes"/>
      <br/>
      Value: <xsl:value-of select="value"/>$$<br/>
     	<small>(<b><xsl:value-of select="variations/day/@rate"/><xsl:value-of select="variations/day"/>&#x25;</b> from yesterday)</small><br/>
     	<small>(<b><xsl:value-of select="variations/week/@rate"/><xsl:value-of select="variations/week"/>&#x25;</b> from last week)</small><br/>
     	<small>(<b><xsl:value-of select="variations/month/@rate"/><xsl:value-of select="variations/month"/>&#x25;</b> from last month)</small><br/>
     	<small>(<b><xsl:value-of select="variations/ever/@rate"/><xsl:value-of select="variations/ever"/>&#x25;</b> ever)</small><br/>
     </p>
     <do type="prev" label="Back"> 
  	<prev/> 
     </do> 
    </card>
   </xsl:template>
  </xsl:stylesheet>
  
  
  1.2       +30 -36    xml-cocoon/samples/xsp/view-source.xml
  
  Index: view-source.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/samples/xsp/view-source.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- view-source.xml	1999/11/20 01:18:41	1.1
  +++ view-source.xml	1999/11/30 16:30:02	1.2
  @@ -1,13 +1,13 @@
   <?xml version="1.0"?>
  -
   <?cocoon-process type="xsp"?>
  +
  +<!-- Written by Ricardo Rocha <rrocha@plenix.org> -->
  +
  +<!-- A quick'n'dirty XML colorizer -->
   
  -<xsp:page
  -  language="java"
  -  xmlns:xsp="http://apache.org/DTD/XSP/Layer1"
  ->
  -  <!-- A quick'n'dirty XML colorizer -->
  -  <xsp:logic>
  +<xsp:page language="java" xmlns:xsp="http://apache.org/DTD/XSP/Layer1">
  +
  +  <xsp:logic><![CDATA[
       private static final String ATTR_NAME_COLOR = "brown";
       private static final String ATTR_VALUE_COLOR = "magenta";
       private static final String COMMENT_COLOR = "gray";
  @@ -24,7 +24,6 @@
       protected Element colorize(Node node, Document factory) {
         Element element = factory.createElement("pre");
         DocumentFragment fragment = factory.createDocumentFragment();
  -
         element.appendChild(doColorize(node, factory, 0));
         return element;
       }
  @@ -39,7 +38,7 @@
           case Node.CDATA_SECTION_NODE:
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode("&lt;"));
  +          result.appendChild(factory.createTextNode("<"));
             fragment.appendChild(result);
   
             result = factory.createElement("font");
  @@ -60,7 +59,7 @@
   
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode("&lt;"));
  +          result.appendChild(factory.createTextNode("<"));
             fragment.appendChild(result);
   
             break;
  @@ -69,7 +68,7 @@
     
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode("&lt;"));
  +          result.appendChild(factory.createTextNode("<"));
             fragment.appendChild(result);
   
             String tagColor = ELEMENT_COLOR;
  @@ -77,11 +76,9 @@
   
             if (tagName.startsWith("xsp:")) {
               tagColor = XSP_ELEMENT_COLOR;
  -          }
  -          else if (tagName.startsWith("xsl:")) {
  +          } else if (tagName.startsWith("xsl:")) {
               tagColor = XSL_ELEMENT_COLOR;
  -          }
  -          else if (tagName.indexOf(':') &gt;= 0) {
  +          } else if (tagName.indexOf(':') >= 0) {
               tagColor = CUSTOM_ELEMENT_COLOR;
             }
   
  @@ -93,7 +90,7 @@
             NamedNodeMap attributes = element.getAttributes();
             int attributeCount = attributes.getLength();
     
  -          for (int i = 0; i &lt; attributeCount; i++) {
  +          for (int i = 0; i < attributeCount; i++) {
               Attr attribute = (Attr) attributes.item(i);
     
               result = factory.createElement("font");
  @@ -116,7 +113,9 @@
     
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode((childCount == 0 ? "/" : "") + "&gt;"));
  +          result.appendChild(
  +            factory.createTextNode((childCount == 0 ? "/" : "") + ">")
  +          );
             fragment.appendChild(result);
   
             String textColor = TEXT_COLOR;
  @@ -126,17 +125,17 @@
             result = factory.createElement("font");
             result.setAttribute("color", textColor);
   
  -          for (int i = 0; i &lt; childCount; i++) {
  +          for (int i = 0; i < childCount; i++) {
               result.appendChild(
                 doColorize(nodeList.item(i), factory, level + 1)
               );
             }
             fragment.appendChild(result);
   
  -          if (childCount &gt; 0) {
  +          if (childCount > 0) {
               result = factory.createElement("font");
               result.setAttribute("color", DELIMITER_COLOR);
  -            result.appendChild(factory.createTextNode("&lt;/"));
  +            result.appendChild(factory.createTextNode("</"));
               fragment.appendChild(result);
   
               result = factory.createElement("font");
  @@ -146,7 +145,7 @@
   
               result = factory.createElement("font");
               result.setAttribute("color", DELIMITER_COLOR);
  -            result.appendChild(factory.createTextNode("&gt;"));
  +            result.appendChild(factory.createTextNode(">"));
               fragment.appendChild(result);
             }
     
  @@ -157,7 +156,7 @@
             NodeList nodeList = node.getChildNodes();
             int childCount = nodeList.getLength();
     
  -          for (int i = 0; i &lt; childCount; i++) {
  +          for (int i = 0; i < childCount; i++) {
               fragment.appendChild(
                 doColorize(nodeList.item(i), factory, level + 1)
               );
  @@ -171,9 +170,7 @@
   
             result.appendChild(
               factory.createTextNode(
  -              "&lt;!-- " +
  -              node.getNodeValue() +
  -              " --&gt;"
  +              "<!-- " + node.getNodeValue() + " -->;"
               )
             );
   
  @@ -185,7 +182,7 @@
   
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode("&lt;?"));
  +          result.appendChild(factory.createTextNode("<?"));
             fragment.appendChild(result);
     
             result = factory.createElement("font");
  @@ -200,14 +197,16 @@
     
             result = factory.createElement("font");
             result.setAttribute("color", DELIMITER_COLOR);
  -          result.appendChild(factory.createTextNode("?&gt;\n"));
  +          result.appendChild(factory.createTextNode("?>\n"));
             fragment.appendChild(result);
   
             break;
           case Node.ENTITY_REFERENCE_NODE:
             result = factory.createElement("font");
             result.setAttribute("color", ENTITY_REF_COLOR);
  -          result.appendChild(factory.createTextNode("&lt;" + node.getNodeValue() + ";"));
  +          result.appendChild(
  +            factory.createTextNode("<" + node.getNodeValue() + ";")
  +          );
             fragment.appendChild(result);
   
             break;
  @@ -220,17 +219,17 @@
   
         return fragment;
       }
  -  </xsp:logic>
  +  ]]></xsp:logic>
   
     <html>
       <head>
         <title>Source Code</title>
       </head>
   
  -    <!-- Let's do it -->
       <body>
         <xsp:logic>
           String filename = request.getParameter("filename");
  +        String filepath = XSPUtil.relativeFilename(filename, request);
         </xsp:logic>
     
         <h3 style="color:navy; text-align: center">
  @@ -239,14 +238,9 @@
     
         <xsp:expr>
           this.colorize(
  -            this.xspParser.parse (
  -              new FileReader(XSPUtil.relativeFilename(filename, request)),
  -              filename
  -            ),
  -          document
  +         this.xspParser.parse(new FileReader(filepath, filename), document
           )
         </xsp:expr>
  -      <!-- That's all folks -->
       </body>
     </html>
   </xsp:page>
  
  
  
  1.1                  xml-cocoon/src/Manifest.mf
  
  Index: Manifest.mf
  ===================================================================
  Manifest-Version: 1.0
  Main-Class: org.apache.cocoon.Cocoon
  
  
  
  1.4       +3 -4      xml-cocoon/src/org/apache/cocoon/Defaults.java
  
  Index: Defaults.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Defaults.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Defaults.java	1999/11/09 02:29:08	1.3
  +++ Defaults.java	1999/11/30 16:30:03	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: Defaults.java,v 1.3 1999/11/09 02:29:08 dirkx Exp $ -- 
  +/*-- $Id: Defaults.java,v 1.4 1999/11/30 16:30:03 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -54,7 +54,7 @@
    * The Cocoon strings.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:29:08 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:03 $
    */
   
   public interface Defaults {
  @@ -71,7 +71,7 @@
       public static final String STATUS_URL_DEFAULT = "/Cocoon.xml";
    	
       public static final String PARSER_PROP = "parser";
  -    public static final String PARSER_DEFAULT = "org.apache.cocoon.parser.OpenXMLParser";
  +    public static final String PARSER_DEFAULT = "org.apache.cocoon.parser.XercesParser";
       public static final String CACHE_PROP = "cache";
       public static final String CACHE_DEFAULT = "org.apache.cocoon.cache.CocoonCache";
       public static final String STORE_PROP = "store";
  @@ -91,5 +91,4 @@
       
       public static final boolean DEBUG = false;
       public static final boolean VERBOSE = true;
  -
   }
  
  
  
  1.4       +10 -11    xml-cocoon/src/org/apache/cocoon/Engine.java
  
  Index: Engine.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Engine.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Engine.java	1999/11/09 02:29:11	1.3
  +++ Engine.java	1999/11/30 16:30:03	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: Engine.java,v 1.3 1999/11/09 02:29:11 dirkx Exp $ -- 
  +/*-- $Id: Engine.java,v 1.4 1999/11/30 16:30:03 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -71,7 +71,7 @@
    * This class implements the engine that does all the document processing.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:29:11 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:03 $
    */
   
   public class Engine implements Defaults {
  @@ -104,7 +104,7 @@
           manager.setRole("factory", manager);
   
           // Create the parser and register it
  -        parser = (Parser) manager.create((String) configurations.get(PARSER_PROP, PARSER_DEFAULT));
  +        parser = (Parser) manager.create((String) configurations.get(PARSER_PROP, PARSER_DEFAULT), configurations.getConfigurations(PARSER_PROP));
           manager.setRole("parser", parser);
   
           // Create the store and register it
  @@ -202,13 +202,12 @@
               environment.put("request", request);
   
               // process the document through the document processors
  -            try {
  -                while (true) {
  -                    Processor processor = processors.getProcessor(document);
  -                    document = processor.process(document, environment);
  -                    page.setChangeable(processor);
  -                }
  -            } catch (RuntimeException processingDone) {}
  +            while (true) {
  +                Processor processor = processors.getProcessor(document);
  +                if (processor == null) break;
  +                document = processor.process(document, environment);
  +                page.setChangeable(processor);
  +            }
               
               // get the right formatter for the page
               Formatter formatter = formatters.getFormatter(document);
  @@ -257,7 +256,7 @@
           // cache the created page.
           cache.setPage(page, request);
       }
  -
  +    
       /**
        * Returns the value of the request flag
        */
  
  
  
  1.4       +3 -3      xml-cocoon/src/org/apache/cocoon/Frontend.java
  
  Index: Frontend.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Frontend.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Frontend.java	1999/11/09 02:29:16	1.3
  +++ Frontend.java	1999/11/30 16:30:03	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: Frontend.java,v 1.3 1999/11/09 02:29:16 dirkx Exp $ -- 
  +/*-- $Id: Frontend.java,v 1.4 1999/11/30 16:30:03 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -64,7 +64,7 @@
    * smart publishing behavior. (ECS may be used instead).
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:29:16 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:03 $
    */
   
   public class Frontend {
  @@ -141,7 +141,7 @@
               " </center>" +
               " <p align=\"center\">" +
               "   <font size=\"-1\">" +
  -            "   Copyright (c) " + YEAR + " <a href=\"http://java.apache.org\">The Java Apache Project</a>.<br>" +
  +            "   Copyright (c) " + YEAR + " <a href=\"http://xml.apache.org\">The Apache XML Project</a>.<br>" +
               "   All rights reserved. " +
               "  </font>" +
               " </p>" +
  
  
  
  1.2       +33 -57    xml-cocoon/src/org/apache/cocoon/cocoon.properties
  
  Index: cocoon.properties
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/cocoon.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cocoon.properties	1999/11/09 01:51:12	1.1
  +++ cocoon.properties	1999/11/30 16:30:03	1.2
  @@ -8,23 +8,25 @@
   selvservlet.uri = /Cocoon.xml
   
   ##########################################
  -# DOM Parsers                            #
  +# XML Parsers                            #
   ##########################################
   
  -# OpenXML parser (http://www.openxml.org/)
  -parser = org.apache.cocoon.parser.OpenXMLParser
  +# Apache Xerces 1.0.1+ Parser (http://xml.apache.com/) [validating]
  +parser = org.apache.cocoon.parser.XercesParser
   
  -# IBM XML4J Parser (http://www.alphaworks.ibm.com/)
  -#parser = org.apache.cocoon.parser.IBMXMLParser
  -
  -# SUN ProjectX Parser (http://developer.java.sun.com/)
  +# SUN ProjectX TR2 Parser (http://developer.java.sun.com/) [validating]
   #parser = org.apache.cocoon.parser.SunXMLParser
  +
  +# OpenXML 1.1+ parser (http://www.openxml.org/)
  +#parser = org.apache.cocoon.parser.OpenXMLParser
   
  -# Oracle XML Parser Version 2 (http://www.oracle.com/)
  -#parser = org.apache.cocoon.parser.OracleXMLParser
  +# Indicate whether the XML file should be validated or not
  +# this is turned off by default for faster operation.
  +# NOTE: not all parsers support this feature
  +parser.validate = false
   
   ##########################################
  -# Document Producers                     #
  +# XML Producers                          #
   ##########################################
   
   # For example, if you want to produce your XML template reading it from
  @@ -48,13 +50,13 @@
   producer.default = file
   
   ##########################################
  -# DOM Processors                         #
  +# XML Processors                         #
   ##########################################
   
   # These are used when the <?cocoon-process type="xxx"?> PI is present.
   # If no PI of that type is present, no processing is performed.
   # The syntax for this is
  -#   printer.type.xxx = full.class.name
  +#   processor.type.xxx = full.class.name
   
   # Dynamic Content Processor (DCP)
   processor.type.dcp = org.apache.cocoon.processor.dcp.DCPProcessor
  @@ -62,66 +64,41 @@
   # SQL Processor
   processor.type.sql = org.apache.cocoon.processor.sql.SQLProcessor
   
  -# XSL:P processor (http://xslp.kvisco.com/)
  -processor.type.xslt = org.apache.cocoon.processor.xslt.XSLPProcessor
  +# Apache Xalan processor (http://xml.apache.org/)
  +processor.type.xslt = org.apache.cocoon.processor.xslt.XalanProcessor
   
  -# Lotus XSL processor (http://www.alphaworks.ibm.com/)
  -#processor.type.xslt = org.apache.cocoon.processor.xslt.LotusXSLProcessor
  +# James Clark's XT processor (http://www.jclark.com/)
  +#processor.type.xslt = org.apache.cocoon.processor.xslt.XTProcessor
   
  -# Oracle XSL processor (http://www.oracle.com/)
  -# Note: this processor is found in the same jar of the Oracle
  -# XML parser and will not work with other parsers.    
  -#processor.type.xslt = org.apache.cocoon.processor.xslt.OracleXSLProcessor
  +# Keith Visco's XSL:P processor (http://xslp.kvisco.com/)
  +#processor.type.xslt = org.apache.cocoon.processor.xslt.XSLPProcessor
   
   ##########################################
  -# DOM Formatters                         #
  +# XML Formatters                         #
   ##########################################
   
   # These are used when the <?cocoon-format type="xxx/yyy"?> PI is present
   # The syntax for this is
  -#   printer.type.xxx/yyy = full.class.name
  -
  -# OpenXML formatters
  -#formatter.type.text/xml   = org.apache.cocoon.formatter.xml.OpenXMLXMLFormatter
  -#formatter.type.text/wml   = org.apache.cocoon.formatter.wml.OpenXMLWMLFormatter
  -#formatter.type.text/html  = org.apache.cocoon.formatter.html.OpenXMLHTMLFormatter
  -#formatter.type.text/xhtml = org.apache.cocoon.formatter.xhtml.OpenXMLXHTMLFormatter
  -
  -# XSL:P formatters
  -formatter.type.text/xml    = org.apache.cocoon.formatter.xml.XSLPXMLFormatter
  -formatter.type.text/wml    = org.apache.cocoon.formatter.wml.XSLPWMLFormatter
  -formatter.type.text/html   = org.apache.cocoon.formatter.html.XSLPHTMLFormatter
  -formatter.type.text/xhtml  = org.apache.cocoon.formatter.xhtml.XSLPXHTMLFormatter
  -
  -# Fop formatter
  -formatter.type.text/xslfo  = org.apache.cocoon.formatter.pdf.FOPFormatter
  +#   formatter.type.xxx/yyy = full.class.name
   
  -# XSP formatter
  -formatter.type.text/xsp    = org.apache.cocoon.formatter.java.XSPFormatter
  +formatter.type.text/xml    = org.apache.cocoon.formatter.XMLFormatter
  +formatter.type.text/wml    = org.apache.cocoon.formatter.WMLFormatter
  +formatter.type.text/html   = org.apache.cocoon.formatter.HTMLFormatter
  +formatter.type.text/plain  = org.apache.cocoon.formatter.TextFormatter
  +formatter.type.text/xslfo  = org.apache.cocoon.formatter.FO2PDFFormatter
  +formatter.type.model/vrml  = org.apache.cocoon.formatter.VRMLFormatter
   
  -# NRG formatter
  -formatter.type.image/nrg   = org.apache.cocoon.formatter.image.NRGFormatter
  -
   # This is used when no <?cocoon?> PI is present to indicate 
   # which MIME type to associate to the document.
   # NOTE: this type must present in the above map.
   formatter.default = text/html
  -
  -# NOTE: the configurations below are used by the OpenXML formatters only
   
  -# Specifies the stream format
  -#  Valid options are:
  -#   - normal (default)
  +# Specifies the text stream format. (used only meaningful for text formatters)
  +# Supported styles are 
  +#   - normal
   #   - compact
  -#   - pretty
  -formatter.style = pretty
  +formatter.style = normal
       
  -# The numbers of characters at which to wrap lines
  -formatter.line_width = 120
  -    
  -# The number of spaces to indent when descending the DOM tree
  -formatter.indent_spaces = 1
  -
   ##########################################
   # Cache Managers                         #
   ##########################################
  @@ -171,8 +148,7 @@
   
   # NOTE: numbers indicate the search order. This is very important since
   # some words may be found in more than one browser description. (MSIE is
  -# presented as "Mozilla/4.0 (Compatible; MSIE 4.01; ..." which tells you A LOT
  -# about M$ attitude to screw things up for their own pleasure)
  +# presented as "Mozilla/4.0 (Compatible; MSIE 4.01; ...")
   #
   # for example, the "explorer=MSIE" tag indicates that the XSL stylesheet
   # associated to the media type "explorer" should be mapped to those browsers
  
  
  
  1.4       +3 -3      xml-cocoon/src/org/apache/cocoon/cache/CocoonCache.java
  
  Index: CocoonCache.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/cache/CocoonCache.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CocoonCache.java	1999/11/09 02:29:28	1.3
  +++ CocoonCache.java	1999/11/30 16:30:04	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: CocoonCache.java,v 1.3 1999/11/09 02:29:28 dirkx Exp $ -- 
  +/*-- $Id: CocoonCache.java,v 1.4 1999/11/30 16:30:04 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -62,7 +62,7 @@
    * statically and dynamically generated.
    *
    * @author <a href="stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $Date: 1999/11/09 02:29:28 $
  + * @version $Revision: 1.4 $Date: 1999/11/30 16:30:04 $
    */
   public class CocoonCache implements Cache, Status {
   
  @@ -110,6 +110,6 @@
       }
   
       public String getStatus() {
  -        return "<b>Cocoon Dynamic Cache System</b>";
  +        return "Cocoon Dynamic Cache System";
       }
   }
  
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/AbstractFormatter.java
  
  Index: AbstractFormatter.java
  ===================================================================
  /*-- $Id: AbstractFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.util.*;
  import org.apache.xml.serialize.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public abstract class AbstractFormatter implements Formatter {
  
      public OutputFormat getFormat(Dictionary p) {
          String style = (String) p.get("style");
          OutputFormat format = new OutputFormat();
          if ((style != null) && (style.equals("compact"))) {
              format.setIndenting(false);
          } else {
              format.setIndenting(true);
              format.setIndent(1);
              format.setLineWidth(120);
          }
          return format;
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/FO2PDFFormatter.java
  
  Index: FO2PDFFormatter.java
  ===================================================================
  /*-- $Id: FO2PDFFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.fop.apps.*;
  import org.apache.cocoon.formatter.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * This class wraps around FOP classes to perform XSL:FO to PDF formatting.
   *
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class FO2PDFFormatter implements Formatter, Status {
   
      public void format(Document document, Writer writer, Dictionary parameters) throws Exception {
          Driver driver = new Driver();
          driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", org.apache.fop.apps.Version.getVersion());
          driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
          driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
          driver.setWriter(new PrintWriter(writer));
          driver.buildFOTree(document);
          driver.format();
          driver.render();
      }
      
      public String getMIMEType() {
          return "application/pdf";
      }
      
      public String getStatus() {
          return org.apache.fop.apps.Version.getVersion() + " formatter";
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/HTMLFormatter.java
  
  Index: HTMLFormatter.java
  ===================================================================
  /*-- $Id: HTMLFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xml.serialize.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class HTMLFormatter extends AbstractFormatter implements Status {
  
      public void format(Document document, Writer writer, Dictionary p) throws Exception {
          OutputFormat format = super.getFormat(p);
          format.setMethod(OutputFormat.METHOD_HTML);
          format.setOmitXMLDeclaration(true);
          format.setPreserveSpace(true);
          format.setDoctype("-//W3C//DTD HTML 4.0//EN", "http://www.w3.org/TR/REC-html40/strict.dtd");
          format.setVersion("4.0");
          Serializer serializer = Serializer.makeSerializer(writer, format);
          serializer.serialize(document);
      }
  
      public String getMIMEType() {
          return "text/html";
      }
      
      public String getStatus() {
          return "Apache HTML Formatter";
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/TextFormatter.java
  
  Index: TextFormatter.java
  ===================================================================
  /*-- $Id: TextFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xml.serialize.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class TextFormatter extends AbstractFormatter implements Status {
  
      public void format(Document document, Writer writer, Dictionary p) throws Exception {
          OutputFormat format = super.getFormat(p);
          format.setMethod(OutputFormat.METHOD_TEXT);
          format.setOmitXMLDeclaration(true);
          format.setPreserveSpace(true);
          Serializer serializer = Serializer.makeSerializer(writer, format);
          serializer.serialize(document);
      }
  
      public String getMIMEType() {
          return "text/plain";
      }
      
      public String getStatus() {
          return "Apache Text Formatter";
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/VRMLFormatter.java
  
  Index: VRMLFormatter.java
  ===================================================================
  /*-- $Id: VRMLFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xml.serialize.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class VRMLFormatter extends AbstractFormatter implements Status {
  
      public void format(Document document, Writer writer, Dictionary p) throws Exception {
          OutputFormat format = super.getFormat(p);
          format.setMethod(OutputFormat.METHOD_TEXT);
          format.setOmitXMLDeclaration(true);
          format.setPreserveSpace(true);
          Serializer serializer = Serializer.makeSerializer(writer, format);
          serializer.serialize(document);
      }
  
      public String getMIMEType() {
          return "model/vrml";
      }
      
      public String getStatus() {
          return "Apache VRML Formatter";
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/WMLFormatter.java
  
  Index: WMLFormatter.java
  ===================================================================
  /*-- $Id: WMLFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
   
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xml.serialize.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class WMLFormatter extends AbstractFormatter implements Status {
  
      public void format(Document document, Writer writer, Dictionary p) throws Exception {
          OutputFormat format = super.getFormat(p);
          format.setMethod(OutputFormat.METHOD_HTML);
          format.setOmitXMLDeclaration(false);
          format.setPreserveSpace(false);
          format.setDoctype("-//WAPFORUM//DTD WML 1.1//EN", "http://www.wapforum.org/DTD/wml_1.1.xml");
          format.setVersion("1.1");
          Serializer serializer = Serializer.makeSerializer(writer, format);
          serializer.serialize(document);
      }
      
      public String getMIMEType() {
          return "text/vnd.wap.wml";
      }
      
      public String getStatus() {
          return "Apache WML Formatter";
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/formatter/XMLFormatter.java
  
  Index: XMLFormatter.java
  ===================================================================
  /*-- $Id: XMLFormatter.java,v 1.1 1999/11/30 16:30:04 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.formatter;
  
  import java.io.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xml.serialize.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:04 $
   */
  
  public class XMLFormatter extends AbstractFormatter implements Status {
  
      public void format(Document document, Writer writer, Dictionary p) throws Exception {
          OutputFormat format = super.getFormat(p);
          format.setMethod(OutputFormat.METHOD_XML);
          format.setOmitXMLDeclaration(false);
          format.setPreserveSpace(true);
          format.setVersion("1.0");
          Serializer serializer = Serializer.makeSerializer(writer, format);
          serializer.serialize(document);
      }
  
      public String getMIMEType() {
          return "text/xml";
      }
      
      public String getStatus() {
          return "Apache XML Formatter";
      }
  }
  
  
  1.4       +3 -3      xml-cocoon/src/org/apache/cocoon/interpreter/java/JavaModule.java
  
  Index: JavaModule.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/interpreter/java/JavaModule.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JavaModule.java	1999/11/09 02:30:31	1.3
  +++ JavaModule.java	1999/11/30 16:30:08	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: JavaModule.java,v 1.3 1999/11/09 02:30:31 dirkx Exp $ -- 
  +/*-- $Id: JavaModule.java,v 1.4 1999/11/30 16:30:08 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -58,7 +58,7 @@
   
   /**
    * @author <a href="mailto:rrocha@plenix.org">Ricardo Rocha</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:31 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:08 $
    */
   
   public class JavaModule implements Module {
  @@ -66,7 +66,7 @@
       {},
       {Dictionary.class},
       {Dictionary.class, Node.class},
  -    {Node.class, Dictionary.class, org.openxml.x3p.ProcessContext.class},
  +    {Node.class, Dictionary.class},
       {Node.class},
     };
   
  
  
  
  1.4       +20 -9     xml-cocoon/src/org/apache/cocoon/parser/OpenXMLParser.java
  
  Index: OpenXMLParser.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/parser/OpenXMLParser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- OpenXMLParser.java	1999/11/09 02:30:33	1.3
  +++ OpenXMLParser.java	1999/11/30 16:30:08	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: OpenXMLParser.java,v 1.3 1999/11/09 02:30:33 dirkx Exp $ -- 
  +/*-- $Id: OpenXMLParser.java,v 1.4 1999/11/30 16:30:08 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -48,32 +48,43 @@
    Software Foundation, please see <http://www.apache.org/>.
    
    */
  + 
   package org.apache.cocoon.parser;
   
   import java.io.*;
   import org.w3c.dom.*;
  -import org.openxml.*;
  +import org.xml.sax.*;
  +import org.openxml.dom.*;
   import org.openxml.parser.*;
   import org.apache.cocoon.framework.*;
   
   /**
  - * This class implements an XML parser using the OpenXML parser.
  + * This class implements an XML parser using the OpenXML 1.1 parser.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:33 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:08 $
    */
   
  -public class OpenXMLParser extends AbstractActor implements Parser, Status {
  +public class OpenXMLParser extends AbstractParser implements Status {
   
  -    public Document parse(Reader in, String sourceURI) throws IOException {
  -    	return new XMLParser(in, sourceURI).parseDocument();
  +    /**
  +     * Creates a DOM tree parsing the given input source.
  +     */
  +    public Document parse(InputSource input) throws SAXException, IOException {
  +        XMLParser parser = new XMLParser();
  +        // parser.setEntityResolver(resolver);
  +        parser.parse(input);
  +        return parser.getDocument();
       }
       
  +    /**
  +     * Creates an empty DOM tree.
  +     */
       public Document createEmptyDocument() {
  -        return new XMLDocument();
  +        return new DocumentImpl();
       }
       
       public String getStatus() {
  -        return "<b>OpenXML Parser</b>";
  +        return "OpenXML 1.1 XML Parser";
       }
   }
  
  
  
  1.4       +7 -4      xml-cocoon/src/org/apache/cocoon/parser/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/parser/Parser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Parser.java	1999/11/09 02:30:35	1.3
  +++ Parser.java	1999/11/30 16:30:08	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: Parser.java,v 1.3 1999/11/09 02:30:35 dirkx Exp $ -- 
  +/*-- $Id: Parser.java,v 1.4 1999/11/30 16:30:08 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -48,10 +48,12 @@
    Software Foundation, please see <http://www.apache.org/>.
    
    */
  +
   package org.apache.cocoon.parser;
   
   import java.io.*;
   import org.w3c.dom.*;
  +import org.xml.sax.*;
   import org.apache.cocoon.framework.*;
   
   /**
  @@ -59,15 +61,16 @@
    * parsing capabilites in order to be used by Cocoon.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:35 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:08 $
    */
   
   public interface Parser extends Actor {
       
       /**
  -     * Creates a DOM tree parsing the given input stream.
  +     * Creates a DOM tree parsing the given input source and using the 
  +     * given entity resolver.
        */
  -    public Document parse(Reader in, String sourceURI) throws IOException;
  +    public Document parse(InputSource input) throws SAXException, IOException;
       
       /**
        * Creates an empty DOM tree.
  
  
  
  1.4       +29 -70    xml-cocoon/src/org/apache/cocoon/parser/SunXMLParser.java
  
  Index: SunXMLParser.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/parser/SunXMLParser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SunXMLParser.java	1999/11/09 02:30:36	1.3
  +++ SunXMLParser.java	1999/11/30 16:30:08	1.4
  @@ -1,91 +1,50 @@
  -/*-- $Id: SunXMLParser.java,v 1.3 1999/11/09 02:30:36 dirkx Exp $ -- 
  -
  - ============================================================================
  -                   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 "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/>.
  - 
  - */
   package org.apache.cocoon.parser;
   
   import java.io.*;
   import org.w3c.dom.*;
  -import com.sun.xml.tree.*;
   import org.xml.sax.*;
  +import com.sun.xml.tree.*;
  +import com.sun.xml.parser.*;
   import org.apache.cocoon.framework.*;
   
   /**
  - * This class implements an XML parser using the Sun ProjectX parser.
  - * Update to work with the 'Technology Release 1, Feb. 24, 1999'
  - * version of the Sun XML parser.
  + * This class implements an XML parser using the Sun ProjectX parser
  + * 'Technology Release 1'.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:36 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:08 $
    */
   
  -public class SunXMLParser extends AbstractActor implements Parser, Status {
  +public class SunXMLParser extends AbstractParser implements Status {
   
  -    XmlDocument factory;
  -    
  -    public SunXMLParser() {
  -        this.factory = new XmlDocument();
  -    }
  -    
  -    public Document parse(Reader in, String sourceURI) throws IOException {
  -        try  {
  -            return factory.createXmlDocument(new InputSource(in), false);
  -        } catch (SAXException e) {
  -            throw new IOException(e.getMessage());
  -        }
  +    /**
  +     * Creates a DOM tree parsing the given input source.
  +     */
  +    public Document parse(InputSource input) throws SAXException, IOException {
  +      	org.xml.sax.Parser parser;
  +        XmlDocumentBuilder builder;
  +
  +	    if (validate) {
  +		    parser = new com.sun.xml.parser.ValidatingParser(true);
  +	    } else {
  +		    parser = new com.sun.xml.parser.Parser();
  +		}
  +		
  +	    //parser.setEntityResolver(resolver);
  +	    builder = new XmlDocumentBuilder();
  +    	builder.setParser(parser);
  +    	parser.parse(input);
  +	    return builder.getDocument();
       }
       
  +    /**
  +     * Creates an empty DOM tree.
  +     */
       public Document createEmptyDocument() {
           return new XmlDocument();
       }
  -    
  +
       public String getStatus() {
  -        return "<b>Sun Java ProjectX XML Parser</b>";
  +        return "Sun ProjectX TR2 XML Parser";
       }
   }
  
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/parser/AbstractParser.java
  
  Index: AbstractParser.java
  ===================================================================
  /*-- $Id: AbstractParser.java,v 1.1 1999/11/30 16:30:08 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  
  package org.apache.cocoon.parser;
  
  import org.apache.cocoon.framework.*;
  
  /**
   * This class implements all the common methods used by the XML parsers.
   *
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:08 $
   */
  
  public abstract class AbstractParser extends AbstractActor implements Parser, Configurable {
      
      protected boolean validate;
      
      public void init(Configurations conf) {
          this.validate = "true".equals(((String) conf.get("validate")).toLowerCase()); 
      }
  }
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/parser/XercesParser.java
  
  Index: XercesParser.java
  ===================================================================
  /*-- $Id: XercesParser.java,v 1.1 1999/11/30 16:30:08 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  
  package org.apache.cocoon.parser;
  
  import java.io.*;
  import org.w3c.dom.*;
  import org.xml.sax.*;
  import org.apache.xerces.dom.*;
  import org.apache.xerces.parsers.*;
  import org.apache.xerces.framework.*;
  import org.apache.cocoon.framework.*;
  
  /**
   * This class implements an XML parser using the Apache Xerces XML parser.
   *
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:08 $
   */
  
  public class XercesParser extends AbstractParser implements Status {
  
      /**
       * Creates a DOM tree parsing the given input source.
       */
      public Document parse(InputSource input) throws SAXException, IOException {
          DOMParser parser = new DOMParser();
  	    // parser.setEntityResolver(resolver);
          parser.setFeature("http://xml.org/sax/features/validation", validate);
          parser.parse(input);
          return parser.getDocument();
      }        
      
      /**
       * Creates an empty DOM tree.
       */
      public Document createEmptyDocument() {
          return new DocumentImpl();
      }
  
      public String getStatus() {
          return Version.fVersion + " XML Parser";
      }
  }
  
  
  1.4       +7 -3      xml-cocoon/src/org/apache/cocoon/processor/ProcessorFactory.java
  
  Index: ProcessorFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/processor/ProcessorFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProcessorFactory.java	1999/11/09 02:30:42	1.3
  +++ ProcessorFactory.java	1999/11/30 16:30:09	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: ProcessorFactory.java,v 1.3 1999/11/09 02:30:42 dirkx Exp $ -- 
  +/*-- $Id: ProcessorFactory.java,v 1.4 1999/11/30 16:30:09 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -61,13 +61,15 @@
    * associated to the produced document.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:42 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:09 $
    */
   
   public class ProcessorFactory extends Router implements Defaults {
   
       public Processor getProcessor(Document document) throws Exception {
           String type = getType(document);
  +        if (type == null) return null;
  +        
           Processor processor = (Processor) objects.get(type);
           if (processor == null) throw new Exception("No processor for type \"" + type + "\"");
           return processor;
  @@ -75,12 +77,14 @@
   
       public String getType(Document document) {
       	ProcessingInstruction pi = Utils.getFirstPI(document, COCOON_PROCESS_PI, true);
  +        
       	if (pi != null) {
   	        Hashtable attributes = Utils.getPIPseudoAttributes(pi);
   	        String type = (String) attributes.get("type");
   	        if (type != null) return type;
           }
  -        throw new RuntimeException();
  +        
  +        return null;
       }
   
       public String getStatus() {
  
  
  
  1.4       +11 -5     xml-cocoon/src/org/apache/cocoon/processor/xslt/AbstractXSLTProcessor.java
  
  Index: AbstractXSLTProcessor.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/processor/xslt/AbstractXSLTProcessor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractXSLTProcessor.java	1999/11/09 02:30:50	1.3
  +++ AbstractXSLTProcessor.java	1999/11/30 16:30:09	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: AbstractXSLTProcessor.java,v 1.3 1999/11/09 02:30:50 dirkx Exp $ -- 
  +/*-- $Id: AbstractXSLTProcessor.java,v 1.4 1999/11/30 16:30:09 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -55,17 +55,20 @@
   import java.util.*;
   import org.w3c.dom.*;
   import javax.servlet.http.*;
  -import org.apache.cocoon.*;
   import org.apache.cocoon.store.*;
   import org.apache.cocoon.parser.*;
   import org.apache.cocoon.processor.*;
   import org.apache.cocoon.framework.*;
  +import org.xml.sax.InputSource;
  +import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.Utils;
  +import org.apache.cocoon.Defaults;
   
   /**
    * This class abstracts the XSL processor interface.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:50 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:09 $
    */
   
   public abstract class AbstractXSLTProcessor implements Actor, Processor, Status, Defaults {
  @@ -135,13 +138,16 @@
       }
   
       private Document getDocument(Object resource) throws Exception {
  +        InputSource input = new InputSource();
           if (resource instanceof File) {
  -            return this.parser.parse(new FileReader((File) resource), null);
  +            input.setCharacterStream(new FileReader((File) resource));
           } else if (resource instanceof URL) {
  -            return this.parser.parse(new InputStreamReader(((URL) resource).openStream()), null);
  +            input.setCharacterStream(new InputStreamReader(((URL) resource).openStream()));
           } else {
               throw new ProcessorException("Could not handle resource: " + resource);
           }
  +        
  +        return this.parser.parse(input);
       }
       
       private Hashtable getStylesheetsForBrowsers(Document document, String path) throws MalformedURLException {
  
  
  
  1.4       +6 -9      xml-cocoon/src/org/apache/cocoon/processor/xslt/XTProcessor.java
  
  Index: XTProcessor.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/processor/xslt/XTProcessor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XTProcessor.java	1999/11/09 02:30:52	1.3
  +++ XTProcessor.java	1999/11/30 16:30:09	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: XTProcessor.java,v 1.3 1999/11/09 02:30:52 dirkx Exp $ -- 
  +/*-- $Id: XTProcessor.java,v 1.4 1999/11/30 16:30:09 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -77,12 +77,9 @@
   
       public Document process(Document document, Dictionary parameters) throws Exception {
           try {
  -            Document result=parser.createEmptyDocument();
  -            
  -            Transform transform = new XSLTransformEngine().createTransform(getStylesheet(document, parameters));
  -
  -            transform.transform(document, result);
  -    
  +            Document result = parser.createEmptyDocument();
  +            Transform transformer = new XSLTransformEngine().createTransform(getStylesheet(document, parameters));
  +            transformer.transform(document, result);
               return result;
           } catch(PINotFoundException e) {
               return document;
  @@ -90,6 +87,6 @@
       }
   
       public String getStatus() {
  -        return "XT XSLT Processor";
  +        return "James Clark's XT XSLT Processor";
       }
  -}
  +}
  \ No newline at end of file
  
  
  
  1.1                  xml-cocoon/src/org/apache/cocoon/processor/xslt/XalanProcessor.java
  
  Index: XalanProcessor.java
  ===================================================================
  /*-- $Id: XalanProcessor.java,v 1.1 1999/11/30 16:30:09 stefano Exp $ -- 
  
   ============================================================================
                     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 "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/>.
   
   */
  package org.apache.cocoon.processor.xslt;
  
  import java.io.*;
  import java.net.*;
  import java.util.*;
  import org.w3c.dom.*;
  import org.apache.xalan.xslt.*;
  import org.apache.xalan.xpath.xml.*;
  import org.apache.cocoon.*;
  import org.apache.cocoon.parser.*;
  import org.apache.cocoon.processor.*;
  import org.apache.cocoon.framework.*;
  import org.xml.sax.InputSource;
  import org.xml.sax.EntityResolver;
  import org.xml.sax.SAXException;
  
  /**
   * This class implements the processor interface for the Apache Xalan XSLT processor.
   *
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @version $Revision: 1.1 $ $Date: 1999/11/30 16:30:09 $
   */
  
  public class XalanProcessor extends AbstractXSLTProcessor {
  
      XSLTProcessor processor;
  
      public void init(Director director) {
          super.init(director);
          this.processor = XSLTProcessorFactory.getProcessor(new XMLParser(this.parser));
      }
  
      public Document process(Document document, Dictionary parameters) throws Exception {
          try {
              XSLTInputSource doc = new XSLTInputSource(document);
              XSLTInputSource trans = new XSLTInputSource(getStylesheet(document, parameters));
              Document result = this.parser.createEmptyDocument();
              processor.process(doc, trans, new XSLTResultTarget(result));
              return result;
          } catch (PINotFoundException e) {
              return document;
          }
      }
  
      public String getStatus() {
          return "Apache Xalan XSLT Processor";
      }
   
      class XMLParser extends XMLParserLiaisonDefault {
          Parser parser;
          Document document;
  
          public XMLParser(Parser parser) {
              this.parser = parser;
          }
  
          public Document createDocument() {
              return this.parser.createEmptyDocument();
          }
  
          public void parse(InputSource in) throws IOException, SAXException {
              this.document = this.parser.parse(in);
          }
  
          public Document getDocument() {
              return this.document;
          }
  
          public boolean getShouldExpandEntityRefs() {
              return true;
          }
          
          public boolean supportsSAX() {
              return true;
          }
      }
  }
  
  
  1.4       +9 -4      xml-cocoon/src/org/apache/cocoon/producer/AbstractProducer.java
  
  Index: AbstractProducer.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/producer/AbstractProducer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractProducer.java	1999/11/09 02:30:53	1.3
  +++ AbstractProducer.java	1999/11/30 16:30:10	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: AbstractProducer.java,v 1.3 1999/11/09 02:30:53 dirkx Exp $ -- 
  +/*-- $Id: AbstractProducer.java,v 1.4 1999/11/30 16:30:10 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -53,7 +53,9 @@
   import java.io.*;
   import org.w3c.dom.*;
   import javax.servlet.http.*;
  +import org.apache.cocoon.*;
   import org.apache.cocoon.parser.*;
  +import org.apache.cocoon.parser.*;
   import org.apache.cocoon.framework.*;
   
   /**
  @@ -63,10 +65,10 @@
    * seen as a transparent "mediator" between stream and DOM realms.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:53 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:10 $
    */
   
  -public abstract class AbstractProducer extends AbstractActor implements Producer {
  +public abstract class AbstractProducer extends AbstractActor implements Producer, Defaults {
       
       /**
        * This method is the only one called by the Cocoon engine. Producers
  @@ -77,7 +79,10 @@
        * never called directly by Cocoon.
        */
       public Document getDocument(HttpServletRequest request) throws Exception {
  -        return ((Parser) director.getActor("parser")).parse(getStream(request), getPath(request));
  +        Parser parser = (Parser) director.getActor("parser");
  +        org.xml.sax.InputSource input = new org.xml.sax.InputSource();
  +        input.setCharacterStream(getStream(request));
  +        return parser.parse(input);
       }
       
       /**
  
  
  
  1.4       +4 -4      xml-cocoon/src/org/apache/cocoon/store/MemoryStore.java
  
  Index: MemoryStore.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/store/MemoryStore.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MemoryStore.java	1999/11/09 02:30:57	1.3
  +++ MemoryStore.java	1999/11/30 16:30:10	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: MemoryStore.java,v 1.3 1999/11/09 02:30:57 dirkx Exp $ -- 
  +/*-- $Id: MemoryStore.java,v 1.4 1999/11/30 16:30:10 stefano Exp $ -- 
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -65,7 +65,7 @@
    * sending a note about a method to do it.
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
  - * @version $Revision: 1.3 $ $Date: 1999/11/09 02:30:57 $
  + * @version $Revision: 1.4 $ $Date: 1999/11/30 16:30:10 $
    */
   
   public class MemoryStore extends AbstractActor implements Store, Configurable, Status {
  @@ -116,7 +116,7 @@
           
           while (jvm.freeMemory() < memory) {
               Object worst = this.getWorst();
  -            this.hashtable.remove(worst);
  +            if (worst != null) this.hashtable.remove(worst);
               jvm.runFinalization();
               jvm.gc();            
           }
  @@ -215,7 +215,7 @@
        */
       public String getStatus() {
           StringBuffer buffer = new StringBuffer();
  -        buffer.append("<b>Memory Object Storage System</b><br>");
  +        buffer.append("Memory Object Storage System<br>");
           Enumeration e = list();
           while (e.hasMoreElements()) {
               buffer.append("<li>");
  
  
  
  1.1                  xml-cocoon/stylesheets/document.css
  
  Index: document.css
  ===================================================================
  /*
  
     Documentation Stylesheet
     
     Based on W3C Specification Stylesheet.
     
     Written by Stefano Mazzocchi <stefano@apache.org>
  
     $Id: document.css,v 1.1 1999/11/30 16:30:11 stefano Exp $
  */
  
  /* Document-wide style ---------------------------------------------- */
  
  BODY {
    margin: 2em 2em 2em 2em;
    font-family: sans-serif;
    color: black;
    background: white;
    background-position: top left;
    background-attachment: fixed;
    background-repeat: no-repeat;
  }
  
  /* Header ----------------------------------------------------------- */
  
  DIV.header { margin-bottom: 1em }
  DIV.header H1 { text-align: center }
  DIV.header H2 { text-align: center }
  DIV.header H3 { text-align: center }
  
  /* Body ------------------------------------------------------------- */
  
  DIV.body { margin-botton: 1em }
  
  /* Footer ----------------------------------------------------------- */
  
  DIV.footer { margin-botton: 1em }
  
  /* Blocks ----------------------------------------------------------- */
  
  H1, H2, H3, H4, H5 {
    text-align: left;
    font-family: sans-serif;
    font-weight: normal;
    margin-top: 0.6em; 
    margin-bottom: 0;
    color: #0050B2; 
  }
  
  P { 
    text-align: justify; 
  }
  
  P.img-block { 
    text-align: center;
    margin-top: 1em;
    margin-bottom: 1em;
  }
  
  P.list { margin-left: 1em; margin-top: 1em }
  P.legal { font-size: small }
  P.source { margin-left: 2em }
  P.note { border: solid thin; margin-left: 1em }
  P.first:first-letter { color: #0050B2; font-size: 200% }
  
  PRE { font-family: monospace; margin-left: 2em }
  
  /* Text ------------------------------------------------------------- */
  
  EM { font-size: 100%; font-weight: normal; font-style: normal; }
  
  /* Links ------------------------------------------------------------ */
  
  A:link { color: #0050B2 }   /* unvisited link */
  A:visited { color: blue }   /* visited links */
  A:active { color: red }     /* active links */
                    
  /* Lists ------------------------------------------------------------ */
  
  DT, DD { margin-top: 0; margin-bottom: 0; text-align: justify }
  DT { font-weight: bold }
  LI { text-align: justify } 
  
  /* Table ------------------------------------------------------------ */
  
  TH, TD {
    font-family: sans-serif;
  }
  
  /* Screen media ----------------------------------------------------- */
  
  @media screen {
  }
  
  /* Aural media ------------------------------------------------------ */
  
  @media aural {  
    H1, H2, H3 { stress: 20; richness: 90 }
    .hide { speak: none }
    P.legal { volume: x-soft; speech-rate: x-fast }
    DT { pause-before: 20% }
    PRE { speak-punctuation: code } 
  }
  
  /* end of stylesheet ------------------------------------------------ */
  
  
  
  1.1                  xml-cocoon/stylesheets/document.html.xsl
  
  Index: document.html.xsl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform">
  
  <!--
      Documentation XSLT Stylesheet for Document -> HTML4.0 transformation
      
      NOTE: no stilying should be placed in this transformation sheet since 
      even if XSLT would allow this and separation would be guaranteed, 
      it's better to use CSS for pure HTML styling issues. Transformations
      must be used to apply the necessary structure manipulation but should
      bend to "copy-over" behavior when possible. This is a general design
      patter that should _always_ be used when transforming something to
      HTML4.0.
   
      $Id: document.html.xsl,v 1.1 1999/11/30 16:30:11 stefano Exp $
  -->
  
  <!-- default copy-over's -->
  
  <xsl:template match="*|/">
    <xsl:apply-templates/>
   </xsl:template>
  
  <xsl:template match="text()|@*">
    <xsl:value-of select="."/>
   </xsl:template>
  
  <!-- document section -->
  
  <!-- FIXME (SM): how do we make the CSS link "soft"? -->
  
  <xsl:template match="document">
    <html>
     <link rel="stylesheet" type="text/css" href="stylesheets/document.css"/>
     <head>
      <title><xsl:value-of select="/document/header/title"/></title>
     </head>
     <body>
      <xsl:apply-templates/>
     </body>
    </html>
   </xsl:template>
  
  <!-- header section -->
  
  <xsl:template match="header">
    <div class="header">
     <h1><xsl:value-of select="/document/header/title"/></h1>
     <h3><xsl:value-of select="/document/header/subtitle"/></h3>
    
     <center>written by</center>
     <center>
      <xsl:for-each select="/document/header/authors/author">
       <a href="mailto:{email}"><xsl:value-of select="name"/></a>
      </xsl:for-each>
     </center>
    </div>
    
    <xsl:apply-templates/>
   </xsl:template>
  
  <xsl:template match="title|subtitle|authors">
    <!-- ignore -->
   </xsl:template>
  
  <!-- body section -->
  
  <xsl:template match="body">
    <div class="body">
     <xsl:apply-templates/>
    </div>
   </xsl:template>
  
   <xsl:template match="s1">
    <div class="s1">  
     <h2>
      <xsl:number level="multiple" format="1.1"/>
      <xsl:text>. </xsl:text>
      <xsl:value-of select="@title"/>
     </h2>
     <xsl:apply-templates/>
    </div>
   </xsl:template>
  
  <!-- footer section -->
  
  <xsl:template match="footer">
    <div class="footer">
     <xsl:apply-templates/>
    </div>
   </xsl:template>
  
  <xsl:template match="legal">
    <p class="legal"><xsl:apply-templates/></p>
   </xsl:template>
  
  <!-- links -->
  
  <!-- Note: these are treated the same because pre-XSLT expansion should
        have translated "soft" links in the <connect> element to "hard" links.
        After this expansion there is no difference between the two. -->
  
   <xsl:template match="link|connect">
    <a href="{@href}">
     <xsl:apply-templates/>
    </a>
   </xsl:template>
  
   <xsl:template match="jump">
    <a href="{@href}" target="_top">
     <xsl:apply-templates/>
    </a>
   </xsl:template>
  
   <xsl:template match="fork">
    <a href="{@href}" target="_new">
     <xsl:apply-templates/>
    </a>
   </xsl:template>
  
   <xsl:template match="anchor">
    <a name="{@id}"></a>
   </xsl:template>
  
  <!-- paragraphs -->
  
   <xsl:template match="p">
    <xsl:choose>
     <xsl:when test="position() = 1">
      <p class="first">
       <xsl:apply-templates/>
      </p>
     </xsl:when>
     <xsl:otherwise>
       <xsl:copy>
        <xsl:apply-templates/>
       </xsl:copy>
     </xsl:otherwise>
    </xsl:choose> 
   </xsl:template>
    
   <xsl:template match="source">
    <p class="source">
     <pre><xsl:apply-templates/></pre>
    </p>
   </xsl:template>
  
   <xsl:template match="note">
    <p class="note">
     <strong><xsl:text>Note: </xsl:text></strong>
     <xsl:apply-templates/>
    </p>
   </xsl:template>
  
   <xsl:template match="fixme">
    <!-- ignore on documentation -->
   </xsl:template>
  
  <!-- lists -->
  
   <xsl:template match="sl">
    <p class="list">
     <dl>
      <xsl:for-each select="li">
       <dd><xsl:apply-templates/></dd>
      </xsl:for-each>
     </dl>
    </p>
   </xsl:template>
  
   <xsl:template match="ul|ol|dl">
    <xsl:choose>
     <xsl:when test="../li|../dt">
      <xsl:copy>
       <xsl:apply-templates/>
      </xsl:copy>
     </xsl:when>
     <xsl:otherwise>
      <p class="list">
       <xsl:copy>
        <xsl:apply-templates/>
       </xsl:copy>
      </p>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:template>
  
   <xsl:template match="dt">
    <xsl:copy>
     <strong><xsl:apply-templates/></strong>
    </xsl:copy>
   </xsl:template>
   
   <xsl:template match="dd|li">
    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>
   </xsl:template>
  
  <!-- table (just copy over) -->
  
   <!-- FIXME (SM) find a way to copy the attributed too! -->
   <xsl:template match="table|caption|colgroup|thead|tfoot|tbody|tr|th|td">
    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>
   </xsl:template>
  
  <!-- specials -->
  
   <xsl:template match="br">
    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>
   </xsl:template>
  
   <xsl:template match="img-block">
    <p align="center" class="img-block">
     <img src="{@src}"/>
    </p>
   </xsl:template>
   
   <xsl:template match="img">
    <img src="{@src}"/>
   </xsl:template>
  
  <!-- text markup (just copy over) -->
  
   <xsl:template match="strong|em|code|sub|sup">
    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon/stylesheets/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 }
  
  /* Link colors styling */
  A:link { color: #0000A0 }          /* unvisited link */
  A:visited { color: #A00000 }       /* visited links */
  A:active { color: #00A000 }        /* active links */
  
  
  
  1.1                  xml-cocoon/stylesheets/page.xsl
  
  Index: page.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE xsl:stylesheet [
  <!ENTITY copy   "&#169;">
  <!ENTITY nbsp   "&#160;">
  ]>
  <xsl:stylesheet version="1.0"
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  xmlns="http://www.w3.org/TR/xhtml1/strict">
    <xsl:output method="html" indent="yes" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN"/>
    <!-- PAGE ========================================================-->
    <xsl:template match="page">
      <xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:processing-instruction>
      <xsl:comment>
        XSL <xsl:value-of select="system-property('xsl:version')"/> /
        <xsl:value-of select="system-property('xsl:vendor')"/> 
        (<xsl:value-of select="system-property('xsl:vendor-url')"/>)
      </xsl:comment>
      <html>
        <head>
          <link rel="stylesheet" type="text/css" href="./stylesheets/javadoc.html.css"/>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
          <meta name="Author" content="{authors/author/@name}"/>
          <!-- meta name="Version" content="{version}"/ -->
          <title>
            <xsl:value-of select="@title"/>
          </title>
        </head>
        <body>
          <h1>
            <a name="top">
              <xsl:value-of select="@title"/>
            </a>
          </h1>
          <xsl:apply-templates select="authors"/>
          <xsl:apply-templates select="section"/>
        </body>
      </html>
    </xsl:template>
    <!-- AUTHORS =====================================================-->
    <xsl:template match="authors">
      <div>
          <xsl:apply-templates select="author"/>
      </div>
    </xsl:template>
    <!-- AUTHOR ======================================================-->
    <xsl:template match="author">
      <xsl:choose>
        <xsl:when test="@email[. != '']">
          <a href="mailto:{@email}">
            <em>
              <xsl:value-of select="@name"/>
            </em>
          </a>
        </xsl:when>
        <xsl:otherwise>
          <em>
            <xsl:value-of select="@name"/>
          </em>
        </xsl:otherwise>
      </xsl:choose>
      <br/>
    </xsl:template>
    <!-- SECTION =====================================================-->
    <xsl:template match="section">
      <h2><xsl:value-of select="@title"/></h2>
      <xsl:apply-templates select="p|source"/>
    </xsl:template>
    <!-- P ===========================================================-->
    <xsl:template match="p">
      <div class="p">
        <xsl:apply-templates/>
      </div>
    </xsl:template>
    <!-- SOURCE ======================================================-->
    <xsl:template match="source">
      <div class="source" style="background-color:#EEEEEE">
        <pre>
          <xsl:value-of select="."/>
        </pre>
      </div>
    </xsl:template>
    <!-- LINK ========================================================-->
    <xsl:template match="link">
      <a href="{@href}">
        <xsl:apply-templates/>
      </a>
    </xsl:template>
  </xsl:stylesheet>
  
  
  

Mime
View raw message