cziegeler    2002/07/02 06:06:42

  Added:       src/webapp/samples old_sitemap.xmap
               src/webapp/samples/docs/samples error-giving-page.xml
                        hello-page.xml sample-apps.xml sample-dynamic.xml
                        sample-static.xml sample-xsp.xml samples.xml
               src/webapp/samples/docs/samples/fo readme.fo
               src/webapp/samples/docs/samples/forms add-department.xsp
                        add-employee.xsp employee.xml employee.xsp
                        process-department.xsp process-employee.xsp
               src/webapp/samples/docs/samples/formvalidation ERROR.xsp
                        OK.xsp descriptor.xml
               src/webapp/samples/docs/samples/referer/a a.xml b.xml
               src/webapp/samples/docs/samples/referer/b a.xml b.xml
               src/webapp/samples/docs/samples/script-action
                        addknowncourse.js addunknowncse.js addunknownte.js
                        createuser.js deleteknown.js deleteunknown.js
                        login.js updateinfo.js
               src/webapp/samples/docs/samples/scripts hello.js hello.py
               src/webapp/samples/docs/samples/session-state start.xsp
                        state01.xsp state11.xsp state12.xsp state21.xsp
                        state22.xsp
               src/webapp/samples/docs/samples/sites jakarta_apache_org.xml
                        java_apache_org.xml
               src/webapp/samples/docs/samples/slides clean-page.xml
                        database-page.xml ldap.xml lib-page.xml page.xml
                        pyramid-model.gif schema.jpg slides.xml
                        view-source.xsp
               src/webapp/samples/docs/samples/soap fortune.xml
                        getquote.xml joke.xml temperature.xml
               src/webapp/samples/docs/samples/sql sql-page.xml
                        sql-page.xml.sql
               src/webapp/samples/docs/samples/stream OrderPage.xml
               src/webapp/samples/docs/samples/svg henryV.svg opac.svg
               src/webapp/samples/docs/samples/xscript simple.xsp
                        soap-getquote1.xsl soap-getquote1.xsp
                        soap-getquote2.xsp soap-getquote3.xsl
                        soap-getquote3.xsp
               src/webapp/samples/docs/samples/xsp aggregate.xsp
                        cacheable.xsp cookie.xsp esql.xsd esql.xsp
                        hello.xsp logicsheet.xsp request.xsp resolver.xsp
                        response.xsp session.xsp sessionpage.xsp simple.xsp
                        upload.xsp
               src/webapp/samples/docs/samples/xsp-js hello.xsp request.xsp
                        response.xsp session.xsp simple.xsp
               src/webapp/samples/docs/samples/xsp-py hello.xsp
               src/webapp/samples/logicsheets hello.xsl
               src/webapp/samples/myapp readme.html sitemap.xmap
               src/webapp/samples/myapp/xml page.xml
               src/webapp/samples/myapp/xsl style.xsl
               src/webapp/samples/myapp/xsp page.xsp
               src/webapp/samples/stylesheets deli_test.xsl
                        dynamic-page2html.xsl fragment-extractor.xsl
                        simple-samples2html.xsl simple-sql2html.xsl
                        simple-xml2html.xsl svg-samples2html.xsl
               src/webapp/samples/stylesheets/documents book2sidebar.xsl
                        root2html.xsl
               src/webapp/samples/stylesheets/news moreover.xsl news.xsl
                        slashdot.xsl xmlhack.xsl
               src/webapp/samples/stylesheets/page simple-page2fo.xsl
                        simple-page2html.xsl simple-page2svg.xsl
                        simple-page2vml.xsl simple-page2vrml.xsl
                        simple-page2wml.xsl
               src/webapp/samples/stylesheets/parentcm time.xsl
               src/webapp/samples/stylesheets/sitemap
                        simple-sitemap2html.xsl
               src/webapp/samples/stylesheets/sites
                        jakarta_apache_org-html.xsl
                        java_apache_org-html.xsl
               src/webapp/samples/stylesheets/slides slides-apachecon.xsl
                        slides-navigation.xsl
               src/webapp/samples/stylesheets/system directory2html.xsl
                        error2html.xsl profile2html.xsl status2html.xsl
               src/webapp/samples/stylesheets/xmlform xmlform2html.xsl
               src/webapp/samples/templates hello-page.vm
               src/webapp/samples/welcome cocoon.gif status2html.xsl
                        welcome.xhtml
  Removed:     src/webapp/docs/samples error-giving-page.xml hello-page.xml
                        sample-apps.xml sample-dynamic.xml
                        sample-static.xml sample-xsp.xml samples.xml
               src/webapp/docs/samples/fo readme.fo
               src/webapp/docs/samples/forms add-department.xsp
                        add-employee.xsp employee.xml employee.xsp
                        process-department.xsp process-employee.xsp
               src/webapp/docs/samples/formvalidation ERROR.xsp OK.xsp
                        descriptor.xml
               src/webapp/docs/samples/referer/a a.xml b.xml
               src/webapp/docs/samples/referer/b a.xml b.xml
               src/webapp/docs/samples/script-action addknowncourse.js
                        addunknowncse.js addunknownte.js createuser.js
                        deleteknown.js deleteunknown.js login.js
                        updateinfo.js
               src/webapp/docs/samples/scripts hello.js hello.py
               src/webapp/docs/samples/session-state start.xsp state01.xsp
                        state11.xsp state12.xsp state21.xsp state22.xsp
               src/webapp/docs/samples/sites jakarta_apache_org.xml
                        java_apache_org.xml
               src/webapp/docs/samples/slides clean-page.xml
                        database-page.xml ldap.xml lib-page.xml page.xml
                        pyramid-model.gif schema.jpg slides.xml
                        view-source.xsp
               src/webapp/docs/samples/soap fortune.xml getquote.xml
                        joke.xml temperature.xml
               src/webapp/docs/samples/sql sql-page.xml sql-page.xml.sql
               src/webapp/docs/samples/stream OrderPage.xml
               src/webapp/docs/samples/svg henryV.svg opac.svg
               src/webapp/docs/samples/xscript simple.xsp
                        soap-getquote1.xsl soap-getquote1.xsp
                        soap-getquote2.xsp soap-getquote3.xsl
                        soap-getquote3.xsp
               src/webapp/docs/samples/xsp aggregate.xsp cacheable.xsp
                        cookie.xsp esql.xsd esql.xsp hello.xsp
                        logicsheet.xsp request.xsp resolver.xsp
                        response.xsp session.xsp sessionpage.xsp simple.xsp
                        upload.xsp
               src/webapp/docs/samples/xsp-js hello.xsp request.xsp
                        response.xsp session.xsp simple.xsp
               src/webapp/docs/samples/xsp-py hello.xsp
               src/webapp/logicsheets hello.xsl
               src/webapp/myapp readme.html sitemap.xmap
               src/webapp/myapp/xml page.xml
               src/webapp/myapp/xsl style.xsl
               src/webapp/myapp/xsp page.xsp
               src/webapp/stylesheets deli_test.xsl dynamic-page2html.xsl
                        fragment-extractor.xsl simple-samples2html.xsl
                        simple-sql2html.xsl simple-xml2html.xsl
                        svg-samples2html.xsl
               src/webapp/stylesheets/documents book2sidebar.xsl
                        root2html.xsl
               src/webapp/stylesheets/news moreover.xsl news.xsl
                        slashdot.xsl xmlhack.xsl
               src/webapp/stylesheets/page simple-page2fo.xsl
                        simple-page2html.xsl simple-page2svg.xsl
                        simple-page2vml.xsl simple-page2vrml.xsl
                        simple-page2wml.xsl
               src/webapp/stylesheets/parentcm time.xsl
               src/webapp/stylesheets/sitemap simple-sitemap2html.xsl
               src/webapp/stylesheets/sites jakarta_apache_org-html.xsl
                        java_apache_org-html.xsl
               src/webapp/stylesheets/slides slides-apachecon.xsl
                        slides-navigation.xsl
               src/webapp/stylesheets/system directory2html.xsl
                        error2html.xsl profile2html.xsl status2html.xsl
               src/webapp/stylesheets/xmlform xmlform2html.xsl
               src/webapp/templates hello-page.vm
               src/webapp/welcome cocoon.gif status2html.xsl welcome.xhtml
  Log:
  Forcing things: moved everything except resources into the samples directory 
breaking some more samples...next thing will be the resources going somewhere 
else...
  
  Revision  Changes    Path
  1.1                  xml-cocoon2/src/webapp/samples/old_sitemap.xmap
  
  Index: old_sitemap.xmap
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
  <!-- 
     This is the 'heart' of Cocoon. The sitemap maps URI space to 
     resources. It consists basicly of two parts: components and
     pipelines. Pipelines are made out of components. There is such a
     vast number of components available that it would be impossible to
     describe them here, please refer to the accompanying
     documentation. For specific components, have a look also at the
     javadocs for them. Most pipelines are present to demonstrate some
     feature or technique, often they are explained in more detail in 
     the accompanying documentation.
     
     There are some other, less important parts that deal with
     resources, views and action sets. For now, ignore them.
  -->
  
  
  
  <!-- =========================== Components ================================ 
-->
  
   <map:components>
  
  <!--
    All pipelines consist at least of two components: a generator, that
    produces the content and a serialiser, that delivers the content to
    the client.
  
    More precisely: a generator generates SAX events and a serializer
    consumes these events and produces a character stream.
  
    Some things to note here: each generator has a unique name, this
    name is mapped to a java class, one name is declared as default
    generator. In addition each generator may have additional
    configurations as child elements.
  
    Additional attributes are targeted at the component manager. The optional
    "label" attribute is relevant for the view concept below. The optional
    "logger" attribute defines the logging category where messages produced
    by a component should go. If there's no "logger" attribute, the category
    used is the one defined for the "sitemap" component in cocoon.xconf.
  
    We have chosen in this example sitemap to use a different logging category
    for each component, which allows fine-grained classification of log
    messages. But you are free to use any category you want.
  
    It is possible to have the same java class declared as different
    generators by using different names. No configuration options are
    shared between these instances, however.
  
    All components follow this schema.
  
  -->
    <map:generators default="file">
      <map:generator label="content,data" logger="sitemap.generator.file" 
name="file" pool-grow="4" pool-max="32" pool-min="8" 
src="org.apache.cocoon.generation.FileGenerator"/>
  
      <map:generator label="content,data" 
logger="sitemap.generator.serverpages" name="serverpages" pool-grow="2" 
pool-max="32" pool-min="4" 
src="org.apache.cocoon.generation.ServerPagesGenerator"/>
      
      <map:generator label="content,data" logger="sitemap.generator.directory" 
name="directory" pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.generation.DirectoryGenerator"/>
  
      <map:generator label="data" logger="sitemap.generator.request" 
name="request" pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.generation.RequestGenerator"/>
  
      <map:generator label="data" logger="sitemap.generator.status" 
name="status" pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.generation.StatusGenerator"/>
  
     <map:generator label="content,data" 
logger="sitemap.generator.imagedirectory" name="imagedirectory" 
src="org.apache.cocoon.generation.ImageDirectoryGenerator"/>
  
     <map:generator label="data" logger="sitemap.generator.extractor" 
name="extractor" src="org.apache.cocoon.generation.FragmentExtractorGenerator"/>
    
      <map:generator label="content,data" name="html" 
src="org.apache.cocoon.generation.HTMLGenerator"/>
  
      <map:generator label="content,data" name="jsp" 
src="org.apache.cocoon.generation.JspGenerator"/>
      <map:generator label="content,data" name="stream" 
src="org.apache.cocoon.generation.StreamGenerator"/>
  
      <map:generator label="content,data" name="script" 
src="org.apache.cocoon.generation.ScriptGenerator"/>
  
      <map:generator label="content,data" name="velocity" 
src="org.apache.cocoon.generation.VelocityGenerator"/>
  </map:generators>
  
  <!--
    Transformers can be placed inside the pipeline between the generator
    and the serializer. You may have as many transformers as you
    like. Transformers consume SAX events and emmit SAX events.
  
    The "xalan" transformer is an example of a component with additional
    configuration.
  -->
    <map:transformers default="xslt">
      <!-- NOTE: This used to be the default XSLT processor. The default now is 
XSLTC -->
      <map:transformer name="xalan" logger="sitemap.transformer.xslt" 
pool-grow="2" pool-max="32" pool-min="8" 
src="org.apache.cocoon.transformation.TraxTransformer">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
      </map:transformer>
  
      <!-- 
          NOTE: XSLTC is now the default processor. If you use Xalan 
extensions, 
          use the "xalan" transformer. 
       -->
      <map:transformer name="xslt" 
src="org.apache.cocoon.transformation.TraxTransformer"
                          logger="sitemap.transformer.xsltc"
                          pool-max="32" pool-min="8" pool-grow="2">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
        <!-- 
transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory
 -->
      </map:transformer>
  
      <map:transformer logger="sitemap.transformer.log" name="log" 
pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.transformation.LogTransformer"/>
  
      <map:transformer logger="sitemap.transformer.xinclude" name="xinclude" 
pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.transformation.XIncludeTransformer"/>
  
      <map:transformer logger="sitemap.transformer.cinclude" name="cinclude" 
pool-grow="2" pool-max="16" pool-min="2" 
src="org.apache.cocoon.transformation.CIncludeTransformer"/>
  
     <map:transformer logger="sitemap.transformer.sql" name="sql" 
src="org.apache.cocoon.transformation.SQLTransformer"/>
  
     <map:transformer logger="sitemap.transformer.extractor" name="extractor" 
src="org.apache.cocoon.transformation.FragmentExtractorTransformer"/>
  
     <map:transformer logger="sitemap.transformer.filter" name="filter" 
src="org.apache.cocoon.transformation.FilterTransformer"/>
  
     <map:transformer logger="sitemap.transformer.writeDOMsession" 
name="writeDOMsession" 
src="org.apache.cocoon.transformation.WriteDOMSessionTransformer"/>
  
     <map:transformer logger="sitemap.transformer.readDOMsession" 
name="readDOMsession" 
src="org.apache.cocoon.transformation.ReadDOMSessionTransformer"/>
     <map:transformer logger="sitemap.transformer.encodeURL" name="encodeURL" 
src="org.apache.cocoon.transformation.EncodeURLTransformer"/>
  
     <map:transformer logger="sitemap.transformer.write-source" 
name="write-source" 
src="org.apache.cocoon.transformation.SourceWritingTransformer"/>
  
  </map:transformers>
  
  <!--
    Readers are an exception to the above rule that a pipline need to
    have exactly one generator and exactly one serializer. Readers
    circumvent the XML oriented SAX pipeline model, think of a reader
    being a generator and a serializer at once thus a pipeline may not
    contain any generator, transformer or serializer in addition to a
    reader. They are useful for delivering binary content like images.
  -->
    <map:readers default="resource">
      <map:reader logger="sitemap.reader.resource" name="resource" 
pool-max="32" src="org.apache.cocoon.reading.ResourceReader"/>
    
      <map:reader name="jsp" src="org.apache.cocoon.reading.JSPReader"/>
  </map:readers>
  
  <!--
    Serializers consume SAX events and produce a character stream. Every
    pipeline needs to be terminated by a serializer.
  -->
    <map:serializers default="html">
      <map:serializer logger="sitemap.serializer.links" name="links" 
src="org.apache.cocoon.serialization.LinkSerializer"/>
  
      <map:serializer logger="sitemap.serializer.xml" mime-type="text/xml" 
name="xml" src="org.apache.cocoon.serialization.XMLSerializer"/>
  
      <map:serializer logger="sitemap.serializer.html" mime-type="text/html" 
name="html" pool-grow="4" pool-max="32" pool-min="4" 
src="org.apache.cocoon.serialization.HTMLSerializer">
        <buffer-size>1024</buffer-size>
      </map:serializer>
  
     <map:serializer logger="sitemap.serializer.vrml" mime-type="model/vrml" 
name="vrml" src="org.apache.cocoon.serialization.TextSerializer"/>
  
     <map:serializer logger="sitemap.serializer.wml" 
mime-type="text/vnd.wap.wml" name="wml" 
src="org.apache.cocoon.serialization.XMLSerializer">
      <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public>
      <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctype-system>
      <encoding>ASCII</encoding>
      <omit-xml-declaration>yes</omit-xml-declaration>
     </map:serializer>
  
     <map:serializer logger="sitemap.serializer.svgxml" 
mime-type="image/svg-xml" name="svgxml" 
src="org.apache.cocoon.serialization.XMLSerializer">
      <doctype-public>-//W3C//DTD SVG 20000303 Stylable//EN</doctype-public>
      
<doctype-system>http://www.w3.org/TR/2000/03/WD-SVG-20000303/</doctype-system>
     </map:serializer>
  
     <map:serializer logger="sitemap.serializer.xhtml" mime-type="text/html" 
name="xhtml" pool-grow="2" pool-max="64" pool-min="2" 
src="org.apache.cocoon.serialization.XMLSerializer">
       <doctype-public>-//W3C//DTD XHTML 1.0 Strict//EN</doctype-public>
       
<doctype-system>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</doctype-system>
       <encoding>UTF-8</encoding>
     </map:serializer>
  
     <map:serializer logger="sitemap.serializer.text" mime-type="text/text" 
name="text" src="org.apache.cocoon.serialization.TextSerializer"/>
    
      <map:serializer mime-type="application/pdf" name="fo2pdf" 
src="org.apache.cocoon.serialization.FOPSerializer"/>
      <map:serializer mime-type="application/postscript" name="fo2ps" 
src="org.apache.cocoon.serialization.FOPSerializer"/>
      <map:serializer mime-type="vnd.hp-PCL" name="fo2pcl" 
src="org.apache.cocoon.serialization.FOPSerializer"/>
  
      <map:serializer mime-type="image/jpeg" name="svg2jpeg" 
src="org.apache.cocoon.serialization.SVGSerializer">
        <parameter name="quality" type="float" value="0.9"/>
      </map:serializer>
      <map:serializer mime-type="image/png" name="svg2png" 
src="org.apache.cocoon.serialization.SVGSerializer"/>
  </map:serializers>
  
  <!--
    Matchers are executed during pipeline setup. They decide if a
    pipeline fragment is used within a pipeline. Usually, the decision
    is based on a match on the requested URI but matchers exist, that
    match different things as well. Most often the fragment contained in
    a matcher has a generator as well as a serializer. This is not a
    necessity, matchers can be nested while chaining does not work.
    Related concepts are selectors and actions. 
  
    Since this is important, let me repeat it: Matchers are executed
    during pipeline setup.
  -->
    <map:matchers default="wildcard">
      <map:matcher logger="sitemap.matcher.wildcard" name="wildcard" 
src="org.apache.cocoon.matching.WildcardURIMatcher"/>
  
      <map:matcher logger="sitemap.matcher.regexp" name="regexp" 
src="org.apache.cocoon.matching.RegexpURIMatcher"/>
     <map:matcher logger="sitemap.matcher.request-parameter" 
name="request-parameter" 
src="org.apache.cocoon.matching.RequestParameterMatcher"/>
  
     <map:matcher logger="sitemap.matcher.cookie" name="cookie" 
src="org.apache.cocoon.matching.CookieMatcher"/>
  
     <map:matcher logger="sitemap.matcher.header" name="header" 
src="org.apache.cocoon.matching.HeaderMatcher"/>
  
     <map:matcher logger="sitemap.matcher.parameter" name="parameter" 
src="org.apache.cocoon.matching.ParameterMatcher"/>
  
     <map:matcher logger="sitemap.matcher.sessionstate" name="sessionstate" 
src="org.apache.cocoon.matching.WildcardSessionAttributeMatcher">
        <attribute-name>org.apache.cocoon.SessionState</attribute-name>
     </map:matcher>
  
     <map:matcher logger="sitemap.matcher.next-page" name="next-page" 
src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">
        <parameter-name>next-state</parameter-name>
     </map:matcher>
  
     <map:matcher logger="sitemap.matcher.referer-match" name="referer-match" 
src="org.apache.cocoon.matching.WildcardHeaderMatcher">
        <header-name>referer</header-name>
     </map:matcher>
    </map:matchers>
  
  <!--
    Selectors are executed during pipeline setup. They can be used to
    determine which pipeline fragments should be combined. They are best
    compared with a switch statement in java. Matchers and actions are
    related concepts.
  
    Since this is important, let me repeat it: Selectors are executed
    during pipeline setup.
  -->
    <map:selectors default="browser">
     <map:selector logger="sitemap.selector.browser" name="browser" 
src="org.apache.cocoon.selection.BrowserSelector">
      <!-- # NOTE: The appearance indicates 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; ...")
      -->
      <browser name="explorer" useragent="MSIE"/>
      <browser name="pocketexplorer" useragent="MSPIE"/>
      <browser name="handweb" useragent="HandHTTP"/>
      <browser name="avantgo" useragent="AvantGo"/>
      <browser name="imode" useragent="DoCoMo"/>
      <browser name="opera" useragent="Opera"/>
      <browser name="lynx" useragent="Lynx"/>
      <browser name="java" useragent="Java"/>
      <browser name="wap" useragent="Nokia"/>
      <browser name="wap" useragent="UP"/>
      <browser name="wap" useragent="Wapalizer"/>
      <browser name="mozilla5" useragent="Mozilla/5"/>
      <browser name="mozilla5" useragent="Netscape6/"/>
      <browser name="netscape" useragent="Mozilla"/>
     </map:selector>
  
     <map:selector logger="sitemap.selector.request-parameter" 
name="request-parameter" 
src="org.apache.cocoon.selection.RequestParameterSelector">
      <!-- Define now which request parameter to use; or do it later,
           when using this selector, via "parameter-name" parameter.
      <parameter-name>myparam</parameter-name> 
      -->
     </map:selector>
  
     <map:selector logger="sitemap.selector.request-attribute" 
name="request-attribute" 
src="org.apache.cocoon.selection.RequestAttributeSelector">
      <!-- <attribute-name>myparam</attribute-name> -->
     </map:selector>
  
     <map:selector logger="sitemap.selector.session-attribute" 
name="session-attribute" 
src="org.apache.cocoon.selection.SessionAttributeSelector">
      <!-- <attribute-name>myparam</attribute-name> -->
     </map:selector>
  
     <map:selector logger="sitemap.selector.parameter" name="parameter" 
src="org.apache.cocoon.selection.ParameterSelector"/>
  
     <map:selector logger="sitemap.selector.header" name="header" 
src="org.apache.cocoon.selection.HeaderSelector">
      <!-- <header-name>myparam</header-name> -->
     </map:selector>
  
     <map:selector logger="sitemap.selector.host" name="host" 
src="org.apache.cocoon.selection.HostSelector"/>
    </map:selectors>
  
  <!--
    Actions are executed during pipeline setup. Their purpose is to
    execute some arbitrary complex code. They are the work horses of
    pipelines. Use them to update databases, check external resources
    etc. The execution may fail or complete successfully. Only if the
    execution was successful, the pipeline fragment contained inside is
    used within the pipeline. Related concepts are matchers and
    selectors.
  
    Since this is important, let me repeat it: Actions are executed
    during pipeline setup.
  -->
    <map:actions>
      <map:action logger="sitemap.action.add-employee" name="add-employee" 
src="org.apache.cocoon.acting.DatabaseAddAction"/>
  
      <map:action logger="sitemap.action.del-employee" name="del-employee" 
src="org.apache.cocoon.acting.DatabaseDeleteAction"/>
  
      <map:action logger="sitemap.action.upd-employee" name="upd-employee" 
src="org.apache.cocoon.acting.DatabaseUpdateAction"/>
  
     <!-- LangSelect action is deprecated. Use LocaleAction instead -->
     <!-- Locale Action is moved to /samples/i18n/sitemap.xmap -->
  
     <map:action logger="sitemap.action.request" name="request" 
src="org.apache.cocoon.acting.RequestParamAction"/>
  
     <map:action logger="sitemap.action.form-validator" name="form-validator" 
src="org.apache.cocoon.acting.FormValidatorAction"/>
  
     <map:action logger="sitemap.action.session-state" name="session-state" 
src="org.apache.cocoon.acting.SessionStateAction"/>
  
     <map:action logger="sitemap.action.session-isvalid" name="session-isvalid" 
src="org.apache.cocoon.acting.SessionIsValidAction"/>
  
     <map:action logger="sitemap.action.resource-exists" name="resource-exists" 
src="org.apache.cocoon.acting.ResourceExistsAction"/>
  
     <map:action logger="sitemap.action.set-header" name="set-header" 
src="org.apache.cocoon.acting.HttpHeaderAction"/>
  
    </map:actions>
  
    <!--
       The different pipeline implementations
    -->
    <map:pipelines default="caching">
       <map:pipeline name="caching" 
src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
       <map:pipeline name="noncaching" 
src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
       <!-- The following two can be used for profiling:
       <map:pipeline name="profile-caching" 
src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
       <map:pipeline name="profile-noncaching" 
src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
       -->
    </map:pipelines>
  
   </map:components>
  
  <!-- =========================== Views =================================== -->
  
  <!--
    Views provide diffent, well, views to resources. Views are
    orthogonal to pipelines. Please refer to the docs.
  -->
   <map:views>
    <map:view from-label="content" name="content">
     <map:serialize type="xml"/>
    </map:view>
  
    <map:view from-label="data" name="pretty-content">
      <map:transform src="stylesheets/simple-xml2html.xsl"/>
      <map:serialize type="html"/>
    </map:view>
    
    <map:view from-position="last" name="links">
     <map:serialize type="links"/>
    </map:view>
  
   </map:views>
  
  <!-- =========================== Resources ================================= 
-->
  
  <!--
    Resources are pipeline fragments that may be used from different
    pipeline fragments. For our needs, they behave exactly like
    pipelines, only that they are not accessible from outside.
    Hence I will explain what's inside below for pipelines.
  -->
  
   <map:resources>
    <map:resource name="slides">
     <map:generate src="docs/samples/slides/slides.xml"/>
     <map:transform src="stylesheets/slides/slides-navigation.xsl">
      <map:parameter name="use-request-parameters" value="true"/>
      <map:parameter name="use-browser-capabilities-db" value="true"/>
     </map:transform>
     <map:transform src="stylesheets/slides/slides-apachecon.xsl"/>
     <map:serialize/>
    </map:resource>
  
    <map:resource name="dynamic-page">
       <map:generate src="{target}.xsp" type="serverpages"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl">
         <map:parameter name="view-source" value="{target}.xsp"/>
       </map:transform>
       <map:serialize/>
    </map:resource>
  
    <map:resource name="dynamic-page1">
       <!-- print all current sitemap parameters to log -->
       <map:act type="session-state">
          <map:parameter name="new-state" value="{../0}"/>
          <!-- 
             use the complete string that was matched as a parameter. Compare
             this with the target parameter below. There the third
             sitemap parameter refers to the very same string. Verfy this
             by looking at the log. This irritating effect stems from
             the fact, that the above map:parameter belongs conceptually
             still to the parent element while all other nested tags
             are, well, nested.
          -->
          <map:call resource="dynamic-page">
             <map:parameter name="target" 
value="{../target}/state{../../../0}{../../0}"/>
          </map:call>
       </map:act>
    </map:resource>
  
    <map:resource name="dynamic-page2">
       <map:act type="session-state">
          <map:parameter name="new-state" value="1"/>
          <map:call resource="dynamic-page">
             <map:parameter name="target" value="{../target}1"/>
          </map:call>
       </map:act>
    </map:resource>
  
    <map:resource name="simple-page">
       <map:generate src="{target}.xml" type="file"/>
       <map:transform src="stylesheets/page/simple-page2html.xsl">
          <map:parameter name="view-source" value="{target}.xml"/>
       </map:transform>
       <map:serialize/>
    </map:resource>
   </map:resources>
  
  <!-- ========================== Action sets ================================ 
-->
  
  <!--
    Action sets group actions together. If some actions are often used
    together in pipeline fragments, it's easier to group them and refer
    to the group. For more info, please see the docs.
  -->
  
   <map:action-sets>
    <map:action-set name="employee">
     <map:act action="Add" type="add-employee"/>
     <map:act action="Delete" type="del-employee"/>
     <map:act action="Update" type="upd-employee"/>
    </map:action-set>
   </map:action-sets>
  
  <!-- =========================== Pipelines ================================= 
-->
  
  <!--
    Pipelines. The beef. Pipelines specify, how the processing of your
    content is done. Usually, a pipeline consists of several fragments
    that specify the generation, transformation, and serialization of
    SAX events.
  
    Processing is done in two steps:
  
    1) The top level elements are executed in order of appearance until
       one signals success. These top level elements are usually
       matchers. AFAIK other components are not supported for this.
  
       Other components are called depth-first to determine what
       fragments make up the processing pipeline. When a component
       fails, no nested components are called but the next component on
       the same level.
  
    2) Once it is determined which generator, which transformers and
       wich serializer is used, these components are executed. During
       this, the pipeline may not be changed.
  
  
    You may have as many pipelines in your sitemap as you like. However,
    it seems that the only purposes would be to specify different error
    handlers.
  -->
  
   <map:pipelines>
    <map:global-parameters>
       <!-- Define global parameters here -->
    </map:global-parameters>
    <map:component-configurations>
       <!-- Define component configuration here -->
    </map:component-configurations>
  
    <!-- MyApp - minimal Cocoon Application Mount -->
    <map:pipeline>
      <map:match pattern="myapp/**">
        <map:mount check-reload="yes" src="myapp/" uri-prefix="myapp"/>
      </map:match>
    </map:pipeline>
  
    <!-- Cocoon documentation pipeline -->
    <map:pipeline>
      <map:match pattern="documents/index">
        <map:redirect-to uri="index.html"/>
        <!--
          You may direct a client to a more appropriate URI by the above
          command. The above results in a redirect response to the
          client. By redirecting to a ressource it would be handled by
          cocoon internally.
  
          Since pipelines work on a first match basis, the above wins the
          request although the match below would match as well.
        -->
      </map:match>
      <map:match pattern="documents/**">
        <map:mount check-reload="yes" src="documentation/" 
uri-prefix="documents"/>
      </map:match>
    </map:pipeline>
  
    <map:pipeline id="optional">
      <!-- Utility for viewing source xml or html -->
      <!-- sample use of regexp equivalent to "**.source" using wildcard
           this also shows the '\{' notation to escape sitemap values 
substitution -->
      <map:match pattern="(.*)\.s\{1}ource" type="regexp">
        <map:generate src="cocoon:/{1}"/>
        <map:transform src="stylesheets/simple-xml2html.xsl"/>
        <map:serialize/>
      </map:match>
  
      <!-- Below goes entries added by Cocoon build system -->
    
  
      <!-- XSP pages written in Javascript -->
      <map:match pattern="xsp-js/*">
        <map:generate src="docs/samples/xsp-js/{1}.xsp" type="serverpages">
          <map:parameter name="programming-language" value="js"/>
        </map:generate>
        <map:transform src="stylesheets/dynamic-page2html.xsl">
          <map:parameter name="view-source" 
value="docs/samples/xsp-js/{1}.xsp"/>
        </map:transform>
        <map:serialize/>
      </map:match>
  
  
      <!-- ======================= XML:DB ============================== -->
      <map:match pattern="xmldb/**">
        <map:match pattern="xpath" type="request-parameter">
          <map:generate src="xmldb:xindice://localhost:4080/db/{../1}#{1}"/>
          <map:serialize type="xml"/>
        </map:match>
  
        <map:generate src="xmldb:xindice://localhost:4080/db/{1}"/>
        <map:serialize type="xml"/>
      </map:match>
  </map:pipeline>
  
    <!-- pipeline mounting samples sitemaps -->
    <map:pipeline>
      <!-- mount other sample pages -->
      <map:match pattern="samples/**">
        <map:mount check-reload="yes" src="samples/" uri-prefix="samples"/>
      </map:match>   
    </map:pipeline>
  
    <!-- main samples pipeline -->
    <map:pipeline>   
      <map:match pattern="">
        <map:generate src="welcome/welcome.xhtml"/>
        <map:serialize/>      
      </map:match>
  
      <map:match pattern="cocoon.gif">
        <map:read mime-type="image/gif" src="welcome/cocoon.gif"/>
      </map:match>
  
     <map:match pattern="welcome">
      <map:generate src="docs/samples/samples.xml"/>
      <!--
        The first 'real' pipeline. The default generator reads from
        "docs/samples/samples.xml" and emits SAX events down the
        pipeline. Here, the default generator just reads XML from a file,
        parses it and generates SAX events while it does so.
      -->
      <!--
      <map:select>
        <map:when test="wap">
          <map:transform src="stylesheets/simple-samples2html.xsl"/>
        </map:when>
        <map:when test="netscape">
          <map:transform src="stylesheets/simple-samples2html.xsl"/>
        </map:when>
        <map:otherwise>
          <map:transform src="stylesheets/simple-samples2html.xsl"/>
        </map:otherwise>
      </map:select>
      -->
      <map:transform type="xslt" src="stylesheets/simple-samples2html.xsl"/>
      <!-- uncomment the following if you want to use Xalan's interpreter as 
the XSLT processor -->
      <!-- <map:transform type="xalan" 
src="stylesheets/simple-samples2html.xsl"/> -->
      <!--
         These events are consumed by the default transformer, which
         uses "stylesheets/simple-samples2html.xsl" as parameter. Since
         here the default transformer is an XSLT transformer, the above
         stylesheet is applied. As soon as some of the transformation's
         result is determined, new SAX events are emitted down the
         pipeline.
      -->
      <map:serialize/>
      <!--
         Finally, those SAX events are consumed by the default
         serializer, assembling a character stream from them which is
         send to the client.
         
         Once a serializer is encountered when assembling the pipeline,
         the setup stops and the pipeline is fired up.
      -->
     </map:match>
  
     <map:match pattern="sample-*">
      <map:generate src="docs/samples/sample-{1}.xml"/>
      <map:transform src="stylesheets/simple-samples2html.xsl"/>
      <map:serialize/>
     </map:match>
  
  
  
     <map:match pattern="welcome-svg">
      <map:generate src="docs/samples/samples.xml"/>
      <map:transform src="stylesheets/svg-samples2html.xsl"/>
      <map:transform type="extractor"/>
      <!-- 
         Here, several transformers are needed to obtain the desired
         result. Note, that the above is not the default transformer but
         one named "extractor". Interestingly enough, this transformer
         does not need any additional configuration or input.
         
         If we look at it's javadocs it says:
  
         "[...] The transformation half of the FragmentExtractor. This
         transformer sieves an incoming stream of xml with embedded SVG
         images and replaces the images with an xlink locator pointing
         to the image. [...]"
  
         So, this interacts with the fragment below, doing the actual
         generating.
      -->
      <map:transform src="stylesheets/fragment-extractor.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="welcome-svg-images/*.png">
      <map:generate src="{1}" type="extractor"/>
      <!--
         Again, citing the javadocs:
  
         "[...] The generation half of
         FragmentExtractor. FragmentExtractor is a transformer-generator
         pair which is designed to allow sitemap managers to extract
         certain nodes from a SAX stream and move them into a separate
         pipeline. The main use for this is to extract inline SVG images
         and serve them up through a separate pipeline, usually
         serializing them to PNG or JPEG format first. [...]"
      -->
      <map:serialize type="svg2png"/>
     </map:match>
  
  
  
  
     <!-- ================  Hello  =========================== -->
  
     <map:match pattern="deli.html">
       <map:generate src="docs/samples/hello-page.xml"/>
       <map:transform src="stylesheets/deli_test.xsl" type="xslt">
           <map:parameter name="use-deli" value="true"/>
       </map:transform>
       <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="deli.wml">
       <map:generate src="docs/samples/hello-page.xml"/>
       <map:transform src="stylesheets/deli_test.xsl" type="xslt">
           <map:parameter name="use-deli" value="true"/>
       </map:transform>
       <map:serialize type="wml"/>
     </map:match>
  
     <map:match pattern="hello.html">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2html.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="hello.wml">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2wml.xsl"/>
      <map:serialize type="wml"/>
     </map:match>
  
     <map:match pattern="hello.vml">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2vml.xsl"/>
      <map:serialize type="xml"/>
     </map:match>
  
     <map:match pattern="hello.svg">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2svg.xsl"/>
      <map:serialize type="svg2jpeg"/>
     </map:match>
  
     <map:match pattern="hello.wrl">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2vrml.xsl"/>
      <map:serialize type="vrml"/>
     </map:match>
  
     <map:match pattern="hello.pdf">
      <map:generate src="docs/samples/hello-page.xml"/>
      <map:transform src="stylesheets/page/simple-page2fo.xsl"/>
      <map:serialize type="fo2pdf"/>
     </map:match>
  
     <map:match pattern="redirect">
      <map:act type="request">
       <map:parameter name="parameters" value="true"/>
  
       <map:redirect-to uri="{dest}"/>
      </map:act>
     </map:match>
  
     <!-- ================  Sites  =========================== -->
  
     <map:match pattern="sites/*.apache.org">
      <map:generate src="docs/samples/sites/{1}_apache_org.xml"/>
      <map:transform src="stylesheets/sites/{1}_apache_org-html.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="sites/images/*.gif">
      <map:read mime-type="image/gif" src="resources/images/{1}.gif"/>
     </map:match>
  
     <!-- ================  NEWS  =========================== -->
  
     <map:match pattern="news/slashdot.xml">
      <map:generate src="http://slashdot.org/slashdot.xml"/>
      <map:transform src="stylesheets/news/slashdot.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="news/**.gif">
      <map:read mime-type="image/gif" 
src="http://images.slashdot.org/topics/{1}.gif"/>
     </map:match>
  
     <map:match pattern="news/**.jpg">
      <map:read mime-type="image/jpg" 
src="http://images.slashdot.org/topics/{1}.jpg"/>
     </map:match>
  
     <map:match pattern="news/moreover.xml">
      <map:generate 
src="http://www.moreover.com/cgi-local/page?o=xml&amp;c=Developer%20news"/>
      <map:transform src="stylesheets/news/moreover.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="news/xmlhack.xml">
      <map:generate src="http://www.xmlhack.com/cdf.cdf"/>
      <map:transform src="stylesheets/news/xmlhack.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="news/aggregate.xml">
      <map:aggregate element="page" ns="http://foo.bar.com/myspace";>
       <!--
          Aggregation is a very powerful concept that allows a document
          be generated from several other documents. Strictly speaking,
          all parts are just concatenated in this order to a new
          document.
  
      Several things to note here:
  
      "cocoon:" is a pseudo protocol and refers to another
        pipeline. "cocoon:/" refers to a pipeline from the current
        sitemap while "cocoon://" refers to a pipeline from the root
        sitemap.
  
      Other pseudo protocols exist:
  
      "context:" is another pseudo protocol, "context://" is
        refering to a resource using the servlet context.
  
      "resource:" is yet another pseudo protocol, "resource://" is
        refering to a resource from the context classloader.
  
      These pseudo protocols are declared in cocoon.xconf
  
      Thus the parts refer to the pipeline fragments above.
  
      The element attribute places the content in a new root element
      named as specified, using the namespace provided by the ns
      attribute.
  
      Please see docs for further explanations.
       -->
       <map:part element="news" ns="http://foo.bar.com/slashdot"; 
src="cocoon:/news/slashdot.xml"/>
       <map:part element="news" ns="http://foo.bar.com/moreover"; 
src="cocoon:/news/moreover.xml"/>
       <map:part element="news" ns="http://foo.bar.com/xmlhack"; 
src="cocoon:/news/xmlhack.xml"/>
      </map:aggregate>
      <map:transform src="stylesheets/news/news.xsl"/>
      <map:serialize/>
     </map:match>
  
     <!-- Aggregation using CInclude transformer -->
     <map:match pattern="news/aggregate">
      <map:generate src="docs/samples/xsp/aggregate.xsp" type="serverpages"/>
      <map:transform type="cinclude"/>
      <map:transform src="stylesheets/news/news.xsl"/>
      <map:serialize/>
     </map:match>
  
     <!-- ==============  Catalog  ========================== -->
  
     <map:match pattern="**/samples/catalog-demo">
      <map:generate src="docs/samples/catalog/test.xml"/>
      <map:transform src="docs/samples/catalog/style.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="catalog-demo">
      <map:generate src="docs/samples/catalog/test.xml"/>
      <map:transform src="docs/samples/catalog/style.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="sdocbook-demo">
      <map:generate src="docs/samples/catalog/article.xml"/>
      <map:transform src="docs/samples/catalog/sdocbook2body.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <!-- ================  Static  =========================== -->
  
     <map:match pattern="fo">
      <map:generate src="docs/samples/fo/readme.fo"/>
      <map:serialize type="fo2pdf"/>
     </map:match>
  
     <map:match pattern="svg">
      <map:generate src="docs/samples/svg/henryV.svg"/>
      <map:serialize type="svg2png"/>
     </map:match>
  
     <map:match pattern="scripts/*">
      <map:generate src="docs/samples/scripts/{1}" type="script"/>
      <map:transform src="stylesheets/page/simple-page2html.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="templates/*">
      <map:generate src="templates/{1}" type="velocity">
      <map:parameter name="name" value="Velocity"/>
      <map:parameter name="project" value="Cocoon"/>
      </map:generate>
      <map:transform src="stylesheets/page/simple-page2html.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <map:match pattern="slides/slides">
      <map:call resource="slides"/>
      <!--
         To include common pipeline fragments in a pipeline they can be
         defined in a resource. Such a resource can be called from
         anywhere in your pipeline. Note that this is conceptionally
         more like a "goto" because it will never return.
      -->
     </map:match>
  
     <map:match pattern="slides/">
      <map:call resource="slides"/>
     </map:match>
  
     <map:match pattern="slides/style">
      <map:read mime-type="text/css" 
src="resources/styles/slides-apachecon.css"/>
     </map:match>
  
     <map:match pattern="style">
      <map:read mime-type="text/css" 
src="resources/styles/slides-apachecon.css"/>
     </map:match>
  
     <map:match pattern="slides/**.gif">
      <map:read mime-type="image/gif" src="docs/samples/{1}.gif"/>
     </map:match>
  
     <map:match pattern="slides/**.jpg">
      <map:read mime-type="image/jpg" src="docs/samples/{1}.jpg"/>
     </map:match>
  
     <map:match pattern="slides/**.png">
      <map:read mime-type="image/png" src="docs/samples/{1}.png"/>
     </map:match>
  
     <!-- =========================== Dynamic ================================ 
-->
     <map:match pattern="xsp/*">
      <map:generate src="docs/samples/xsp/{1}.xsp" type="serverpages"/>
      <map:transform src="stylesheets/dynamic-page2html.xsl">
          <map:parameter name="view-source" value="docs/samples/xsp/{1}.xsp"/>
      <!--
         Run-time configuration is done through these
         <map:parameter/> elements. Again, let's have a look at the
         javadocs: 
  
         "[...] All <map:parameter> declarations will be made
         available in the XSLT stylesheet as xsl:variables. [...]" 
      -->
      </map:transform>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="xsp-plain/*">
      <map:generate src="docs/samples/xsp/{1}.xsp" type="serverpages"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="sql/*">
      <map:generate src="docs/samples/sql/{1}.xml"/>
      <map:transform type="sql">
        <map:parameter name="use-connection" value="personnel"/>
      <!--
         Let's have a look at the user docs:  
  
         "[...] The purpose of the SQLTransformer is to query a
      database and translate the result to XML. [...]" 
      -->
      </map:transform>
      <map:transform src="stylesheets/simple-sql2html.xsl"/>
      <map:serialize/>
     </map:match>
  
     <!-- ========================== Forms ================================= -->
     <map:match pattern="forms/employee">
       <map:act set="employee">
         <map:parameter name="descriptor" 
value="docs/samples/forms/employee.xml"/>
         <!--
            Here an action is used. To be precise: all actions that were
            grouped together to a set named "employee". See user docs on
            actions for more on this.
  
        This fragment until the closing tag of map:act is only
        included if at least one action of this set completes
        successfully.
         -->
         <map:generate src="docs/samples/forms/employee.xsp" 
type="serverpages"/>
         <map:transform src="stylesheets/dynamic-page2html.xsl">
            <map:parameter name="view-source" 
value="docs/samples/forms/employee.xsp"/>
         </map:transform>
         <map:serialize/>
       </map:act>
     </map:match>
  
     <map:match pattern="forms/*">
       <map:generate src="docs/samples/forms/{1}.xsp" type="serverpages"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl">
          <map:parameter name="view-source" value="docs/samples/forms/{1}.xsp"/>
       </map:transform>
       <map:serialize/>
     </map:match>
  
     <!-- ======================= FormValidation ============================= 
-->
  
     <map:match pattern="formvalidation/test">
       <map:act type="form-validator">
          <map:parameter name="descriptor" 
value="docs/samples/formvalidation/descriptor.xml"/>
          <map:parameter name="validate-set" value="car-reservation"/>
          <map:call resource="dynamic-page">
             <map:parameter name="target" 
value="docs/samples/formvalidation/OK"/>
          </map:call>
       </map:act>
       <map:call resource="dynamic-page">
          <map:parameter name="target" 
value="docs/samples/formvalidation/ERROR"/>
       </map:call>
     </map:match>
  
    <!-- ========================== session state 
================================= -->
  
    <map:match pattern="session-state/example">
        <!--
           This example like the next one show, that matches can be
           nested and don't need to match on URIs alone. By using a
           session attribute or the referer header for matches it is
           easy to model a state machine with the sitemap.
  
           There are user documents on this.
        -->
        <map:act type="session-isvalid">
          <!-- if session is valid ... -->
  
          <map:match pattern="1" type="sessionstate">
             <!-- if a specific session attribute matches pattern "1" -->
             <map:match pattern="1" type="next-page">
                <map:call resource="dynamic-page1">
                   <map:parameter name="target" 
value="docs/samples/session-state"/>
                </map:call>
                <!-- by calling this resource, the rest of this fragment here 
is irrelevant -->
             </map:match>
             <map:match pattern="2" type="next-page">
                <map:call resource="dynamic-page1">
                   <map:parameter name="target" 
value="docs/samples/session-state"/>
                </map:call>
             </map:match>
          </map:match>
  
          <map:match pattern="2" type="sessionstate">
             <map:match pattern="1" type="next-page">
                <map:call resource="dynamic-page1">
                   <map:parameter name="target" 
value="docs/samples/session-state"/>
                </map:call>
             </map:match>
             <map:match pattern="2" type="next-page">
                <map:call resource="dynamic-page1">
                   <map:parameter name="target" 
value="docs/samples/session-state"/>
                </map:call>
             </map:match>
          </map:match>
  
          <map:call resource="dynamic-page2">
             <map:parameter name="target" 
value="docs/samples/session-state/state0"/>
          </map:call>
        </map:act>
        <!-- end if session is valid -->
  
        <map:call resource="dynamic-page">
           <map:parameter name="target" 
value="docs/samples/session-state/start"/>
        </map:call>
    </map:match>
  
     <!-- ========================== referer ================================= 
-->
  
    <map:match pattern="referer/*">
       <map:match pattern="http://*/cocoon/referer/a"; type="referer-match">
          <map:call resource="simple-page">
             <map:parameter name="target" 
value="docs/samples/referer/a/{../1}"/>
          </map:call>
       </map:match>
       <map:match pattern="http://*/cocoon/referer/b"; type="referer-match">
          <map:call resource="simple-page">
             <map:parameter name="target" 
value="docs/samples/referer/b/{../1}"/>
          </map:call>
       </map:match>
  
       <map:call resource="simple-page">
          <map:parameter name="target" value="docs/samples/referer/a/a"/>
       </map:call>
    </map:match>
  
     <!-- ========================== Stream ================================= 
-->
     <map:match pattern="request1">
       <map:generate type="stream">
         <map:parameter name="form-name" value="Foo"/>
       </map:generate>
       <map:serialize type="xml"/>
     </map:match>
  
     <map:match pattern="Order">
       <map:generate src="docs/samples/stream/OrderPage.xml"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl"/>
       <map:serialize type="html"/>
     </map:match>
  
     <!-- ========================== XSP Sources ============================== 
-->
     <map:match pattern="view-source/*">
      <map:read mime-type="text/plain" src="docs/samples/slides/{1}"/>
     </map:match>
  
     <map:match pattern="view-source">
      <map:generate src="docs/samples/slides/view-source.xsp" 
type="serverpages"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="view-xsource">
      <map:generate src="docs/samples/slides/view-source.xsp" 
type="serverpages"/>
      <map:serialize type="xml"/>
     </map:match>
  
     <!-- ========================== SOAP ============================== -->
     <map:match pattern="soap/*">
      <map:generate src="docs/samples/soap/{1}.xml" type="serverpages"/>
      <map:serialize type="xml"/>
     </map:match>
  
     <!-- ======================== XScript Samples ========================= -->
     <map:match pattern="xscript/soap-getquote1">
       <map:generate src="docs/samples/xscript/soap-getquote1.xsp" 
type="serverpages"/>
       <map:transform src="docs/samples/xscript/soap-getquote1.xsl"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl">
         <map:parameter name="view-source" 
value="docs/samples/xscript/soap-getquote1.xsp"/>
       </map:transform>
       <map:serialize/>
     </map:match>
  
     <map:match pattern="xscript/*">
       <map:generate src="docs/samples/xscript/{1}.xsp" type="serverpages"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl">
         <map:parameter name="view-source" 
value="docs/samples/xscript/{1}.xsp"/>
       </map:transform>
       <map:serialize/>
     </map:match>
  
     <!-- ========================== Tidy Samples 
============================== -->
     
     <map:match pattern="yahoo">
      <map:generate src="http://www.yahoo.com"; type="html">
        <map:parameter name="xpath" 
value="/html/body/center/table[1]/tr[1]/td[1]/table[position()=last()]"/>
      </map:generate>
      <map:transform src="stylesheets/news/news.xsl"/>
      <map:serialize type="html"/>
     </map:match>
  
     <!-- ========================= Server ================================ -->
     <map:match pattern="legacyProfiles/**.rdf">
      <map:read mime-type="text/rdf" src="resources/legacyProfiles/{1}.rdf"/>
     </map:match>
  
     <map:match pattern="request">
      <map:generate type="request"/>
      <map:serialize type="xml"/>
     </map:match>
  
     <map:match pattern="generror">
      <map:generate src="docs/samples/error-giving-page.xml"/>
      <map:transform src="stylesheets/simple-samples2html.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="status">
      <map:generate src="status" type="status"/>
      <map:transform src="welcome/status2html.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:match pattern="sites/styles/**.css">
      <map:read mime-type="text/css" src="resources/styles/{1}.css"/>
     </map:match>
  
     <map:match pattern="**favicon.ico">
      <map:read mime-type="application/ico" src="resources/icons/cocoon.ico"/>
     </map:match>
     
     <map:match pattern="images/**.gif">
      <map:read mime-type="image/gif" src="resources/images/{1}.gif"/>
     </map:match>
  
     <map:match pattern="images/**.jpg">
      <map:read mime-type="image/jpg" src="resources/images/{1}.jpg"/>
     </map:match>
  
     <map:match pattern="images/**.png">
      <map:read mime-type="image/png" src="resources/images/{1}.png"/>
     </map:match>
  
     <map:match pattern="**/">
      <map:generate src="{1}" type="directory"/>
      <map:transform src="stylesheets/system/directory2html.xsl"/>
      <map:serialize/>
     </map:match>
  
     <map:handle-errors>
      <map:transform src="context://stylesheets/system/error2html.xsl"/>
      <map:serialize status-code="500"/>
     </map:handle-errors>
  
    </map:pipeline>
   </map:pipelines>
  
  </map:sitemap><!-- end of file -->
  
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/error-giving-page.xml
  
  Index: error-giving-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- CVS: $Id: error-giving-page.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp 
$ -->
  
  <!DOCTYPE page [
   <!ELEMENT page (title?, content)>
   <!ELEMENT title (#PCDATA)>
   <!ELEMENT content (para+)>
   <!ELEMENT para (#PCDATA)>
  ]>
  
  <page>
   <title>Hello</title>
   <content>
    </para>This is my first Cocoon page!</para>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/hello-page.xml
  
  Index: hello-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- CVS: $Id: hello-page.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ -->
  
  <!DOCTYPE page [
   <!ELEMENT page (title?, content)>
   <!ELEMENT title (#PCDATA)>
   <!ELEMENT content (para+)>
   <!ELEMENT para (#PCDATA)>
  ]>
  
  <page>
   <title>Hello</title>
   <content>
    <para>This is my first Cocoon page!</para>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sample-apps.xml
  
  Index: sample-apps.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: sample-apps.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ -->
  
  <samples xmlns:xlink="http://www.w3.org/1999/xlink";>
  
    <group name="Back">
     <sample name="Back" href="welcome">
      Back to samples home page
     </sample>
    </group>
  
    <group name="Web Applications">
     <sample name="Protected Area" href="samples/protected/login">
            An example web-application built around db-authenticator,
            form-validator, session-validator and session-invalidator
            actions.
     </sample>
     <sample name="Modular Database Actions" href="samples/mod-db/user-list">
            An example web-application built around database actions from the
              modular package that supports auto increments and more.
     </sample>
    </group>
  
    <group name="Stateful Applications">
     <sample name="Session State" href="session-state/example">
      Here the application state is stored in a session attribute.
     </sample>
     <sample name="Sessionless State" href="referer/a">
      Whereas this example uses the request header referer
      attribute. The complete URL must be known to the sitemap, so this
      works only if you Cocoon's servlet context is /cocoon.
     </sample>
    </group>
  
   
    <group name="Sample Forms">
      <sample name="Cocoon Feedback Wizard" href="samples/xmlform/wizard.html" 
xlink:role="dynamic">
          Presents a sophisticated form handling demo - 
          multi page wizard with two way navigation.
          Features the 
          <link href="#XMLForm Doc!">XMLForm</link> framework which provides 
          <xlink:link href="http://www.w3.org/MarkUp/Forms/";>XForms</xlink:link>
          based markup, 
          <xlink:a 
href="http://www.ascc.net/xml/resource/schematron/schematron.html";>Schematron</xlink:a>
           instance validation and
          automated binding to 
          <xlink:a 
href="http://java.sun.com/products/javabeans/";>JavaBeans</xlink:a> and 
          <xlink:a href="http://www.w3.org/DOM/";>DOM</xlink:a> instances.
      </sample>    <sample name="Manage Employees" href="forms/employee" 
xlink:role="dynamic">
        Adds, updates and deletes Employees to the employees table.  You should 
make sure
        that you have a database and table according to the 
docs/samples/sql/sql-page.xml.sql
        definitions.  Don't forget to change the driver information...
      </sample>
      <sample name="Insert Department" href="forms/add-department" 
xlink:role="dynamic">
        Adds new Departments to the department table.  You should make sure
        that you have a database and table according to the 
docs/samples/sql/sql-page.xml.sql
        definitions.  Don't forget to change the driver information...
      </sample>
      <sample name="Insert Employees" href="forms/add-employee" 
xlink:role="dynamic">
        Adds new Employees to the employees table.  You should make sure
        that you have a database and table according to the 
docs/samples/sql/sql-page.xml.sql
        definitions.  Don't forget to change the driver information...
      </sample>
      <sample name="Form Validation" href="formvalidation/test" 
xlink:role="dynamic">
        This example demonstrates the use of an action to validate user
        input and report validation errors to the user through a taglib.
      </sample>
    </group>
  
  </samples>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sample-dynamic.xml
  
  Index: sample-dynamic.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: sample-dynamic.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ 
-->
  
  <samples xmlns:xlink="http://www.w3.org/1999/xlink";>
  
    <group name="Back">
     <sample name="Back" href="welcome">
      Back to samples home page
     </sample>
    </group>
  
    <group name="Internationalization">
     <sample name="Simple Internationalization" href="i18n/simple.xml">
      Sample for Internationalization.        
     </sample>
  
     <sample name="XSP Internationalization" href="i18n/simple.xsp">
      Sample for Internationalization in an XSP.        
     </sample>
    </group>
  
    <group name="Dynamic Content">
     <sample name="Javascript Generator" href="scripts/hello.js">
      An example of the ScriptGenerator producing XML out of a Javascript 
program.
     </sample>
     <sample name="Python Generator" href="scripts/hello.py">
      An example of the ScriptGenerator producing XML out of a Python program.
      ATTENTION: This example will not work unless you have put the Jython
      interpreter (jython.jar) from www.jython.org in the WEB-INF/lib directory 
      of your Cocoon webapp context.
     </sample>
     <sample name="Velocity Generator" href="templates/hello-page.vm">
      An example of the VelocityGenerator producing XML out of a Velocity 
Template.
     </sample>
     <sample name="Parameterised Redirect" 
href="redirect?dest=http://xml.apache.org/";>
      An example of redirecting a client based on a request parameter.
     </sample>
     <sample name="Yahoo Screen Scrape" href="yahoo">
      An example of HTML Generator scraping a part of the Yahoo main page.
     </sample>
  <!-- FIX ME
     <sample name="Parent Component Manager" href="parentcm">
      An example showing the use of a parent component manager. For this sample 
to work,
      Cocoon must have been built with the include.webapp.libs flag set to 
true. (Otherwise
      the sample classes are not found.)
     </sample>
  -->
    </group>
  
    <group name="XScript and SOAP">
     <sample name="Simple Sample" href="xscript/simple">
         A simple sample for XScript.
     </sample>
     <sample name="SOAP Stock Quote Example 1" href="xscript/soap-getquote1">
         This page demonstrates the SOAP logicsheet for
         Cocoon. It accesses a SOAP service that provides stock quotes
         and displays the result.
     </sample>
     <sample name="SOAP Sample 2" href="xscript/soap-getquote2">
         This example uses an inline XSLT stylesheet and an
         XScript transform instruction to extract the stock
         price.
     </sample>
     <sample name="SOAP Sample 3" href="xscript/soap-getquote3">
         This is yet another example of the XScript and SOAP
         logicsheets. This sample is very similar with
         SOAP Sample 2, except that the stylesheet is defined in an external 
file.
     </sample>
    </group>
  
    <group name="Database Access">
     <sample name="Simple SQL" href="sql/sql-page" xlink:role="dynamic">
      Simple SQL example. You should make sure that you have a database and
      table according to the conf/sitemap.xmap and the
      docs/samples/sql/sql-page.xml.sql definitions.
     </sample>
     <sample name="ESQL" href="xsp/esql" xlink:role="dynamic">
      Simple example of the ESQL logicsheet.
     </sample>
    </group>
  
    <group name="Aggregation Sample">
     <sample name="Slashdot" href="news/slashdot.xml">
      Live XML Feed from Slashdot.
     </sample>
     <sample name="Moreover.com" href="news/moreover.xml">
      Live XML Developer News Feed from moreover.com.
     </sample>
     <sample name="XMLHack.com" href="news/xmlhack.xml">
      Live Channel Feed from XMLHack.com.
     </sample>
     <sample name="Aggregation" href="news/aggregate.xml">
      Single Web Page with News from all sources above aggregated by
      the sitemap.
     </sample>
     <sample name="Aggregation" href="news/aggregate">
      Single Web Page with News from all sources above aggregated by
      include transformer.
     </sample>
    </group>
  </samples>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sample-static.xml
  
  Index: sample-static.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: sample-static.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ -->
  
  <samples xmlns:xlink="http://www.w3.org/1999/xlink";>
  
    <group name="Back">
     <sample name="Back" href="welcome">
      Back to samples home page
     </sample>
    </group>
  
    <group name="XML-ized web sites">
     <sample name="java.apache.org" href="sites/java.apache.org">
      This page shows a much more complex example that shows how powerful
      is the style separation and how powerful XML+XSLT can be even for
      web publishing.
     </sample>
     <sample name="jakarta.apache.org" href="sites/jakarta.apache.org">
      This pages shows the XML-ized version of the Apache Jakarta web site.
     </sample>
    </group>
  
    <group name="XML Entity Catalogs">
     <sample name="Entity Resolution Using Catalogs" href="catalog-demo">
      External entities (e.g. DTDs, symbols, character entity sets, images) are
      resolved to local copies of the resources. The catalog manager facilitates
      the mapping between public identifiers or system identifiers and other
      system identifiers.
     </sample>
    </group>
  
    <group name="CC/PP and UAProf">
      <sample name="Quick Start" href="documents/developing/deliquick.html">
        Read this to find out how to enable DELI before trying the test pages.
      </sample>
      <sample name="DELI" href="deli.html">
         Test page for HTML clients.
      </sample>
      <sample name="DELI" href="deli.wml">
         Test page for WAP clients.
      </sample>
    </group>
  
    <group name="Static Content">
     <sample name="Formatting Objects" href="fo">
      This is an example of XML-FO document translated into PDF by Apache FOP.
     </sample>
     <sample name="Scalable Vector Graphics" href="svg">
      An example of an SVG document rendered into a PNG image.
     </sample>
     <sample name="SVG Welcome Page" href="welcome-svg">
      A version of this page rendered as a series of SVG
      images embedded within an HTML page. This example
      uses the 'fragment extractor' transformer and generator
      to automatically extract the images and feed them through
      a separate pipeline.
     </sample>
    </group>
  
  </samples>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sample-xsp.xml
  
  Index: sample-xsp.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: sample-xsp.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ -->
  
  <samples xmlns:xlink="http://www.w3.org/1999/xlink";>
  
    <group name="Back">
     <sample name="Back" href="welcome">
      Back to samples home page.
     </sample>
    </group>
  
    <group name="Hello, XSP">
     <sample name="Hello Page" href="xsp/hello">
      Dynamically generated hello page.
     </sample>
  
     <sample name="Logicsheet" href="xsp/logicsheet">
      Greetings page with logic separated into logicsheet.
     </sample>
  
     <sample name="Cacheable" href="xsp/cacheable">
      Cacheable XSP page.
     </sample>
    </group>
  
    <group name="Java Server Pages">
     <note>
      Note: Depending on your servlet engine, this example might not work 
directly. 
      For more information on how to configure the JSP components please refer 
to the
      documentation.
     </note>
     <sample name="JSP Generator" href="jsp/hello">
      An example of the JSPGenerator producing XML out of using JSP.
     </sample>
     <sample name="JSP Reader" href="jsp/welcome.htm">
      An example of the JSPReader producing HTML out of using JSP.
     </sample>
    </group>
  
    <group name="eXtensible Server Pages in Java">
     <sample name="Simple XSP" href="xsp/simple">
      Simple XSP example showing usage of several logicsheets.
     </sample>
     <sample name="ESQL" href="xsp/esql" xlink:role="dynamic">
      Simple example of the ESQL logicsheet.
     </sample>
     <sample name="Session XSP" href="xsp/sessionpage" xlink:role="dynamic">
      Sample Session XSP to illustrate session handling.
     </sample>
     <sample name="File Uploads" href="xsp/upload" xlink:role="dynamic">
      Sample to illustrate file uploads.
     </sample>
     <sample name="Request" href="xsp/request" xlink:role="dynamic">
      Request logicsheet tests.
     </sample>
     <sample name="Response" href="xsp/response" xlink:role="dynamic">
      Response logicsheet tests.
     </sample>
     <sample name="Session" href="xsp/session" xlink:role="dynamic">
      Session logicsheet tests.
     </sample>
     <sample name="Cookie" href="xsp/cookie" xlink:role="dynamic">
      Cookies logicsheet tests.
     </sample>
     <sample name="Util" href="xsp/resolver" xlink:role="dynamic">
      Util logicsheet tests.
     </sample>
    </group>
  
    <group name="eXtensible Server Pages in Javascript">
     <sample name="Hello" href="xsp-js/hello">
      Hello in Javascript
     </sample>
     <sample name="Simple" href="xsp-js/simple" xlink:role="dynamic">
      Another simple XSP example.
     </sample>
     <sample name="Request" href="xsp-js/request" xlink:role="dynamic">
      Request logicsheet tests (same as in Java).
     </sample>
     <sample name="Response" href="xsp-js/response" xlink:role="dynamic">
      Response logicsheet tests (same as in Java).
     </sample>
     <sample name="Session" href="xsp-js/session" xlink:role="dynamic">
      Session logicsheet tests (same as in Java).
     </sample>
    </group>
  
    <group name="eXtensible Server Pages in Python">
     <sample name="Hello" href="xsp-py/hello">
      Hello in Python
     </sample>
    </group>
  </samples>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/samples.xml
  
  Index: samples.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: samples.xml,v 1.1 2002/07/02 13:06:36 cziegeler Exp $ -->
  
  <samples xmlns:xlink="http://www.w3.org/1999/xlink";>
  
    <group name="Multimedia Hello World">
     <sample name="HTML" href="hello.html">
      This is a very simple demonstration of how to use Cocoon. A simple XML 
page
      is transformed into an HTML page.
     </sample>
     <sample name="WML" href="hello.wml">
      Now something more juicy: the exact same page is translated into WAP WML.
     </sample>
     <sample name="VoxML" href="hello.vml">
      Maybe you have your hands busy? with VoxML you don't need hands, just 
your voice.
     </sample>
     <sample name="SVG" href="hello.svg">
      Need a fancier look? No problem, SVG is your friend.
     </sample>
     <sample name="VRML" href="hello.wrl">
      Need more space? Well, not really useful in this case, but VRML may come 
handy.
     </sample>
     <sample name="PDF" href="hello.pdf">
      Printed HTML sucks? Don't worry, your friend Cocoon gives you a nice PDF.
     </sample>
    </group>
  
    <group name="Documentation">
     <sample name="Docs" href="documents/index">
      The Cocoon documentation.
     </sample>
     <sample name="Tutorial" href="tutorial/home.html">
      A tutorial on Cocoon.
     </sample>
     <sample name="List of docs" href="documents/doclist.html">
      Generated list of all documentation (aggregates each book.xml)
     </sample>
     <sample name="Slides" href="slides/slides">
      Presentation of Cocoon 1 shown at ApacheCon 2000. (Example of complex 
XSLT usage)
     </sample>
     <sample name="Search the docs" href="samples/search/welcome">
      Search into the cocoon documentation using Apache Lucene.
     </sample>
    </group>
  
    <group name="More Samples">
     <sample name="Static Content" href="sample-static">
      How to produce different type of static content.
     </sample>
  
     <sample name="Server Pages" href="sample-xsp">
      Dynamic content implemented in XSP pages.
     </sample>
  
     <sample name="Dynamic Content" href="sample-dynamic">
      More ways of implementing dynamic content.
     </sample>
  
     <sample name="Authentication Framework" 
href="samples/authentication/login">
      This is a demo of the authentication framework integrated into Cocoon.
     </sample>
  
     <sample name="Portal Framework" href="samples/portal/sunspotdemoportal">
      This is a demo of the portal framework integrated into Cocoon.
     </sample>
  
     <sample name="Sources" href="samples/sub/">
      Samples showing possible ways how to use Cocoon sources in sitemap.
      (These samples are served by sub-sitemap)
     </sample>
  
     <sample name="Web Applications" href="sample-apps">
      Samples showing how to perform form processing, state management,
      and simple web-application with login and protected resources.
     </sample>
     
     <sample name="Legacy file formats" href="samples/poi/">
      Samples showing how to use Apache POI to use common office file formats
      with Cocoon.
     </sample>
     
    </group>
  
    <group name="System Tools And Pages">
     <!-- sample name="Sitemap Editor" href="sitebuilder/openSubSite/">
      Cocoon/JSP based Sitemap Editor.
     </sample -->
     <sample name="Status Page" href="status">
      Cocoon status page.
     </sample>
     <sample name="Request Page" href="request">
      This example shows the usage of the RequestGenerator.
     </sample>
     <sample name="Error Page" href="generror">
      This example shows what happens if an error is triggered in the pipeline.
     </sample>
    </group>
  
  </samples>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/fo/readme.fo
  
  Index: readme.fo
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!--
  THIS IS NOT THE LATEST VERSION OF THE FOP DOCUMENTATION BUT ONLY AN EXAMPLE 
FILE 
  
  This files shows next to the trivial usage of fo:block and fo:inline examples 
of
  - fo:basic-link external-destination
  - fo:basic-link internal-destination
  - fo:table
  - fo:list-block (including a bullet from the font Symbol as list-item-label)
  - fo:page-number-citation (computes dynamically the page number in section 
'content') 
  -->
  
  
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
    <fo:layout-master-set>
  
      <!-- layout for the first page -->
      <fo:simple-page-master master-name="first"
                    page-height="29.7cm" 
                    page-width="21cm"
                    margin-top="1cm" 
                    margin-bottom="2cm" 
                    margin-left="2.5cm" 
                    margin-right="2.5cm">
        <fo:region-body margin-top="3cm"/>
        <fo:region-before extent="3cm"/>
        <fo:region-after extent="1.5cm"/>
      </fo:simple-page-master>
  
      <!-- layout for the other pages -->
      <fo:simple-page-master master-name="rest"
                    page-height="29.7cm" 
                    page-width="21cm"
                    margin-top="1cm" 
                    margin-bottom="2cm" 
                    margin-left="2.5cm" 
                    margin-right="2.5cm">
        <fo:region-body margin-top="2.5cm"/>
        <fo:region-before extent="2.5cm"/>
        <fo:region-after extent="1.5cm"/>
      </fo:simple-page-master>
  
  <fo:page-sequence-master master-name="basicPSM" >
        <fo:repeatable-page-master-alternatives>
                <fo:conditional-page-master-reference master-reference="first"
                        page-position="first" />
                <fo:conditional-page-master-reference master-reference="rest"
                        page-position="rest" />
                <!-- recommended fallback procedure -->
                <fo:conditional-page-master-reference master-reference="rest" />
        </fo:repeatable-page-master-alternatives>
  </fo:page-sequence-master>
  
    </fo:layout-master-set>
    <!-- end: defines page layout -->
  
    <!-- actual layout -->
    <fo:page-sequence master-reference="basicPSM">
  
  
  <fo:static-content flow-name="xsl-region-before">
  <fo:block text-align="end" font-size="10pt" font-family="serif" 
line-height="14pt" color="red" >
  This is not the latest Fop documentation, but just an fo example. FOP - p. 
<fo:page-number/>
  </fo:block>
  </fo:static-content>
  
  
  <fo:flow flow-name="xsl-region-body">
  <fo:block font-size="18pt" font-family="sans-serif" line-height="24pt" 
space-after.optimum="15pt" background-color="blue" color="white" 
text-align="center" padding-top="3pt">FOP: An Open-Source XSL Formatter and 
Renderer</fo:block>
  <fo:block id="sec1" font-size="18pt" font-family="serif" line-height="20pt" 
space-before.optimum="20pt" space-after.optimum="14pt" >A) 
        What is FOP?</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">FOP is the world's 
first print formatter driven by XSL formatting
       objects. It is a Java 1.1 application that reads a formatting object
       tree and then turns it into a PDF document. The formatting object
       tree, can be in the form of an XML document (output by an XSLT engine
       like XT or Xalan) or can be passed in memory as a DOM Document or (in
       the case of XT) SAX events.
  
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">FOP is part of 
Apache's XML project. The homepage of FOP is 
       <fo:inline font-style="italic" font-family="serif"><fo:basic-link 
color="blue" 
external-destination="http://xml.apache.org/fop";>http://xml.apache.org/fop</fo:basic-link></fo:inline>
    </fo:block>
  
  
  
    <fo:block  id="sec2" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >B) 
        Downloading FOP</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">The latest release 
version is <fo:inline font-style="italic" font-family="serif">FOP
  0.20</fo:inline> <fo:inline font-family="serif">
        ()
     </fo:inline>. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">NOTE: you do not 
have to unjar or unzip this jar file.</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Documentation can 
be downloaded here as <fo:inline font-style="italic" font-family="serif">HMTL 
file</fo:inline>
  <fo:inline font-family="serif">
        ()
     </fo:inline> or 
       as <fo:inline font-style="italic" font-family="serif">PDF 
file</fo:inline>
  <fo:inline font-family="serif">
        ()
     </fo:inline>.</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">To run FOP from the 
command line, see Running FOP. If you are interested in 
       embedding FOP in a Java application of your own, see Embedding FOP.
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">You can also 
download the <fo:inline font-style="italic" font-family="serif">source code v. 
0.14</fo:inline>
  <fo:inline font-family="serif">
        ()
     </fo:inline> as jar file</fo:block>
  
  
  
  
  
    <fo:block  id="sec3" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >C) 
        Running FOP</fo:block>
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >1) 
Prerequisites</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Following 
software must be installed:</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">a) Java 1.1.x or 
later</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">For the fo-file 
viewer mode of FOP (see below) you must have the swing classes installed. 
           From Java 1.2 on (aka Java 2) they are part of the standard java 
distribution. 
           If you use Java 1.1.x you must seperately include the swing classes, 
which can
           be found at the <fo:inline font-style="italic" font-family="serif">
           Sun website</fo:inline>
  <fo:inline font-family="serif">
        (http://java.sun.com/products/jfc/#download-swing)
     </fo:inline>. 
        </fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">b) An XML parser 
which supports SAX and DOM like 
            <fo:inline font-style="italic" 
font-family="serif">Xerces-J</fo:inline>
  <fo:inline font-family="serif">
        (http://xml.apache.org/xerces-j/index.html)
     </fo:inline>.</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">c) If you have to 
produce the flow objects files, which are the input for FOP, 
         you need a transformation utility to create this files from your xml 
files. 
         Normally this is an XSLT stylesheet processor like 
         <fo:inline font-style="italic" font-family="serif">XT</fo:inline>
  <fo:inline font-family="serif">
        (http://www.jclark.com/xml/xt.html)
     </fo:inline> 
         or <fo:inline font-style="italic" font-family="serif">XALAN</fo:inline>
  <fo:inline font-family="serif">
        (http://xml.apache.org/xalan/index.html)
     </fo:inline>. 
      </fo:block>
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >2) Starting FOP as an 
standalone application</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">There are three 
ways to run FOP from the command line.</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">a) Batch 
processing formatting objects (fo) files: </fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
org.apache.fop.apps.CommandLine fo-file pdf-file</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">b) Batch 
processing xml files (includes production of the fo-files):</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
org.apache.fop.apps.CommandLine xml-file xsl-file pdf-file</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">c) Previewing the 
fo-file:</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
org.apache.fop.apps.AWTCommandLine fo-file</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Each method uses 
next to the fop classes other packages. The following describes 
         each method in detail.</fo:block>
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >a) Method One</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">One is to first 
use an XSLT engine to produce the formatting object tree as an 
           XML document and then running the class 
org.apache.fop.apps.CommandLine with the
           formatting object file name and PDF filename as arguments. You will 
need to include 
           FOP and your XML Parser in your classpath and so you might invoke 
        </fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java -cp 
fop_x_xx_x.jar;xerces.jar</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">org.apache.fop.apps.CommandLine fo-file 
pdf-file</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">If your SAX 
Parser is other than Xerces, you will need to set the property 
           org.xml.sax.parser to the SAX Parser class to use. The following 
example shows 
           the command line, if you use XP, the XML parser from James Clark: 
        </fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
-Dorg.xml.sax.parser=com.jclark.xml.sax.Driver</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">-cp 
fop_x_xx_x.jar;sax.jar;xt.jar;xp.jar;xerces.jar</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">org.apache.fop.apps.AWTCommandLine 
formatting-tree-file pdf-file</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">(You have to 
include xerces.jar or another xml parser which supports DOM in your classpath.) 
</fo:block>
      
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >b) Method Two</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">Rather than 
performing transformation with an XSLT before invoking FOP, it is 
           possible, if you use XT as your XSLT engine, to just call FOP and 
have it call 
           XT for you. To do this, run the class 
org.apache.fop.apps.CommandLine with the 
           source XML file name, XSL file name and PDF file name as arguments. 
You will 
           need to include FOP, SAX, your SAX Parser and XT in your classpath 
and so you might 
           invoke 
        </fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
-Dorg.xml.sax.parser=com.jclark.xml.sax.Driver</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">-cp 
fop_x_xx_x.jar;xt.jar;xerces.jar</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">org.apache.fop.apps.CommandLine xml-file xsl-file 
pdf-file</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">Again, if your 
SAX Parser is other than Xerces, you will need to set the property
           org.xml.sax.parser to the SAX Parser class to use.
        </fo:block>
      
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >c) Method Three</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">If you already 
produced the FO file, you can preview the results of your 
           transformation without using any pdf viewer by invoking FOP with the 
viewer 
           application. You will need to include FOP and your XML Parser in 
your classpath 
        </fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java -cp 
fop_x_xx_x.jar;xerces.jar</fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">org.apache.fop.apps.AWTCommandLine fo-file </fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">The viewer uses 
the swing classes.</fo:block> 
        <fo:block space-after.optimum="3pt" font-family="serif">Note: If you 
are using java 2 or later (i.e. jdk 1.2. or later) you can put all 
           needed jar files into the subdirectory jdk1.2.x\jre\lib\ext (windows 
example). Then 
           FOP can be started without classpath: 
        </fo:block>
        <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">java 
org.apache.fop.apps.CommandLine fo-file pdf-file</fo:block>
      
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >3) Running FOP on 
MacOS</fo:block>  
      
      <fo:block space-after.optimum="3pt" font-family="serif">Ensure that you 
have a recent MRJ, and that you have downloaded and
         unpacked the XP and SAX distributions. The xp.jar and sax.jar files 
work
         as is on MacOS.
      </fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Drag the FOP 
jarfile onto the JBindery icon. When the first dialog
         appears, type "org.apache.fop.apps.CommandLine" in the "Class name" 
field.
         Using UNIX syntax, type the names of the input formatting-object file 
and
         the output PDF in the "Optional parameters" field.
      </fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Click on the 
Classpath icon. To add the xp.jar and sax.jar files, click
         the "Add .zip file" button, navigate to the file in question, and click
         Open.
      </fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Once both are 
added (the FOP jarfile will already be in the list), click
         Run. A "stdout" window will appear and display FOP runtime messages.
      </fo:block>  
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >4) Problems</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">If you have 
problems running FOP, please have a look at the 
         <fo:inline font-style="italic" font-family="serif">FOP FAQ</fo:inline>
  <fo:inline font-family="serif">
        (faq.html)
     </fo:inline>. If you don't find a solution there,
         you can ask for help on the list [EMAIL PROTECTED] Maybe it's bug and 
         maybe somebody is already working on it. 
      </fo:block>
    
  
  
  
    <fo:block  id="sec4" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >D) 
        Embedding FOP </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Instantiate 
org.apache.fop.apps.Driver. Once this class is 
       instantiated, methods are called to set the
       Renderer to use, the (possibly multiple) ElementMapping(s) to
       use and the PrintWriter to use to output the results of the
       rendering (where applicable). In the case of the Renderer and
       ElementMapping(s), the Driver may be supplied either with the
       object itself, or the name of the class, in which case Driver will
       instantiate the class itself. The advantage of the latter is it
       enables runtime determination of Renderer and ElementMapping(s).
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Once the Driver is 
set up, the buildFOTree method
       is called. Depending on whether DOM or SAX is being used, the
       invocation of the method is either buildFOTree(Document) or
       buildFOTree(Parser, InputSource) respectively.
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">A third possibility 
may be used to build the FO Tree, namely
       calling getDocumentHandler() and firing the SAX events yourself.
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Once the FO Tree is 
built, the format() and render() methods may be
       called in that order.
    </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Here is an example 
use of Driver from CommandLine.java:</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">Driver driver = new 
Driver();</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer",
 version);</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">driver.setWriter(new 
PrintWriter(new FileWriter(args[1])));</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">driver.buildFOTree(parser, 
fileInputSource(args[0]));</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">driver.format();</fo:block>
    <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">driver.render();</fo:block>
  
  
  
  
  
  
    <fo:block  id="sec5" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >E) 
        What's Implemented?</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">Also see STATUS 
for what is being worked on.</fo:block>
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >1) Formatting 
Objects</fo:block>
      <fo:list-block start-indent="1cm" 
provisional-distance-between-starts="12pt" font-family="serif">
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>root </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>layout-master-set </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>simple-page-master </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>region-body </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>region-before </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>region-after </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-sequence </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>sequence-specification </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>sequence-specifier-single </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>sequence-specifier-repeating </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>sequence-specifier-alternating </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>flow </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>static-content </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>block </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>list-block </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>list-item </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>list-item-label </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>list-item-body </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-number </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>display-sequence </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>inline </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>display-rule </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>display-graphic </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>table (minimal support)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>table-column (minimal support)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>table-body (minimal support)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>table-row (minimal support)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>table-cell (minimal support)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
    </fo:list-block>
    
  
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >2) Properties</fo:block>
      <fo:list-block start-indent="1cm" 
provisional-distance-between-starts="12pt" font-family="serif">
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>end-indent </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-master-name </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-master-first </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-master-repeating </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-master-odd </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-master-even </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>margin-top (only on pages and regions)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>margin-bottom (only on pages and regions)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>margin-left (only on pages and regions)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>margin-right (only on pages and regions)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>extent </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-width </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>page-height </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>flow-name </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>font-family </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>font-style </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>font-weight </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>font-size </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>line-height </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>text-align </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>text-align-last </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>space-before.optimum </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>space-after.optimum </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>start-indent </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>end-indent </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>provisional-distance-between-starts </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>provisional-label-separation </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>rule-thickness </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>color </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>wrap-option </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>white-space-treatment </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>break-before </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>break-after </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>text-indent </fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>href</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>column-width</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>background-color</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>padding-top (only in conjunction with background color)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>padding-left (only in conjunction with background color)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>padding-bottom (only in conjunction with background 
color)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
        <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>padding-right (only in conjunction with background color)</fo:block>
  </fo:list-item-body>
  </fo:list-item>
      </fo:list-block>
    
  
  
   
  
  
    <fo:block  id="sec6" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >F) 
        Limitations</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">Although FOP 
implements the above listed fo objects and properties, sometimes it does so 
       only in a limited way. 
    </fo:block>
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >list-block</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">The fo working 
draft allows describes two ways to markup lists.The list-block must have as 
         children either: 1) pairs of fo:list-item-label and fo:list-item-body 
formatting objects, or
         2) fo:list-item formatting objects.</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">At the moment FOP 
only implements the second way. Therefore a list has a basic structure like 
this:</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;fo:list-block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;fo:list-item&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;fo:list-item-label&gt;&lt;fo:block&gt;&lt;/fo:block&gt;&lt;/fo:list-item-label&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;fo:list-item-body&gt;&lt;fo:block&gt;&lt;/fo:block&gt;&lt;/fo:list-item-body&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;/fo:list-item&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;/fo:list-block&gt;</fo:block>
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >Padding</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">Padding works in 
conjunction with indents and spaces. It is only implemented 
         for blocks. At the moment padding can't be used to make extra space 
(indents+spaces
         must be used), but only to control how much the background-color 
extends beyond
         the content rectangle.
      </fo:block>  
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >Tables</fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">There two 
limitations for tables: 1) FOP needs you to explicitly specify column widths 
         2) Cells have to contain block-level FOs. They can't contain straight 
character data.
      </fo:block>
      <fo:block space-after.optimum="3pt" font-family="serif">A working basic 
example of a table looks like this: </fo:block>  
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">&lt;fo:table&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;fo:table-column column-width="150pt"/&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;fo:table-column column-width="150pt"/&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">       &lt;fo:table-body 
font-size="10pt" font-family="sans-serif"&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;/fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;/fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                           
    &lt;fo:block&gt;text&lt;/fo:block&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">                       
&lt;/fo:table-cell&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">               
&lt;/fo:table-row&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" space-after.optimum="0pt">       
&lt;/fo:table-body&gt;</fo:block>
      <fo:block font-size="10pt" font-family="monospace" line-height="12pt" 
space-before.optimum="0pt" 
space-after.optimum="0pt">&lt;/fo:table&gt;</fo:block>
    
  
    
    
  
  
  
  
  
  
  
    <fo:block  id="sec7" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >G) 
        Bugs</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">see STATUS 
file</fo:block>
  
  
  
  
  
  
    <fo:block  id="sec8" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >H) 
        Compiling FOP</fo:block>
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >1. 
Prerequisites</fo:block>
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >a) Java 1.1.x or 
later</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">If you use Java 
1.1.x you must also seperately include the swing classes, which can
           be found at the <fo:inline font-style="italic" font-family="serif">
           Sun website</fo:inline>
  <fo:inline font-family="serif">
        (http://java.sun.com/products/jfc/#download-swing)
     </fo:inline>. From Java 1.2 on (aka Java 2) they are part of the standard 
           distribution. 
        </fo:block>
      
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >b) An XML 
parser</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">An XML parser 
which supports DOM like 
           <fo:inline font-style="italic" 
font-family="serif">Xerces-J</fo:inline>
  <fo:inline font-family="serif">
        (http://xml.apache.org/xerces-j/index.html)
     </fo:inline>.</fo:block>
      
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >c) XT from James 
Clark</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">Some of the 
Java source code in FOP is generated from XML using
           XSLT. XT must be used to generate this code.</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">XT is an XSL 
stylesheet processor written in java. At the moment you
           can't use any other processor, because the make file makes use of 
some
           proprietary features of Clark's xt which allow to write output in 
more
           then one document. You can find XT at <fo:inline font-style="italic" 
font-family="serif">
          James Clark's website</fo:inline>
  <fo:inline font-family="serif">
        (http://www.jclark.com/xml/xt.html)
     </fo:inline>. You have to use XT version 19991105 or later.</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">(Under windows 
you shouldn't use the prepackaged xt.exe but also the
           generic jar file, otherwise make won't work)
        </fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">XT relies on an 
sax parser like XP (also J. Clark), which can be
           downloaded at <fo:inline font-style="italic" 
font-family="serif">James 
           Clark's Website</fo:inline>
  <fo:inline font-family="serif">
        (http://www.jclark.com/xml/xp/index.html)
     </fo:inline>
        </fo:block>
      
      
        <fo:block font-size="14pt" font-family="serif" line-height="16pt" 
space-before.optimum="8pt" space-after.optimum="4pt" >d) make</fo:block>
        <fo:block space-after.optimum="3pt" font-family="serif">Under windows 
it has been reported that the use of the cygnus solutions port 
           of the GNU utilities works. You can find it at 
           <fo:inline font-style="italic" font-family="serif">Cygnus 
Solutions</fo:inline>
  <fo:inline font-family="serif">
        (http://sourceware.cygnus.com/cygwin/)
     </fo:inline>
        </fo:block>
      
    
    
      <fo:block font-size="16pt" font-family="serif" line-height="18pt" 
space-before.optimum="8pt" space-after.optimum="8pt" >Compiling FOP on 
MacOS</fo:block>
      
      <fo:block space-after.optimum="3pt" font-family="serif">We strongly 
recommend the use of Codewarrior Java. This Readme will
         contain a link to more information in the near future.
      </fo:block>
    
  
  
  
  
  
  
    <fo:block  id="sec9" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >I) 
        Getting involved</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">1. Subscribe to 
[email protected] by sending an email 
          to [EMAIL PROTECTED]</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">2. Read the 
archives to fop-dev to get an idea of the issues being 
          discussed. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">3. Subscribe to 
[email protected] by sending an email to 
          [EMAIL PROTECTED] (it is important 
          that you follow changes being made). </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">4. Try :-) to wrap 
your head around the XSL working draft. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">5. Get CVS working 
on your system. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">6. Ask, on fop-dev, 
any questions you have at all about the code, design, etc. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">7. When you feel 
comfortable modifying the code, send diffs to 
          fop-dev with your contributions. </fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">8. Have 
fun!</fo:block>
  
  
  
  
  
  
    <fo:block  id="sec10" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >J) 
        FOP Relevant Specifications</fo:block>
    <fo:list-block start-indent="1cm" 
provisional-distance-between-starts="12pt" font-family="serif">
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">XML 
Recommendation</fo:inline>
  <fo:inline font-family="serif" >
        (<fo:basic-link color="blue" 
external-destination="http://www.w3.org/TR/REC-xml";>http://www.w3.org/TR/REC-xml</fo:basic-link>)
     </fo:inline>    
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">XSL-FO Working 
Draft</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://www.w3.org/TR/WD-xsl/";>http://www.w3.org/TR/WD-xsl/</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">XSLT 
Recommendation</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://www.w3.org/TR/xslt";>http://www.w3.org/TR/xslt</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">PDF 
Documentation</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://partners.adobe.com/asn/developer/acrosdk/DOCS/pdfspec.pdf";>http://partners.adobe.com/asn/developer/acrosdk/DOCS/pdfspec.pdf</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">Simple API for XML 
(SAX)</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://www.megginson.com/SAX/";>http://www.megginson.com/SAX/</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">Document Object Model 
(DOM)</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://www.w3.org/TR/REC-DOM-Level-1";>http://www.w3.org/TR/REC-DOM-Level-1</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">Namespaces in XML 
Recommendation</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://www.w3.org/TR/REC-xml-names/";>http://www.w3.org/TR/REC-xml-names/</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
      <fo:list-item>
  <fo:list-item-label end-indent="label-end()">
  <fo:block><fo:inline font-family="Symbol">&#183;</fo:inline></fo:block>
  </fo:list-item-label>
  <fo:list-item-body start-indent="body-start()">
  <fo:block>
  <fo:inline font-style="italic" font-family="serif">Java JDK 1.1 
Documentation</fo:inline>
  <fo:inline font-family="serif">
        (<fo:basic-link color="blue" 
external-destination="http://java.sun.com/products/jdk/1.1/docs/index.html";>http://java.sun.com/products/jdk/1.1/docs/index.html</fo:basic-link>)
     </fo:inline>
  </fo:block>
  </fo:list-item-body>
  </fo:list-item>
    </fo:list-block>
  
  
  
  
  
  
    <fo:block  id="sec11" font-size="18pt" font-family="serif" 
line-height="20pt" space-before.optimum="20pt" space-after.optimum="14pt" >K) 
        Licence</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif"> 
============================================================================</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">                   
The Apache Software License, Version 1.1</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif"> 
============================================================================</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">    Copyright (C) 
1999 The Apache Software Foundation. All rights reserved.</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif"> Redistribution and 
use in source and binary forms, with or without modification, 
        are permitted provided that the following conditions are met:</fo:block>
    <fo:block space-after.optimum="3pt" font-family="serif">1. Redistributions 
of  source code must  retain the above copyright  notice,
        this list of conditions and the following disclaimer.
    </fo:block>
  
    <fo:block space-after.optimum="3pt" font-family="serif">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.
    </fo:block>
  
    <fo:block space-after.optimum="3pt" font-family="serif">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.
    </fo:block>
  
    <fo:block space-after.optimum="3pt" font-family="serif">4. The names "FOP" 
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
        [EMAIL PROTECTED]
    </fo:block>
  
    <fo:block space-after.optimum="3pt" font-family="serif">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.
    </fo:block> 
    <fo:block space-after.optimum="3pt" font-family="serif">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.
    </fo:block>
     
    <fo:block space-after.optimum="3pt" font-family="serif">
       This software  consists of voluntary contributions made  by many 
individuals
       on  behalf of the Apache Software  Foundation and was  originally 
created by
       James Tauber &lt;[EMAIL PROTECTED]&gt;. For more  information on the 
Apache 
       Software Foundation, please see <fo:inline font-style="italic" 
font-family="serif">http://www.apache.org/</fo:inline>
  <fo:inline font-family="serif">
        (http://www.apache.org/)
     </fo:inline>.
    </fo:block>
  
  <fo:block font-size="14pt" font-family="sans-serif" line-height="10pt" 
space-after.optimum="15pt" font-weight="bold" start-indent="15pt" 
break-before="page">
              Content
           </fo:block>
  <fo:table>
  <fo:table-column column-width="1cm"/>
  <fo:table-column column-width="12cm"/>
  <fo:table-column column-width="1cm"/>
  <fo:table-body font-size="10pt" font-family="sans-serif">
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">A) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec1">What is FOP?</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec1"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">B) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec2">Downloading FOP</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec2"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">C) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec3">Running FOP</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec3"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">D) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec4">Embedding FOP</fo:basic-link> </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec4"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">E) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec5">What's Implemented?</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec5"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">F) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec6">Limitations</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec6"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">G) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec7">Bugs</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec7"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">H) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec8">Compiling FOP</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec8"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">I) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec9">Getting involved</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation ref-id="sec9"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">J) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec10">FOP Relevant 
Specifications</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation 
ref-id="sec10"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  <fo:table-row line-height="12pt">
  <fo:table-cell>
  <fo:block text-align="end">K) 
                       </fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="start"><fo:basic-link color="blue" 
internal-destination="sec11">Licence</fo:basic-link></fo:block>
  </fo:table-cell>
  <fo:table-cell>
  <fo:block text-align="end"><fo:page-number-citation 
ref-id="sec11"/></fo:block>
  </fo:table-cell>
  </fo:table-row>
  </fo:table-body>
  </fo:table>
  
  
  
  </fo:flow>
  </fo:page-sequence>
  </fo:root>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/add-department.xsp
  
  Index: add-department.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
  >
  
    <page>
  
     <title>Add a Department</title>
  
     <content>
     <form action="process-department" method="POST">
       <input name="process" type="hidden" value="Add"/>
       <para>Department Name: <input name="name" type="text"/></para>
       <input type="submit" value="Add"/>
     </form>
     </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/add-employee.xsp
  
  Index: add-employee.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
          xmlns:esql="http://apache.org/cocoon/SQL/v2";
  >
    <page>
      <title>Add an Employee</title>
      <content>
        <form action="process-employee" method="POST">
          <input name="process" type="hidden" value="Add"/>
          <para>Employee Name: <input name="name" type="text"/></para>
          <para>Department:
            <select name="department">
          <esql:connection>
            <esql:pool>personnel</esql:pool>
            <esql:execute-query>
              <esql:query>select id, name from department order by 
name</esql:query>
              <esql:results>
                <esql:row-results>
                  <option>
                    <xsp:attribute name="value"><esql:get-int 
column="id"/></xsp:attribute>
                      <esql:get-string column="name"/>
                  </option>
                </esql:row-results>
              </esql:results>
            </esql:execute-query>
          </esql:connection>
            </select>
          </para>
          <input type="submit" value="Add"/>
        </form>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/employee.xml
  
  Index: employee.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <employee>
    <connection>personnel</connection>
    <table name="employee">
      <keys>
        <key param="employee" dbcol="id" type="int" mode="manual"/>
      </keys>
      <values>
        <value param="name" dbcol="name" type="string"/>
        <value param="department" dbcol="department_id" type="int"/>
      </values>
    </table>
  </employee>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/employee.xsp
  
  Index: employee.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:esql="http://apache.org/cocoon/SQL/v2";
  >
    <page>
      <xsp:logic>
        String empID = request.getParameter("employee");
        String depID = request.getParameter("department");
        String name = request.getParameter("name");
        String message = (String) request.getAttribute("message");
      </xsp:logic>
      <title>Manage Employees</title>
      <para style="backgroud-color:#ff0000"><xsp:expr>(message == 
null?"":message)</xsp:expr></para>
      <content>
        <form name="EmployeeSelection">
            <select size="1" name="employee"
                onChange="top.location.href=window.location.pathname + 
'?employee=' + 
document.forms['EmployeeSelection'].employee.options[document.forms['EmployeeSelection'].employee.options.selectedIndex].value">
              <option value="-1">-- New employee --</option>
              <esql:connection>
                <esql:pool>personnel</esql:pool>
                <esql:execute-query>
                  <esql:query>select id, department_id, name from employee 
order by name</esql:query>
                  <esql:results>
                    <esql:row-results>
                        <xsp:logic>
                          if (<esql:get-string column="id"/>.equals(empID)) {
                              depID = <esql:get-string column="department_id"/>;
                            name = <esql:get-string column="name"/>;
                            xspAttr.addAttribute("", "selected", "selected", 
"CDATA", "");
                          }
                        </xsp:logic>
                      <option>
                        <xsp:attribute name="value"><esql:get-int 
column="id"/></xsp:attribute>
                        <esql:get-string column="name"/>
                      </option>
                    </esql:row-results>
                  </esql:results>
                </esql:execute-query>
              </esql:connection>
            </select>
        </form>
        <form action="" method="POST" name="EmployeeEntry">
          <script>document.forms["EmployeeEntry"].action = 
window.location.pathname</script>
          <input type="hidden" name="employee">
          <xsp:attribute name="value"><xsp:expr>((empID != null) ? empID : 
"")</xsp:expr></xsp:attribute>
        </input>
          <para>Employee Name:
          <input name="name" type="text">
           <xsp:attribute name="value"><xsp:expr>((name != null) ? name : 
"")</xsp:expr></xsp:attribute>
          </input>
        </para>
          <para>Department:
            <select name="department">
              <option value="-1">-- Select department --</option>
              <esql:connection>
                <esql:pool>personnel</esql:pool>
                <esql:execute-query>
                  <esql:query>select id, name from department order by 
name</esql:query>
                  <esql:results>
                    <esql:row-results>
                        <xsp:logic>
                          if (<esql:get-string column="id"/>.equals(depID)) {
                            xspAttr.addAttribute("", "selected", "selected", 
"CDATA", "");
                          }
                        </xsp:logic>
                      <option>
                        <xsp:attribute name="value"><esql:get-int 
column="id"/></xsp:attribute>
                        <esql:get-string column="name"/>
                      </option>
                    </esql:row-results>
                  </esql:results>
                </esql:execute-query>
              </esql:connection>
            </select>
          </para>
          <xsp:logic>
            <![CDATA[
            if (empID != null && !empID.equals("-1")) {
            ]]>
              <input type="submit" name="cocoon-action-Update" value="click 
here to update"/>
              <input type="submit" name="cocoon-action-Delete" value="click 
here to delete"/>
            } else {
              <input type="submit" name="cocoon-action-Add" value="click here 
to add"/>
            }
          </xsp:logic>
        </form>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/process-department.xsp
  
  Index: process-department.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:esql="http://apache.org/cocoon/SQL/v2";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
  >
    <xsp:logic>
      String process = null;
      String name = null;
      int currId = -1;
    </xsp:logic>
    <page>
      <xsp:logic>
        process = <xsp-request:get-parameter name="process"/>;
        name = <xsp-request:get-parameter name="name"/>;
      </xsp:logic>
      <title><xsp:expr>process</xsp:expr> Department Processed</title>
      <content>
        <esql:connection>
          <esql:pool>personnel</esql:pool>
          <esql:execute-query>
            <esql:query>
            select max(id) as maxid from department
          </esql:query>
            <esql:results>
            <esql:row-results>
              <xsp:logic>
                  currId = <esql:get-int column="maxid"/>;
              </xsp:logic>
                <esql:execute-query>
                  <esql:query>
                    insert into department (id, name) values (
                      
(<esql:parameter><xsp:expr>currId</xsp:expr></esql:parameter> + 1),
                      <esql:parameter><xsp:expr>name</xsp:expr></esql:parameter>
                    )
                  </esql:query>
                </esql:execute-query>
            </esql:row-results>
            </esql:results>
          </esql:execute-query>
        </esql:connection>
  
        <para><xsp:expr>name</xsp:expr> added</para>
        <a href="../welcome">Back to the welcome page</a>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/forms/process-employee.xsp
  
  Index: process-employee.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:esql="http://apache.org/cocoon/SQL/v2";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
  >
    <xsp:logic>
      String process = null;
      String name = null;
      String departmentId = null;
      int currId = -1;
    </xsp:logic>
    <page>
      <xsp:logic>
        process = <xsp-request:get-parameter name="process"/>;
        name = <xsp-request:get-parameter name="name"/>;
        departmentId = <xsp-request:get-parameter name="department"/>;
      </xsp:logic>
      <title><xsp:expr>process</xsp:expr> Employee Processed</title>
      <content>
        <esql:connection>
          <esql:pool>personnel</esql:pool>
        <esql:autocommit>false</esql:autocommit>
          <esql:execute-query>
            <esql:query>select max(id) as maxid from employee</esql:query>
            <esql:results>
            <esql:row-results>
              <xsp:logic>
                  currId = <esql:get-int column="maxid"/>;
              </xsp:logic>
                <esql:execute-query>
                  <esql:query>
                    insert into employee (id, name, department_id) values (
                      (<esql:parameter><xsp:expr>currId + 
1</xsp:expr></esql:parameter>),
                      
<esql:parameter><xsp:expr>name</xsp:expr></esql:parameter>,
                    
<esql:parameter><xsp:expr>departmentId</xsp:expr></esql:parameter>
                    )
                  </esql:query>
                </esql:execute-query>
            </esql:row-results>
            </esql:results>
          </esql:execute-query>
        </esql:connection>
  
        <para><xsp:expr>name</xsp:expr> added</para>
        <a href="../welcome">Back to the welcome page</a>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/formvalidation/ERROR.xsp
  
  Index: ERROR.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-formval="http://apache.org/xsp/form-validator/2.0";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
  
     <page>
        <title>Car Reservation</title>
        <content>
  
        <para>
           Informal validation results 
<xsp:expr><xsp-formval:results/></xsp:expr>
        </para>
  
         <form action="test" method="POST">
         <!-- use this to get a clue if the user had a chance to fill in
              any date already -->
         <input type="hidden" name="visited" value="true"/>
         <xsp:logic>
            boolean userHasSeenForm = (<xsp-request:get-parameter 
name="visited"/>!=null);
         </xsp:logic>
        <para>
          How many persons should the car seat? 
          <input type="TEXT" name="persons" size="2">
             <xsp:attribute name="value"><xsp-request:get-parameter 
name="persons" default=""/></xsp:attribute>
          </input>
          <xsp-formval:descriptor 
name="context://docs/samples/formvalidation/descriptor.xml" 
constraint-set="car-reservation">
             <xsp:logic>
                 if (userHasSeenForm) {
                   if (<xsp-formval:is-toosmall name="persons"/> ) {
                        <b> The smallest available car seats 
<xsp-formval:get-attribute parameter="persons" name="min"/></b>
                   } else if ( <xsp-formval:is-toolarge name="persons"/> ) {
                        <b> The largest available car seats 
<xsp-formval:get-attribute parameter="persons" name="max"/></b>
                   } else if (<xsp-formval:is-error name="persons"/> ) {
                        <b> Some error occured. Your input is not correct. </b>
                     };
                 };
             </xsp:logic>
          </xsp-formval:descriptor>
        </para>
  
          <xsp-formval:descriptor 
name="context://docs/samples/formvalidation/descriptor.xml" 
constraint-set="car-reservation">
        <para>
             <xsp-formval:validate name="deposit">
                Please enter your deposit EUR 
                <input type="TEXT" name="deposit" size="10">
                  <xsp:attribute
                  name="value"><xsp-request:get-parameter name="deposit" 
default=""/></xsp:attribute>
                </input>
                <xsp:logic>
                 if (userHasSeenForm) {
                    if ( <xsp-formval:is-null/>) {
                         <b> You need to specify a deposit </b>
                    } else if ( <xsp-formval:is-toosmall/> ) {
                         <b> The deposit has to be at least EUR 
<xsp-formval:get-attribute name="min"/></b>
                    } else if ( <xsp-formval:is-toolarge/> ) {
                         <b> The deposit has to be at most EUR 
<xsp-formval:get-attribute name="max"/></b>
                    } else if (<xsp-formval:is-notpresent/> ) {
                         <b></b>
                    } else if ( <xsp-formval:is-error/>) {
                         <b> Some error occured. Your input is not correct. </b>
                      };
                 };
             </xsp:logic>
             </xsp-formval:validate><br/>
        </para>
  
        <para>
             <xsp-formval:validate name="email">
                Please enter your email
                <input type="TEXT" name="email" size="50">
                  <xsp:attribute
                  name="value"><xsp-request:get-parameter name="email" 
default=""/></xsp:attribute>
                </input>
  
                <xsp:logic>
                 if (userHasSeenForm) {
                    if ( <xsp-formval:is-null/>) {
                         <b> You need to specify an email </b>
                    } else if ( <xsp-formval:is-nomatch/> ) {
                         <b> This does not seem to be a valid email
                    address. Expected <pre><xsp-formval:get-attribute
                    parameter="email" name="matches-regex"/></pre></b>
                    } else if ( <xsp-formval:is-toolarge/> ) {
                         <b> Only addresses with up to 
<xsp-formval:get-attribute parameter="email" name="max-len"/> characters are 
accepted</b>
                    } else if (<xsp-formval:is-notpresent/> ) {
                         <b></b>
                    } else if ( <xsp-formval:is-error/>) {
                         <b> Some error occured. Your input is not correct. </b>
                      };
                    };
             </xsp:logic>
             </xsp-formval:validate><br/>
        </para>
             
          </xsp-formval:descriptor>
          <input type="submit" name="submit" value="submit"/>
        </form>
  
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/formvalidation/OK.xsp
  
  Index: OK.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-formval="http://apache.org/xsp/form-validator/2.0";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
  >
  
     <page>
        <title>Car Reservation</title>
        <content>
  
        <para>You've successfully reserved a car for
        <b><xsp-request:get-parameter name="persons"/></b> with a deposit of
        <b>EUR <xsp-request:get-parameter name="deposit"/></b>.</para> 
  
        <para> Details will be sent to your e-mail address
        <tt><xsp-request:get-parameter name="email"/></tt></para>
  
        <para>You can make a new reservation <a href="test">here</a></para>
  
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/formvalidation/descriptor.xml
  
  Index: descriptor.xml
  ===================================================================
  <?xml version="1.0"?>
  <root>
  
     <parameter name="persons" type="long" min="2" default="9" nullable="yes"/>
     <parameter name="deposit" type="double" min="10.0" max="999.99"/>
     <parameter name="email" type="string" max-len="50" 
matches-regex="^[\d\w][\d\w\-_\.]*@([\d\w\-_]+\.)\w\w\w?$"/>
  
     <constraint-set name="car-reservation">
         <validate name="persons"/>
         <validate name="deposit" min="50.0"/>
         <validate name="email"/>
      </constraint-set>
  
  </root>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/referer/a/a.xml
  
  Index: a.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
   <title>previous state <b>a</b> - current state <b>a</b></title>
   <content>
   <a href="a">a</a>
   <a href="b">b</a>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/referer/a/b.xml
  
  Index: b.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
   <title>previous state <b>a</b> - current state <b>b</b></title>
   <content>
   <a href="a">a</a>
   <a href="b">b</a>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/referer/b/a.xml
  
  Index: a.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
   <title>previous state <b>b</b> - current state <b>a</b></title>
   <content>
   <a href="a">a</a>
   <a href="b">b</a>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/referer/b/b.xml
  
  Index: b.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
   <title>previous state <b>b</b> - current state <b>b</b></title>
   <content>
   <a href="a">a</a>
   <a href="b">b</a>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/addknowncourse.js
  
  Index: addknowncourse.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START addknowncourse.js" )
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session       = request.getSession( false )
  uwid          = session.getAttribute( "uwid" )
  term          = request.getParameter( "term" )
  course                = request.getParameter( "course" )
  distanceEd    = request.getParameter( "distanceEd" )
  extra                 = request.getParameter( "extra" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  course        [" + course + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  
  // Cook things a little to make them palatable to the database
  
  if ( term == "0" ) { term = "" }
  if ( course == "0" ) { course = "" }
  if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
  if ( extra == "on" ) { extra = 2 } else { extra = 1 }
  
  logger.debug( "Cooked" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  course        [" + course + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  
  // Actually do the database work
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  addStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      addStatement = conn.prepareStatement(
      "INSERT INTO studentKnownCourseList ( STUDENT, KNOWN_COURSE, TERM_TAKEN, 
DISTANCE_ED, COURSE_EXTRA)" +
      "VALUES  ( ( SELECT id FROM students WHERE uw_userid = ? ), ?, ?, ?, ? )"
      )
      
      addStatement.setString( 1, uwid ); 
      addStatement.setString( 2, course ); 
      addStatement.setString( 3, term ); 
      addStatement.setString( 4, distanceEd ); 
      addStatement.setString( 5, extra ); 
      
      result = addStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
      
      conn.commit()
      
      actionMap.put( "scriptaction-continue", "" )
      session.setAttribute( "results", "<SUCCESS>Course added at " + Date() + 
"</SUCCESS>" )    
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != addStatement ) { addStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END addknown.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/addunknowncse.js
  
  Index: addunknowncse.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START addunknown.js" )
  
  lectureHrs = 3
  labHrs = 0
  tutorialHrs = 0
  numWeeks = 12
  courseWeight = 1
  cseweight = 0
  math = 0
  sci = 0
  engsci = 0
  engdes = 0
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session    = request.getSession( false )
  uwid       = session.getAttribute( "uwid" )
  term       = request.getParameter( "term" )
  dept       = request.getParameter( "dept" )
  number     = request.getParameter( "number" )
  letter     = request.getParameter( "letter" )
  name       = request.getParameter( "name" )
  lectures   = request.getParameter( "lectures" )
  labs       = request.getParameter( "labs" )
  tutorials  = request.getParameter( "tutorials" )
  weeks      = request.getParameter( "weeks" )
  csetype    = request.getParameter( "csetype" )
  weight     = request.getParameter( "weight" )
  distanceEd = request.getParameter( "distanceEd" )
  extra      = request.getParameter( "extra" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  dept          [" + dept + "]" )
  logger.debug( "  number        [" + number + "]" )
  logger.debug( "  letter        [" + letter + "]" )
  logger.debug( "  name          [" + name + "]" )
  logger.debug( "  lectures      [" + lectures + "]" )
  logger.debug( "  labs          [" + labs + "]" )
  logger.debug( "  tutorials     [" + tutorials + "]" )
  logger.debug( "  weeks         [" + weeks + "]" )
  logger.debug( "  math          [" + math + "]" )
  logger.debug( "  sci           [" + sci + "]" )
  logger.debug( "  engsci        [" + engsci + "]" )
  logger.debug( "  engdes        [" + engdes + "]" )
  logger.debug( "  csetype       [" + csetype + "]" )
  logger.debug( "  weight        [" + weight + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  logger.debug( "  lectureHrs    [" + lectureHrs + "]" )
  logger.debug( "  labHrs        [" + labHrs + "]" )
  logger.debug( "  tutorialHrs   [" + tutorialHrs + "]" )
  logger.debug( "  numWeeks      [" + numWeeks + "]" )
  logger.debug( "  courseWeight  [" + courseWeight + "]" )
  logger.debug( "  cseweight     [" + cseweight + "]" )
  
  // Cook things a little to make them palatable to the database
  
  if (lectures != null) { lectureHrs = ( lectures + "" ) }
  if (labs != null) { labHrs = ( labs + "" ) }
  if (tutorials != null) { tutorialHrs = ( tutorials + "" ) }
  if (weeks != null) { numWeeks = ( weeks + "" ) }
  if (weight != null) { courseWeight = ( weight + "" ) }
  
  // The "/1" is vital to ensure a numeric context
  
  cseweight=(((lectureHrs/1)+(labHrs/2)+(tutorialHrs/2))*numWeeks*courseWeight)
  
  if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
  if ( extra == "on" ) { extra = 2 } else { extra = 1 }
  
  logger.debug( "Cooked" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  dept          [" + dept + "]" )
  logger.debug( "  number        [" + number + "]" )
  logger.debug( "  letter        [" + letter + "]" )
  logger.debug( "  name          [" + name + "]" )
  logger.debug( "  lectures      [" + lectures + "]" )
  logger.debug( "  labs          [" + labs + "]" )
  logger.debug( "  tutorials     [" + tutorials + "]" )
  logger.debug( "  weeks         [" + weeks + "]" )
  logger.debug( "  math          [" + math + "]" )
  logger.debug( "  sci           [" + sci + "]" )
  logger.debug( "  engsci        [" + engsci + "]" )
  logger.debug( "  engdes        [" + engdes + "]" )
  logger.debug( "  csetype       [" + csetype + "]" )
  logger.debug( "  weight        [" + weight + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  logger.debug( "  lectureHrs    [" + lectureHrs + "]" )
  logger.debug( "  labHrs        [" + labHrs + "]" )
  logger.debug( "  tutorialHrs   [" + tutorialHrs + "]" )
  logger.debug( "  numWeeks      [" + numWeeks + "]" )
  logger.debug( "  courseWeight  [" + courseWeight + "]" )
  logger.debug( "  cseweight     [" + cseweight + "]" )
  
  // Actually do the database work
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  addStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      addStatement = conn.prepareStatement(
         "INSERT INTO otherCourses( ID, STUDENT, DEPARTMENT, COURSENUMBER, 
COURSELETTER, COURSENAME, MATH, SCI, ENGSCI, ENGDES, CSETYPE, CSEWEIGHT, 
TERM_TAKEN, DISTANCE_ED, COURSE_EXTRA) VALUES  ( otherCourses_seq.nextval, ( 
SELECT id FROM students WHERE uw_userid = ? ), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
?, ? )"
      )
  
      addStatement.setString( 1, uwid ); 
      addStatement.setString( 2, dept ); 
      addStatement.setString( 3, number ); 
      addStatement.setString( 4, letter ); 
      addStatement.setString( 5, name ); 
      addStatement.setString( 6, math ); 
      addStatement.setString( 7, sci ); 
      addStatement.setString( 8, engsci ); 
      addStatement.setString( 9, engdes ); 
      addStatement.setString( 10, csetype ); 
      addStatement.setString( 11, cseweight ); 
      addStatement.setString( 12, term ); 
      addStatement.setString( 13, distanceEd ); 
      addStatement.setString( 14, extra ); 
  
      result = addStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
  
      conn.commit()
  
      actionMap.put( "scriptaction-continue", "" )
      session.setAttribute( "results", "<SUCCESS>Unknown Complementary Studies 
course added at " + Date() + "</SUCCESS>" )
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != addStatement ) { addStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  
  logger.debug( "END addunknown.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/addunknownte.js
  
  Index: addunknownte.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START addunknownte.js" )
  
  csetype = ""
  weight = 0
  
  lectureHrs = 3
  labHrs = 0
  tutorialHrs = 0
  numWeeks = 12
  
  courseWeight = 0
  mathWeight = 0
  sciWeight = 0
  engsciWeight = 0
  engdesWeight = 0
  
  mathWt = 0
  sciWt = 0
  engsciWt = 0
  engdesWt = 0
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session    = request.getSession( false )
  uwid       = session.getAttribute( "uwid" )
  term       = request.getParameter( "term" )
  dept       = request.getParameter( "dept" )
  number     = request.getParameter( "number" )
  letter     = request.getParameter( "letter" )
  name       = request.getParameter( "name" )
  lectures   = request.getParameter( "lectures" )
  labs       = request.getParameter( "labs" )
  tutorials  = request.getParameter( "tutorials" )
  weeks      = request.getParameter( "weeks" )
  math       = request.getParameter( "math" )
  sci        = request.getParameter( "sci" )
  engsci     = request.getParameter( "engsci" )
  engdes     = request.getParameter( "engdes" )
  distanceEd = request.getParameter( "distanceEd" )
  extra      = request.getParameter( "extra" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  dept          [" + dept + "]" )
  logger.debug( "  number        [" + number + "]" )
  logger.debug( "  letter        [" + letter + "]" )
  logger.debug( "  name          [" + name + "]" )
  logger.debug( "  lectures      [" + lectures + "]" )
  logger.debug( "  labs          [" + labs + "]" )
  logger.debug( "  tutorials     [" + tutorials + "]" )
  logger.debug( "  weeks         [" + weeks + "]" )
  logger.debug( "  math          [" + math + "]" )
  logger.debug( "  sci           [" + sci + "]" )
  logger.debug( "  engsci        [" + engsci + "]" )
  logger.debug( "  engdes        [" + engdes + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  logger.debug( "  courseWeight  [" + courseWeight + "]" )
  logger.debug( "  mathWt        [" + mathWt + "]" )
  logger.debug( "  sciWt         [" + sciWt + "]" )
  logger.debug( "  engsciWt      [" + engsciWt + "]" )
  logger.debug( "  engdesWt      [" + engdesWt + "]" )
  
  // Cook things a little to make them palatable to the database
  
  if (lectures != null) { lectureHrs = ( lectures + "" ) }
  if (labs != null) { labHrs = ( labs + "" ) }
  if (tutorials != null) { tutorialHrs = ( tutorials + "" ) }
  if (weeks != null) { numWeeks = ( weeks + "" ) }
  
  if (math != null) { mathWeight = ( math + "" ) }
  if (sci != null) { sciWeight = ( sci + "" ) }
  if (engsci != null) { engsciWeight = ( engsci + "" ) }
  if (engdes != null) { engdesWeight = ( engdes + "" ) }
  
  // The "/1" is vital to ensure a numeric context
  
  courseWeight=(((lectureHrs/1)+(labHrs/2)+(tutorialHrs/2))*numWeeks)
  mathWt = courseWeight*mathWeight
  sciWt = courseWeight*sciWeight
  engsciWt = courseWeight*engsciWeight
  engdesWt = courseWeight*engdesWeight
  
  if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
  if ( extra == "on" ) { extra = 2 } else { extra = 1 }
  
  logger.debug( "Cooked" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  term          [" + term + "]" )
  logger.debug( "  dept          [" + dept + "]" )
  logger.debug( "  number        [" + number + "]" )
  logger.debug( "  letter        [" + letter + "]" )
  logger.debug( "  name          [" + name + "]" )
  logger.debug( "  lectures      [" + lectures + "]" )
  logger.debug( "  labs          [" + labs + "]" )
  logger.debug( "  tutorials     [" + tutorials + "]" )
  logger.debug( "  weeks         [" + weeks + "]" )
  logger.debug( "  math          [" + math + "]" )
  logger.debug( "  sci           [" + sci + "]" )
  logger.debug( "  engsci        [" + engsci + "]" )
  logger.debug( "  engdes        [" + engdes + "]" )
  logger.debug( "  distanceEd    [" + distanceEd + "]" )
  logger.debug( "  extra         [" + extra + "]" )
  logger.debug( "  courseWeight  [" + courseWeight + "]" )
  logger.debug( "  mathWt        [" + mathWt + "]" )
  logger.debug( "  sciWt         [" + sciWt + "]" )
  logger.debug( "  engsciWt      [" + engsciWt + "]" )
  logger.debug( "  engdesWt      [" + engdesWt + "]" )
  
  // Actually do the database work
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  addStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      addStatement = conn.prepareStatement(
         "INSERT INTO otherCourses( " +
           "ID, STUDENT, DEPARTMENT, COURSENUMBER, COURSELETTER, COURSENAME, 
MATH, SCI, ENGSCI, ENGDES,  TERM_TAKEN, DISTANCE_ED, COURSE_EXTRA, CSEWEIGHT)" +
         "VALUES  ( " +
           "otherCourses_seq.nextval, ( SELECT id FROM students WHERE uw_userid 
= ? ), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)"
      )
  
      addStatement.setString( 1, uwid ); 
      addStatement.setString( 2, dept ); 
      addStatement.setString( 3, number ); 
      addStatement.setString( 4, letter ); 
      addStatement.setString( 5, name ); 
      addStatement.setString( 6, mathWt ); 
      addStatement.setString( 7, sciWt ); 
      addStatement.setString( 8, engsciWt ); 
      addStatement.setString( 9, engdesWt ); 
      addStatement.setString( 10, term ); 
      addStatement.setString( 11, distanceEd ); 
      addStatement.setString( 12, extra ); 
  
      result = addStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
  
      conn.commit()
  
      actionMap.put( "scriptaction-continue", "" )
      session.setAttribute( "results", "<SUCCESS>Unknown Technical Elective 
added at " + Date() + "</SUCCESS>" )
  
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != addStatement ) { addStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END addunknownte.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/createuser.js
  
  Index: createuser.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START createuser.js" )
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session = request.getSession( false )
  uwid  = session.getAttribute( "uwid" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid [" + uwid + "]" )
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  queryStatement = null
  insertStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
  
      // Check that the student exists
  
      queryStatement = conn.prepareStatement(
                "select count(*) here from students where uw_userid=? "
      )
                
      queryStatement.setString( 1, uwid )
        
      resultSet = queryStatement.executeQuery()
      resultSet.next()
         
      userExists = resultSet.getInt("here")
      
      logger.debug( "Result #1 [" + userExists + "]" )
  
      if (!userExists)
      {
  
          logger.debug( "User does not exist...creating and initializing" )
  
          insertStatement = conn.prepareStatement(
                   "INSERT INTO students (id, uw_userid, name, uw_id, 
current_term) values (students_seq.nextval, ?, '','', (SELECT id FROM terms 
WHERE description = '1A'))"
          )
  
          insertStatement.setString( 1, uwid ); 
  
          result = insertStatement.executeUpdate()
          logger.debug( "Result #2 [" + result + "]" )
  
          insertStatement = conn.prepareStatement(
                   "insert into studentNotes (student,note) values ( ( SELECT 
id FROM students WHERE uw_userid = ? ),'')"
          )
  
          insertStatement.setString( 1, uwid ); 
  
          result = insertStatement.executeUpdate()
          logger.debug( "Result #3 [" + result + "]" )
  
          insertStatement = conn.prepareStatement(
                   "INSERT INTO studentKnownCourseList (student, known_course, 
term_taken, distance_ed, course_extra) ( SELECT ( SELECT id FROM students WHERE 
uw_userid = ? ), course, term, '1', '1' FROM corecourses )"
          )
  
          insertStatement.setString( 1, uwid ); 
  
          result = insertStatement.executeUpdate()
          logger.debug( "Result #4 [" + result + "]" )
  
          conn.commit()
      }
      else
      {
          logger.debug( "User exists" )
      }
      actionMap.put( "scriptaction-continue", "" )
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != queryStatement ) { queryStatement.close() }
      if ( null != insertStatement ) { insertStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END createuser.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/deleteknown.js
  
  Index: deleteknown.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START deleteknown.js" )
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session = request.getSession( false )
  uwid  = session.getAttribute( "uwid" )
  id    = request.getParameter( "id" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid          [" + uwid + "]" )
  logger.debug( "  id            [" + id + "]" )
  
  // Actually do the database work
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  addStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      deleteStatement = conn.prepareStatement(
          "DELETE FROM studentknowncourselist WHERE student = ( SELECT id FROM 
students WHERE uw_userid = ? ) AND known_course = ?"
      )
  
      deleteStatement.setString( 1, uwid ); 
      deleteStatement.setString( 2, id ); 
  
      result = deleteStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
  
      conn.commit()
  
      actionMap.put( "scriptaction-continue", "" )
      session.setAttribute( "results", "<SUCCESS>Course deleted at " + Date() + 
"</SUCCESS>" )
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != addStatement ) { addStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END deleteknown.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/deleteunknown.js
  
  Index: deleteunknown.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START deleteunknown.js" )
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  id      = request.getParameter( "id" )
  
  logger.debug( "Raw" )
  logger.debug( "  id            [" + id + "]" )
  
  // Actually do the database work
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  addStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      deleteStatement = conn.prepareStatement(
                "DELETE FROM otherCourses WHERE id = ?"
      )
  
      deleteStatement.setString( 1, id ); 
  
      result = deleteStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
  
      conn.commit()
  
      actionMap.put( "scriptaction-continue", "" )
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != addStatement ) { addStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END deleteunknown.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/login.js
  
  Index: login.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START login.js" )
  
  // Retrieve things from the request
  // NOTE: they are all of type java.lang.String
  
  uwid     = request.getParameter( "uwid" )
  password = request.getParameter( "password" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid     [" + uwid + "]" )
  //logger.debug( "  password [" + password + "]" )
  
  // Hack since either the guy we stole the code from or
  // Bruce has made an implementation error
  
  password = password + "\0\0\0\0\0\0\0\0\0"
  
  //logger.debug( "Cooked" )
  //logger.debug( "  password [" + password + "]" )
  
  try
  {
  
      session = request.getSession(true)
  
      radius = new Packages.RadiusClient( 
"engine.uwaterloo.ca","1812","7sjU2xbHa31s2" )
      result = radius.Authenticate( uwid, password )
  
      if ( radius.ACCESS_ACCEPT == result )
      {
          logger.debug( "Authentication succeeded" )
          
          // Get (and optionally create) and populate the session
          
          session.setAttribute( "uwid", uwid )
          
          actionMap.put( "scriptaction-continue", "" )    
      }
      else
      {
          logger.debug( "Authentication failed" )
          session.setAttribute( "results", "<FAILURE>Incorrect User ID or 
Password</FAILURE>" )
      }
  
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  
  logger.debug( "END login.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/script-action/updateinfo.js
  
  Index: updateinfo.js
  ===================================================================
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  scriptaction = bsf.lookupBean( "scriptaction" )
  manager      = bsf.lookupBean( "manager" )            
  request      = bsf.lookupBean( "request" )
  logger       = bsf.lookupBean( "logger" )
  actionMap    = bsf.lookupBean( "actionMap" )
  
  // Step 2 -- Perform the action
  
  logger.debug( "START updateinfo.js" )
  
  // Retrieve things from the session and request
  // NOTE: they are all of type java.lang.String
  
  session       = request.getSession( false )
  uwid        = session.getAttribute( "uwid" )
  studentname   = request.getParameter( "studentname" )
  studentnumber = request.getParameter( "studentnumber" )
  current_term  = request.getParameter( "current_term" )
  note          = request.getParameter( "note" )
  
  logger.debug( "Raw" )
  logger.debug( "  uwid           [" + uwid + "]" )
  logger.debug( "  studentname    [" + studentname + "]" )
  logger.debug( "  studentnumber  [" + studentnumber + "]" )
  logger.debug( "  current_term   [" + current_term + "]" )
  logger.debug( "  note           [" + note + "]" )
  
  // Cook things to make them more palatable to the database
  
  note = ( note + "" ) // convert to a JS string
  if (note == " ") { note="" }
  
  if ( note.length > 255 )
  {
     note = note.substring( 0, 255 ); // take the leading 255 characters
  }
  
  logger.debug( "Cooked" )
  logger.debug( "  uwid           [" + uwid + "]" )
  logger.debug( "  studentname    [" + studentname + "]" )
  logger.debug( "  studentnumber  [" + studentnumber + "]" )
  logger.debug( "  current_term   [" + current_term + "]" )
  logger.debug( "  note           [" + note + "]" )
  
  // We have the choice of declaring things out here and making them explicitly
  // null, or we have to use a different comparison in the "finally" block 
(defined?)
  
  dbselector = null
  datasource = null
  conn = null
  updateStatement = null
  
  try
  {
      dbselector = manager.lookup( scriptaction.DB_CONNECTION )
      datasource = dbselector.select( "ceabplanner" )
      conn = datasource.getConnection()    
      updateStatement = conn.prepareStatement(
          "UPDATE students SET name = ?, current_term = ?, uw_id = ? WHERE 
uw_userid = ? "
      )
                
      updateStatement.setString( 1, studentname ); 
      updateStatement.setString( 2, current_term ); 
      updateStatement.setString( 3, studentnumber ); 
      updateStatement.setString( 4, uwid ); 
        
      result = updateStatement.executeUpdate()
      logger.debug( "Result #1 [" + result + "]" )
  
      updateStatement = conn.prepareStatement(
          "UPDATE studentnotes SET note = ? WHERE student = ( SELECT id FROM 
students WHERE uw_userid = ? )"
      )
  
      updateStatement.setString( 1, note ); 
      updateStatement.setString( 2, uwid ); 
  
      result = updateStatement.executeUpdate()
      logger.debug( "Result #2 [" + result + "]" )
  
      conn.commit()
      
      actionMap.put( "scriptaction-continue", "" )
      session.setAttribute( "results", "<SUCCESS>Information Saved at " + 
Date() + "</SUCCESS>" )
  
  }
  catch( ex )
  {
      logger.debug( "Caught Exception" )
      logger.debug( "  " + ex )
  }
  finally
  {
      if ( null != updateStatement ) { updateStatement.close() }
      if ( null != conn ) { conn.close() }
      if ( null != datasource ) { dbselector.release( datasource ) }
      if ( null != dbselector ) { manager.release( dbselector ) }
  }
  
  logger.debug( "END updateinfo.js" )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/scripts/hello.js
  
  Index: hello.js
  ===================================================================
  // Sample javascript script for use with ScriptGenerator
  
  // Step 1 -- Retrieve helper "beans" from the BSF framework
  
  out      = bsf.lookupBean( "output" )
  logger   = bsf.lookupBean( "logger" )
  resolver = bsf.lookupBean( "resolver" )
  source   = bsf.lookupBean( "source" )
  objModel = bsf.lookupBean( "objectModel" )
  params   = bsf.lookupBean( "parameters" )
  
  // Step 2 -- Generate xml using whatever means you desire
  
  xml = " \
  <page> \
    <title>Hello</title> \
    <content> \
      <para>This is my first Cocoon2 page!</para> \
      <para>With help from JavaScript!</para> \
    </content> \
  </page>"
  
  // note that you have access to the Cocoon logger
  
  logger.debug( "Debug message from JavaScript" )
  
  // Step 3 -- Append the generated xml to the output StringBuffer
  
  out.append( xml )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/scripts/hello.py
  
  Index: hello.py
  ===================================================================
  # Sample python script for use with ScriptGenerator
  
  # Step 1 -- Retrieve helper "beans" from the BSF framework
  
  out      = bsf.lookupBean( "output" )
  logger   = bsf.lookupBean( "logger" )
  resolver = bsf.lookupBean( "resolver" )
  source   = bsf.lookupBean( "source" )
  objModel = bsf.lookupBean( "objectModel" )
  params   = bsf.lookupBean( "parameters" )
  
  # Step 2 -- Generate xml using whatever means you desire
  
  xml="""
  <page>
    <title>Hello</title>
    <content>
      <para>This is my first Cocoon2 page!</para>
      <para>With help from Python!</para>
    </content>
  </page>"""
  
  # note that you have access to the Cocoon logger
  
  logger.debug( "Debug message from Python" )
  
  # Step 3 -- Append the generated xml to the output StringBuffer
  
  out.append( xml )
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/start.xsp
  
  Index: start.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>Start page.</title>
        <content>
        <para>
        This could be a login page. <a href="example">continue</a>
        </para>
        <xsp:logic>
        String sessionID = <session:get-id/>;
        </xsp:logic>
        
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/state01.xsp
  
  Index: state01.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>state 0-1</title>
        <content>
  
           <form action="example" method="get">
             <select size="1" name="next-state">
             <option value="1">1</option>
             <option value="2">2</option>
             </select>
             <input type="submit" name="go" value="go"/>
         </form>
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/state11.xsp
  
  Index: state11.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>state 1-1</title>
        <content>
  
           <form action="example" method="get">
             <select size="1" name="next-state">
             <option value="1">1</option>
             <option value="2">2</option>
             </select>
             <input type="submit" name="go" value="go"/>
         </form>
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/state12.xsp
  
  Index: state12.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>state 1-2</title>
        <content>
  
           <form action="example" method="get">
             <select size="1" name="next-state">
             <option value="1">1</option>
             <option value="2">2</option>
             </select>
             <input type="submit" name="go" value="go"/>
         </form>
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/state21.xsp
  
  Index: state21.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>state 2-1</title>
        <content>
  
           <form action="example" method="get">
             <select size="1" name="next-state">
             <option value="1">1</option>
             <option value="2">2</option>
             </select>
             <input type="submit" name="go" value="go"/>
         </form>
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/session-state/state22.xsp
  
  Index: state22.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
  <xsp:page
     language="java"
     xmlns:xsp="http://apache.org/xsp";
     xmlns:xsp-request="http://apache.org/xsp/request/2.0";
     xmlns:session="http://apache.org/xsp/session/2.0";
  >
     <page>
        <title>state 2-2</title>
        <content>
  
           <form action="example" method="get">
             <select size="1" name="next-state">
             <option value="1">1</option>
             <option value="2">2</option>
             </select>
             <input type="submit" name="go" value="go"/>
         </form>
        </content>
     </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sites/jakarta_apache_org.xml
  
  Index: jakarta_apache_org.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page title="The Jakarta Project">
   <logo href="images/banner.gif"/>
   <sidebar>
    <group name="Essentials">
     <link href="index.html">Front Page</link>
     <link href="news/news.html">News &amp; Status</link>
     <link href="mission/index.html">Mission</link>
     <link href="guidelines/index.html">Guidelines</link>
     <link href="faq/faqindex.html">FAQs</link>
    </group>
    <group name="Download">
     <link href="downloads/binindex.html">Binaries</link>
     <link href="downloads/sourceindex.html">Source Code</link>  
    </group>  
    <group name="Get Involved">
     <link href="getinvolved/getinvolvedindex.html">Overview</link>
     <link href="getinvolved/cvsindex.html">CVS Repositories</link>
     <link href="getinvolved/mail.html">Mailing Lists</link>
     <link href="getinvolved/library.html">Reference Library</link>
    </group>
    <group name="SubProjects">
     <link href="tomcat/index.html">Tomcat</link>
     <link href="check/index.html">Tomcat Check</link>  
    </group>
    <group name="Credits">
     <link href="credits/whoweare.html">Who We Are</link>
     <link href="credits/acknowledgements.html">Acknowledgements</link>
    </group>
   </sidebar>
   
   <body>
    <p>
     The goal of the Jakarta Project is to provide commercial-quality
     server solutions based on the Java Platform that are developed in an
     open and cooperative fashion.
    </p>
       
    <p>
     The Jakarta Project has nothing to do, nor condones, the unfortunate
     situtation in East Timor. For more information about why the project
     is named &quot;Jakarta&quot; <a href="naming.html">click here</a>.
    </p>
  
    <section title="Tomcat: Java Servlets and JavaServer Pages Reference 
Implementation">
     <p>
      The flagship product, Tomcat, is a world-class implementation of the
      Java Servlet 2.2 and JavaServer Pages 1.1 Specifications. This
      implementation will be used in the Apache Web Server as well as in
      other web servers and development tools.
     </p>
       
     <p>
      The Tomcat Implementation is currently in beta form. We are working
      diligently on merging the current Apache Jserv Project's source code
      with the Sun code. We expect to have a final release of Tomcat by the
      end of 1999. To learn more about the various Tomcat releases, <a
      href="downloads/binindex.html">click here</a>.
     </p>
    </section>
    
    <section title="Anyone Can Participate">
     <p>
      The Jakarta Project is composed of members of the current Apache Jserv
      Project, engineers from major corporations such as Sun and IBM, and
      serious, committed developers at large. All interested developers are
      welcome to join and participate. To learn more about getting involved,
      <a href="getinvolved/getinvolvedindex.html">click here</a>.
     </p> 
    </section>
   </body>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sites/java_apache_org.xml
  
  Index: java_apache_org.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
  
   <title>The Java Apache Project News</title>
   <author>Stefano Mazzocchi</author>
   <version>$Id: java_apache_org.xml,v 1.1 2002/07/02 13:06:38 cziegeler Exp 
$</version>
    
   <newscolumn>
    <news>
     <title>Avalon 3.0 alpha released!</title>
     <link>http://java.apache.org/framework</link>
     <date>11 Oct 2000</date>
     <content>
       Avalon 3.0. This is the latest release of the Apache Server Framework. 
It includes
       security pattern enforcement, and improved deployment and enhanced 
classloading.
       Documentation has been completely renewed. 
     </content>
    </news>
    <news>
     <title>Java Apache Mail Enterprise Server (JAMES) 1.1 Released!</title>
     <link>http://java.apache.org/james</link>
     <date>27 Jul 2000</date>
     <content>
       JAMES 1.1 is the second release of a 100% pure Java Mail Server which 
implements our
       Mailet (similar to Servlet) technology to provide a powerful mail based 
application
       server. It is based on the Avalon server framework.  
     </content>
    </news>
    <news>
     <title>Apache JServ 1.1.2 Released!</title>
     <link>http://java.apache.org/jserv</link>
     <date>17 Jun 2000</date>
     <content>
       Apache JServ 1.1.2 has been released. This version fixes some minor 
bugs. Please see
       the change log for details.
     </content>
    </news>
    <news>
     <title>Apache Jetspeed 1.2b1 Released!</title>
     <link>http://java.apache.org/jetspeed</link>
     <date>15 Jun 2000</date>
     <content>
       Apache Jetspeed 1.2b1 has been released. This version provides an 
implementation of
       iCalendar (RFC 2445), Portal Structure Markup Language (PSML) and 
numerous
       performance improvements.  
     </content>
    </news>
   </newscolumn>
   
   <statuscolumn>
   
    <project>
     <title>Apache JServ</title>
     <link>http://java.apache.org/jserv</link>
     
     <release>
      <version>1.1.2</version>
      <status type="available">Released</status>
      <comment>
        This new generation comes with: major performance improvements,  
improved
        installation and documentation, tons of bug fixes, and much more. 
      </comment>
     </release>
    </project>
   
    <project>
     <title>Apache Avalon Framework</title>
     <link>http://java.apache.org/framework</link>
     
     <release>
      <version>3.0a3</version>
      <status type="available">Released</status>
      <comment>
        The Avalon project is an effort to create, design, develop and maintain 
a
        common framework for server applications written using the Java 
language. This
        framework will not be a standalone product, but will allow existing and 
yet to
        be created server applications to fit into a common platform and to 
share code,
        design and human resources. 
      </comment>
     </release>
    </project>
   
    <project>
     <title>Apache JMeter</title>
     <link>http://java.apache.org/jmeter</link>
     
     <release>
      <version>1.4</version>
      <status type="available">Released</status>
      <comment>
        The 100% pure, swing enabled, Java URL profiler/analyzer 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-cocoon2/src/webapp/samples/docs/samples/slides/clean-page.xml
  
  Index: clean-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "[EMAIL PROTECTED]" -->
  <!-- Version: $Id: clean-page.xml,v 1.1 2002/07/02 13:06:38 cziegeler Exp $ 
-->
  
  <page>
   <title>First XSP Page</title>
   <author>
    <name>Stefano Mazzocchi</name>
    <address>[EMAIL PROTECTED]</address>
   </author>
  
   <p>Hi, I'm your first XSP page ever.</p>
  
   <p>I've been requested <count/> times.</p>
  
   <p>The content you are seeing in this page is provided to you
   by an XML content producer that was compiled into Java bytecode
   and executed at request time. This allows greater flexibility and
   ease of use for page programmers without any performance degradation
   since all XML parsing and such is precompiled and it's avoided at
   request time.</p>
  
   <p>Let's show some useful information with expression evaluation...</p>
  
   <request-data>
    <string name="Request method" method="Method"/>
    <string name="Request URI" method="RequestURI"/>
    <string name="Request protocol" method="Protocol"/>
    <string name="Servlet path" method="ServletPath"/>
    <string name="Path info" method="PathInfo"/>
    <string name="Path translated" method="PathTranslated"/>
    <string name="Query string" method="QueryString"/>
    <int name="Content length" method="ContentLength"/>
    <string name="Content type" method="ContentType"/>
    <string name="Server name" method="ServerName"/>
    <int name="Server port" method="ServerPort"/>
    <string name="Remote user" method="RemoteUser"/>
    <string name="Remote address" method="RemoteAddr"/>
    <string name="Remote host" method="RemoteHost"/>
    <string name="Authorization scheme" method="AuthType"/>
   </request-data>
  
   <p>Ok. Now that you know how logic can be transformed into content, let's
   add some juice and mix logic with content generation
   in a way that allows you to forget about what method is used to generate and
   handle the content as XML and concentrate on having your work done.
   Note, how XSP don't allow you to explicitly write something on the response
   from the logic realm: this is one of the major
   differences between XSP and other server pages technologies and allows
   further processing of the produced content, as required, for example, by
   XSL-transformations.</p>
  
   <request-headers/>
  
   <servlet-parameters/>
  
   <p>All right, the first XSP page is over, but you can see the
   dynamically syntax highlighted
   <link href="../view-source.xml?filename=clean-page.xml">source of this 
page</link>
   and its <link 
href="../view-source.xml?filename=page-xsp.xsl">logicsheet</link>
   provided to you by another XSP page.</p>
  
   <p>Enjoy XSP!</p>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/database-page.xml
  
  Index: database-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <?cocoon-process type="sql"?>
  
  <page>
  
   <connectiondefs>
    <connection name="foo_connection">
     <driver>org.gjt.mm.mysql.Driver</driver>
     <dburl>jdbc:mysql://localhost/test</dburl>
     <!--<username>foo_user</username>
     <password>foo_password</password>-->
    </connection>
   </connectiondefs> 
   
   <query connection="foo_connection">
    select * from foo_table
   </query>
   
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/ldap.xml
  
  Index: ldap.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page>
  
   <ldap-defs>
    <ldap-server name="searchlight">
     <initializer>com.sun.jndi.ldap.LdapCtxFactory</initializer>
     <ldap-serverurl>ldap://ldap.weber.edu</ldap-serverurl>
    </ldap-server>
   </ldap-defs>
  
   <ldap-query server="searchlight" ldap-searchbase="">
        sn=*Green*
   </ldap-query>
  
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/lib-page.xml
  
  Index: lib-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "[EMAIL PROTECTED]" -->
  <!-- Version: $Id: lib-page.xml,v 1.1 2002/07/02 13:06:38 cziegeler Exp $ -->
  
  
  <xsp:page
    language="java"
    xmlns:xsp="http://www.apache.org/1999/XSP/Core";
    xmlns:request="http://www.apache.org/1999/XSP/Request";
    xmlns:util="http://www.apache.org/1999/XSP/Util";
  >
  
  <page>
   <title>First XSP Page</title>
   <author>
    <name>Stefano Mazzocchi</name>
    <address>[EMAIL PROTECTED]</address>
   </author>
  
   <p>Hi, I'm your first XSP page ever.</p>
  
   <p>I've been requested <util:counter/> times.</p>
  
   <p>The content you are seeing in this page is provided to you
   by an XML content producer that was compiled into Java bytecode
   and executed at request time. This allows greater flexibility and
   ease of use for page programmers without any performance degradation
   since all XML parsing and such is precompiled and it's avoided at
   request time.</p>
  
   <p>Let's show some useful information with expression evaluation...</p>
  
   <list title="Request Data">
    <element name="Request method"><request:get-method/></element>
    <element name="Request URI"><request:get-request-uri/></element>
    <element name="Request protocol"><request:get-protocol/></element>
    <element name="Servlet path"><request:get-servlet-path/></element>
    <element name="Path info"><request:get-path-info/></element>
    <element name="Path translated"><request:get-path-translated/></element>
    <element name="Query string"><request:get-query-string/></element>
    <element name="Content length"><request:get-content-length/></element>
    <element name="Content type"><request:get-content-type/></element>
    <element name="Server name"><request:get-server-name/></element>
    <element name="Server port"><request:get-server-port/></element>
    <element name="Remote user"><request:get-remote-user/></element>
    <element name="Remote address"><request:get-remote-addr/></element>
    <element name="Remote host"><request:get-remote-host/></element>
    <element name="Authorization scheme"><request:get-auth-type/></element>
   </list>
  
   <p>Ok. Now that you know how logic can be transformed into content, let's
   add some juice and mix logic with content generation
   in a way that allows you to forget about what method is used to generate and
   handle the content as XML and concentrate on having your work done.
   Note, how XSP don't allow you to explicitly write something on the response
   from the logic realm: this is one of the major
   differences between XSP and other server pages technologies and allows
   further processing of the produced content, as required, for example, by
   XSL-transformations.</p>
  
   <!-- FIXME (SM): here should go some taglib to emulate the other two
        examples, but we don't have yet a good way to iterate over items
        and so on without using logic directly... more feedback is needed on
        the taglib issue. -->
  
   <p>All right, the first XSP page is over, but you can see the dynamically 
syntax highlighted
   <link href="../view-source.xml?filename=lib-page.xml">source of this 
page</link>,
   all provided to you by another XSP page.</p>
  
   <p>Enjoy XSP!</p>
  </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/page.xml
  
  Index: page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "[EMAIL PROTECTED]" -->
  <!-- Version: $Id: page.xml,v 1.1 2002/07/02 13:06:38 cziegeler Exp $ -->
  
  <xsp:page 
    language="java" 
    xmlns:xsp="http://www.apache.org/1999/XSP/Core";
  >
   
   <xsp:logic>
    static private int counter = 0; 
    
    private synchronized int count() { 
     return counter++; 
    }
    
    private String normalize(String string) {
     if (string == null) return "";
     else return string;
    }
   </xsp:logic>
  
   <page>
    <title>First XSP Page</title>
    <author>
     <name>Stefano Mazzocchi</name>
     <address>[EMAIL PROTECTED]</address>
    </author>
        
    <p>Hi, I'm your first XSP page ever.</p>
    
    <p>I've been requested <xsp:expr>count()</xsp:expr> times.</p>
    
    <p>The content you are seeing in this page is provided to you
    by an XML content producer that was compiled into Java bytecode
    and executed at request time. This allows greater flexibility and
    ease of use for page programmers without any performance degradation
    since all XML parsing and such is precompiled and it's avoided at
    request time.</p>
    
    <p>Let's show some useful information with expression evaluation...</p>
    
    <list title="Request Data">
     <element name="Request 
method"><xsp:expr>normalize(request.getMethod())</xsp:expr></element>
     <element name="Request 
URI"><xsp:expr>normalize(request.getRequestURI())</xsp:expr></element>
     <element name="Request 
protocol"><xsp:expr>normalize(request.getProtocol())</xsp:expr></element>
     <element name="Servlet 
path"><xsp:expr>normalize(request.getServletPath())</xsp:expr></element>
     <element name="Path 
info"><xsp:expr>normalize(request.getPathInfo())</xsp:expr></element>
     <element name="Path 
translated"><xsp:expr>normalize(request.getPathTranslated())</xsp:expr></element>
     <element name="Query 
string"><xsp:expr>normalize(request.getQueryString())</xsp:expr></element>
     <element name="Content 
length"><xsp:expr>request.getContentLength()</xsp:expr></element>
     <element name="Content 
type"><xsp:expr>normalize(request.getContentType())</xsp:expr></element>
     <element name="Server 
name"><xsp:expr>normalize(request.getServerName())</xsp:expr></element>
     <element name="Server 
port"><xsp:expr>request.getServerPort()</xsp:expr></element>
     <element name="Remote 
user"><xsp:expr>normalize(request.getRemoteUser())</xsp:expr></element>
     <element name="Remote 
address"><xsp:expr>normalize(request.getRemoteAddr())</xsp:expr></element>
     <element name="Remote 
host"><xsp:expr>normalize(request.getRemoteHost())</xsp:expr></element>
     <element name="Authorization 
scheme"><xsp:expr>normalize(request.getAuthType())</xsp:expr></element>
    </list>
    
    <p>Ok. Now that you know how logic can be transformed into content, let's
    add some juice and mix logic with content generation
    in a way that allows you to forget about what method is used to generate and
    handle the content as XML and concentrate on having your work done. 
    Note, how XSP don't allow you to explicitly write something on the response
    from the logic realm: this is one of the major
    differences between XSP and other server pages technologies and allows
    further processing of the produced content, as required, for example, by
    XSL-transformations.</p>
    
    <xsp:logic><![CDATA[
     Enumeration e = request.getHeaderNames(); 
     if ((e != null) && (e.hasMoreElements())) { ]]>
      <p>Here are the request headers...</p>
      <list title="Request Headers">
       <xsp:logic><![CDATA[
        while (e.hasMoreElements()) {  
         String k = (String) e.nextElement(); ]]>
         <element>
          <xsp:attribute name="name">
           <xsp:expr>k</xsp:expr>
          </xsp:attribute>
          <xsp:expr>request.getHeader(k)</xsp:expr>
         </element>
        }
       </xsp:logic>
      </list>
     }
    </xsp:logic>
    
    <xsp:logic><![CDATA[
     e = request.getParameterNames(); 
     if ((e != null) && (e.hasMoreElements())) { ]]>
      <p>and here the servlet parameters that were passed along
      with the request...</p>
           
      <list title="Servlet Parameters">
       <xsp:logic><![CDATA[
        while (e.hasMoreElements()) { 
         String k = (String) e.nextElement();
         String val = request.getParameter(k); 
         String vals[] = request.getParameterValues(k); ]]>
         <element>
          <xsp:attribute name="name">
           <xsp:expr>k</xsp:expr>
          </xsp:attribute>
          <xsp:logic><![CDATA[
            for(int i = 0; i < vals.length; i++) { ]]>
             <item>
              <xsp:expr>vals[i]</xsp:expr>
             </item>
            }
          </xsp:logic>
         </element>
        }
       </xsp:logic>
      </list>
     } 
    </xsp:logic>
    
    <p>All right, the first XSP page is over, but you can see the 
    <link href="../view-source.xml?filename=page.xml">dynamically syntax 
highlighted</link>
    source of this page provided to you by another XSP page.</p>
    
    <p>Enjoy XSP!</p>
   </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/pyramid-model.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/schema.jpg
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/slides.xml
  
  Index: slides.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <slides>
    <title>Adding XML Capabilities with Cocoon</title>
  
    <authors>
     <person>
      <name>Stefano Mazzocchi</name>
      <email>[EMAIL PROTECTED]</email>
     </person>
    </authors>
  
    <event>
     <name>ApacheCon 2000</name>
     <date>March 9, 2000</date>
     <time>7:30PM - 9:00PM</time>
     <location>Caribe Royale Resort Suites &amp; Villas. Orlando, Florida, 
U.S.A.</location>
    </event>
  
    <overview>
     This session will show how to install, set up, and work with the Cocoon XML
     publishing framework. The session will not cover XML technical details but
     will show detailed examples on Cocoon power and details on future 
development.
    </overview>
  
    <section>
     <title>Introduction</title>
     <subtitle>let's see if this is any good for me</subtitle>
  
     <slide>
      <title>Who am I?</title>
      <ul>
       <li>My name is <strong>Stefano Mazzocchi</strong></li>
       <li>Pronounced: <em>Stephan-O Madzock-key</em></li>
       <li>I'm italian</li>
       <li>I'm a student</li>
       <li>I'm Cocoon's author and main architect</li>
      </ul>
     </slide>
  
     <slide>
      <title>Ok, but what is Cocoon?</title>
      <ul>
       <li>A publishing framework</li>
       <li>A document generator</li>
       <li>A small revolution</li>
      </ul>
     </slide>
  
     <slide>
      <title>Publishing framework?</title>
      <ul>
       <li>something that helps you publishing your stuff on the web</li>
       <li>something that should impose strict yet flexible practices</li>
       <li>something that should allow you to reduce your costs</li>
      </ul>
     </slide>
  
     <slide>
      <title>Costs? What costs?</title>
      <ul>
       <li>management costs</li>
       <li>friction between human resources</li>
       <li>costs of adapting to new needs</li>
       <li>scalability costs</li>
      </ul>
     </slide>
  
     <slide>
      <title>The Cocoon Idea</title>
      <quote>
       The Cocoon project aims to change the way web information is created, 
       rendered and served.
      </quote>
      <quote>
       This new paradigm is based on fact that document content, style and
       logic are often created by different individuals or working groups.
      </quote>
      <quote>
       Cocoon aims to a complete separation of the three layers, allowing the 
       three layers to be independently designed, created and managed, reducing 
       management overhead, increasing work reuse and reducing time to market.
      </quote>
     </slide>
  
     <slide>
      <title>The XML Model</title>
      <p>Cocoon is an XML publishing framework.</p>
      <p>Key technolgies are:</p>
      <ul>
       <li>XML</li>
       <li>XML Namespaces</li>
       <li>XSLT</li>
       <li>XPath</li>
      </ul>
     </slide>
  
     <slide>
      <title>Supported Publishing Formats</title>
      <ul>
       <li>HTML+CSS</li>
       <li>XSL(FO)</li>
       <li>SVG</li>
       <li>WML</li>
       <li>VoxML</li>
       <li>VRML</li>
       <li>... you name it!</li>
      </ul>
     </slide>
     
     <slide>
      <title>What do you mean?</title>
      <p>I mean that Cocoon is able to <em>publish</em> your data in any of
      the above formats depending on user parameters or user devices.</p>
      <p>All coming from a single file.</p>
      <p>And easily extensible to any other format thru the use of a highly
      modular architecture.</p>
     </slide>
      
     <slide>
      <title>Hard to believe?</title>
      <p><fork uri="../welcome">Let's take the tour.</fork></p>
     </slide>
    </section>
  
    <section>
     <title>Installation</title>
     <subtitle>How to show your boss it was worth spending all that money for 
ApacheCon!</subtitle>
  
     <slide>
      <title>Cocoon Requirement</title>
      <p>To install Cocoon you need:</p>
      <ul>
       <li>a Java 1.1 compatible virtual machine</li>
       <li>a web server equipped with a Java Servlet API 2.x compliant servet 
engine</li>
      </ul>
     </slide>
     
     <slide>
      <title>Why Java?</title>
      <ul>
       <li>Portability</li>
       <li>Strong OO features (interfaces)</li>
       <li>Availability of XML components</li>
       <li>Dynamic Linking capabilities</li>
      </ul>
     </slide>
  
     <slide>
      <title>Why a servlet?</title>
      <ul>
       <li>again, portability</li>
       <li>ease of use</li>
       <li>natural choice with Java for the web</li>
      </ul>
     </slide>
     
     <slide>
      <title>Why not Servlet 2.2 or Java 1.2?</title>
      <p>guess what? portability!</p>
      <ul>
       <li>no 2.2 replacement for JServ available (yet! Tomcat is coming!)</li>
       <li>no JDK 1.2 port on every platform (even if Linux support is finally 
out!)</li>
      </ul>
     </slide>
     
     <slide>
      <title>How do I install it on my servlet engine?</title>
      <p>I probably don't know!</p>
      <p>I develop on Apache stuff and know almost nothing about other servlet 
engines.</p>
      <p>Even if Cocoon has been reported to work on all known ones, both 
commercial and free.</p>
      <p>Anyway, you find detailed instructions for both <em>JServ</em> and 
<em>Tomcat</em> in
        the handout and more up-to-date information on the web site.</p>
     </slide>
    </section>
  
    <section>
     <title>Cocoon Internals</title>
     <subtitle>getting a better picture</subtitle>
  
     <slide>
      <title>Cocoon General Vision</title>
      <figure src="slides/schema.jpg"/>
     </slide>
     
     <slide>
      <title>The Content Generation Model</title>
      <ul>
       <li>producers: generate XML content</li>
       <li>processors: process XML content</li>
       <li>formatters: format XML into a stream representation</li>
      </ul>
     </slide>
  
     <slide>
      <title>Producer (generator)</title>
      <ul>
       <li>adapts the outside world to XML</li>
       <li>produces <em>structured</em> information (now DOM, later SAX)</li>
       <li>a parser is a producer</li>
       <li>not all producers are parsers</li>
       <li>producers are the XML equivalent of Servlets</li>
      </ul>
     </slide>
  
     <slide>
      <title>Processor (filter)</title>
      <ul>
       <li>process the structured content that comes in</li>
       <li>creates structured content</li>
       <li>examples: XSLT processor, SQL processor, LDAP processor</li>
       <li>there is not such </li>
       <li>Cocoon proocessors are the XML equivalent of Servlet Chaining</li>
      </ul>
     </slide>
  
     <slide>
      <title>Formatter (serializer)</title>
      <ul>
       <li>creates the final stream</li>
       <li>examples: FOP (fo-&gt;PDF), SVG serializer</li>
      </ul>
     </slide>
    </section>
  
    <section>
     <title>Dynamic Content</title>
     <subtitle>let's do useful stuff</subtitle>
  
     <slide>
      <title>Logic-Content Integration</title>
      <p>Possible alternatives are (for java):</p>
      <ul>
       <li>JSP</li>
       <li>WebMacro</li>
       <li>GSP</li>
      </ul>     
     </slide>
  
     <slide>
      <title>Logic-Content Integration</title>
      <p>Needs:</p>
      <ul>
       <li>logic and content reside on different files</li>
       <li>reuse of logic on different documents</li>
       <li>performance</li>
       <li>programming language abstraction</li>
       <li>output abstraction</li>
      </ul>     
     </slide>
  
     <slide>
      <title>The problems of JSP</title>
      <ul>
       <li>logic has direct access to output</li>
       <li>output is always streamed</li>
       <li>not really designed for language abstraction</li>
      </ul>     
     </slide>
  
     <slide>
      <title>Our solution: XSP</title>
      <ul>
       <li>logic has <strong>not</strong> direct access to output</li>
       <li>output is <strong>never</strong> streamed</li>
       <li>designed for language abstraction</li>
      </ul>     
     </slide>
  
     <slide>
      <title>What does it look like?</title>
      <source><![CDATA[
  <xsp:page>
   <page>
    <p>Current time is <xsp:expr>new Date()</xsp:expr></p>
   </page>
  </xsp:page>
      ]]></source>     
     </slide>
  
     <slide>
      <title>How does it work?</title>
      <ul>
       <li>the XSP page is transformed into source code</li>
       <li>the source code is compiled</li>
       <li>the binary is executed at runtime</li>
       <li>basically like any other server pages technology</li>
      </ul>
     </slide>
  
     <slide>
      <title>Ok, so what's the point?</title>
      <ul>
       <li>you don't have access to the output stream!</li>
      </ul>
     </slide>
  
     <slide>
      <title>But still, this is mixing content and logic!</title>
      <p>Ok, look at this:</p>
      
      <source><![CDATA[
  <xsp:page>
   <page>
    <p>Current time is <util:date/></p>
   </page>
  </xsp:page>
      ]]></source>
      
      <p>then you let Cocoon transform this with</p>
  
      <source><![CDATA[
  <xsl:template match="util:date">
   <xsp:expr>new Data()</xsp:expr>
  </xsl:template>
      ]]></source>
     </slide>
  
     <slide>
      <title>Possible different scenarios</title>
      <ul>
       <li><link 
uri="../view-source?filename=/docs/samples/slides/page.xml">integrated xsp 
tags</link></li>
       <li><link 
uri="../view-source?filename=/docs/samples/slides/clean-page.xml">custom tags 
transformed by your stylesheets</link></li>
       <li><link 
uri="../view-source?filename=/docs/samples/slides/lib-page.xml">use of cocoon 
taglibs</link></li>
      </ul>
     </slide>
  
     <slide>
      <title>Other dynamic possibilities</title>
      <ul>
       <li><link 
uri="../view-source?filename=/docs/samples/slides/database-page.xml">SQLProcessor</link></li>
       <li><link 
uri="../view-source?filename=/docs/samples/slides/ldap.xml">LDAPProcessor</link></li>
       <li>... add yours</li>
      </ul>
     </slide>
  
     <slide>
      <title>Moving this into taglibs: why?</title>
      <ul>
       <li>performance</li>
       <li>integration</li>
       <li>portability</li>
       <li>standardization</li>
      </ul>
     </slide>
  
     <slide>
      <title>Still not powerful enough?</title>
      <p>Write your own:</p>
      <ul>
       <li>producer: to create from-java dynamic content</li>
       <li>processor: to process some XML in some complex ways</li>
       <li>formatter: to format an XML file to some binary formats</li>
      </ul>
     </slide>
    </section>
  
    <section>
     <title>Future Development: Cocoon2</title>
     <subtitle>improving the bleeding edge</subtitle>
  
     <slide>
      <title>Main Differences</title>
      <ul>
       <li>event driven architecture</li>
       <li>improved overall structure</li>
       <li>complete separation of contexts</li>
       <li>better batch support</li>
      </ul>
     </slide>
  
     <slide>
      <title>Main Benefits</title>
      <ul>
       <li>lower per-request memory consumption</li>
       <li>globally faster</li>
       <li>increased perceived performance</li>
       <li>enhanced modularity</li>
      </ul>
     </slide>
  
     <slide>
      <title>Main Drawbacks</title>
      <ul>
       <li>steeper learning curve (due to the sitemap)</li>
       <li>module back incompatibility</li>
      </ul>
     </slide>
  
     <slide>
      <title>The Cocoon pyramid of contracts</title>
      <figure src="slides/pyramid-model.gif"/>
     </slide>
    </section>
  
    <section>
     <title>Final Info</title>
     <subtitle>where to find out more</subtitle>
     
     <slide>
      <title>Where do I get more info?</title>
      <ul>
       <li>Cocoon: <fork 
uri="http://xml.apache.org/cocoon";><strong>http://xml.apache.org/cocoon</strong></fork></li>
       <li>XML and related info: <fork 
uri="http://www.xmlinfo.com";><strong>http://www.xmlinfo.com</strong></fork></li>
       <li>XML and related specs: <fork 
uri="http://www.w3c.org";><strong>http://www.w3c.org</strong></fork></li>
      </ul>
     </slide>
  
     <slide>
      <title>The Cocoon Project</title>
      <p>Active Developers (in alphabetical order):</p>
      <ul>
       <li>Donald Ball</li>
       <li>Pierpaolo Fumagalli</li>
       <li>Stefano Mazzocchi</li>
       <li>Giacomo Pati</li>
       <li>Ricardo Rocha</li>
      </ul>
     </slide>
  
     <slide>
      <title>Thank you!</title>
      <p>Ok, I'm preparing the asbesto suite for the Q/A! :-)</p>
     </slide>
    </section>
  
    <legal>
     Copyright (c) 2000 Apache Software Foundation.
    </legal>
  
  </slides>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/slides/view-source.xsp
  
  Index: view-source.xsp
  ===================================================================
  <?xml version="1.0"?>
  <!-- Written by Ricardo Rocha <[EMAIL PROTECTED]> -->
  <!-- Fixed for version 2.0 by Davanum Srinivas <[EMAIL PROTECTED]> -->
  
  <!-- A quick'n'dirty XML colorizer -->
  
  
  <xsp:page
            language="java"
            xmlns:xsp="http://apache.org/xsp";
  >
  
    <xsp:structure>
     <xsp:include>java.net.*</xsp:include>
     <xsp:include>org.w3c.dom.*</xsp:include>
     <xsp:include>org.apache.cocoon.xml.dom.DOMStreamer</xsp:include>
     <xsp:include>org.apache.cocoon.xml.dom.DOMBuilder</xsp:include>
     <xsp:include>org.apache.cocoon.components.parser.Parser</xsp:include>
     <xsp:include>org.apache.cocoon.components.url.URLFactory</xsp:include>
    </xsp:structure>
  
    <xsp:logic><![CDATA[
      private static final String ATTR_NAME_COLOR = "darkblue";
      private static final String ATTR_VALUE_COLOR = "navy";
      private static final String COMMENT_COLOR = "gray";
      private static final String DELIMITER_COLOR = "blue";
      private static final String ELEMENT_COLOR = "navy";
      private static final String ENTITY_REF_COLOR = "navy";
      private static final String PI_COLOR = "darkred";
      private static final String TEXT_COLOR = "black";
      private static final String CUSTOM_ELEMENT_COLOR = "green";
      private static final String XSL_ELEMENT_COLOR = "purple";
      private static final String XSP_ELEMENT_COLOR = "green";
      private static final String XSP_TEXT_COLOR = "red";
  
      protected void colorize(Node node, Document factory, 
org.xml.sax.ContentHandler contentHandler) throws SAXException {
        Element element = factory.createElement("pre");
        DocumentFragment fragment = factory.createDocumentFragment();
        element.appendChild(doColorize(node, factory, 0, TEXT_COLOR));
        DOMStreamer ds = new DOMStreamer (contentHandler);
        ds.stream (element);
      }
  
      protected static DocumentFragment
        doColorize(Node node, Document factory, int level, String textColor)
      {
        Element result = null;
        DocumentFragment fragment = factory.createDocumentFragment();
  
        switch (node.getNodeType()) {
          case Node.CDATA_SECTION_NODE:
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            result.appendChild(factory.createTextNode("<![CDATA["));
            fragment.appendChild(result);
  
            result = factory.createElement("font");
            result.setAttribute("color", textColor);
            result.appendChild(factory.createTextNode(node.getNodeValue()));
            fragment.appendChild(result);
  
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            // I know the thing below is ugly, but man, nexted CDATA are a pain 
in the ass!
            result.appendChild(factory.createTextNode("]]]]>&gt;<![CDATA["));
            fragment.appendChild(result);
  
            break;
          case Node.ELEMENT_NODE: {
            Element element = (Element) node;
  
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            result.appendChild(factory.createTextNode("<"));
            fragment.appendChild(result);
  
            String tagColor = ELEMENT_COLOR;
            String tagName = element.getTagName();
  
            if (tagName.startsWith("xsp:")) {
              tagColor = XSP_ELEMENT_COLOR;
            } else if (tagName.startsWith("xsl:")) {
              tagColor = XSL_ELEMENT_COLOR;
            } else if (tagName.indexOf(':') >= 0) {
              tagColor = CUSTOM_ELEMENT_COLOR;
            }
  
            result = factory.createElement("font");
            result.setAttribute("color", tagColor);
            result.appendChild(factory.createTextNode(tagName));
            fragment.appendChild(result);
  
            NamedNodeMap attributes = element.getAttributes();
            int attributeCount = attributes.getLength();
  
            for (int i = 0; i < attributeCount; i++) {
              Attr attribute = (Attr) attributes.item(i);
  
              result = factory.createElement("font");
              result.setAttribute("color", ATTR_NAME_COLOR);
              result.appendChild(
                factory.createTextNode(" " + attribute.getName() + "=")
              );
              fragment.appendChild(result);
  
              result = factory.createElement("font");
              result.setAttribute("color", ATTR_VALUE_COLOR);
              result.appendChild(
                factory.createTextNode("\"" + attribute.getValue() + "\"")
              );
              fragment.appendChild(result);
            }
  
            NodeList nodeList = element.getChildNodes();
            int childCount = nodeList.getLength();
  
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            result.appendChild(
              factory.createTextNode((childCount == 0 ? "/" : "") + ">")
            );
            fragment.appendChild(result);
  
            if (tagName.startsWith("xsp:")) {
              textColor = XSP_TEXT_COLOR;
            } else {
              textColor = TEXT_COLOR;
            }
  
            result = factory.createElement("font");
            result.setAttribute("color", textColor);
  
            for (int i = 0; i < childCount; i++) {
              result.appendChild(
                doColorize(nodeList.item(i), factory, level + 1, textColor)
              );
            }
            fragment.appendChild(result);
  
            if (childCount > 0) {
              result = factory.createElement("font");
              result.setAttribute("color", DELIMITER_COLOR);
              result.appendChild(factory.createTextNode("</"));
              fragment.appendChild(result);
  
              result = factory.createElement("font");
              result.setAttribute("color", tagColor);
              result.appendChild(factory.createTextNode(tagName));
              fragment.appendChild(result);
  
              result = factory.createElement("font");
              result.setAttribute("color", DELIMITER_COLOR);
              result.appendChild(factory.createTextNode(">"));
              fragment.appendChild(result);
            }
  
            break;
          }
          case Node.DOCUMENT_NODE:
          case Node.DOCUMENT_FRAGMENT_NODE: {
            NodeList nodeList = node.getChildNodes();
            int childCount = nodeList.getLength();
  
            for (int i = 0; i < childCount; i++) {
              fragment.appendChild(
                doColorize(nodeList.item(i), factory, level + 1, textColor)
              );
            }
  
            break;
          }
          case Node.COMMENT_NODE:
            result = factory.createElement("font");
            result.setAttribute("color", COMMENT_COLOR);
  
            result.appendChild(
              factory.createTextNode(
                "<!-- " + node.getNodeValue() + " -->\n"
              )
            );
  
            fragment.appendChild(result);
  
            break;
          case Node.PROCESSING_INSTRUCTION_NODE:
            ProcessingInstruction pi = (ProcessingInstruction) node;
  
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            result.appendChild(factory.createTextNode("<?"));
            fragment.appendChild(result);
  
            result = factory.createElement("font");
            result.setAttribute("color", PI_COLOR);
            result.appendChild(factory.createTextNode(pi.getTarget() + " " + 
pi.getData()));
            fragment.appendChild(result);
  
            result = factory.createElement("font");
            result.setAttribute("color", DELIMITER_COLOR);
            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("<" + node.getNodeValue() + ";")
            );
            fragment.appendChild(result);
  
            break;
          case Node.TEXT_NODE:
            fragment.appendChild(factory.createTextNode(node.getNodeValue()));
            break;
          default:
            break;
        }
  
        return fragment;
      }
    ]]></xsp:logic>
  
    <html>
      <xsp:logic>
      </xsp:logic>
      <head>
        <title>Source Code</title>
        <link rel="stylesheet" type="text/css" href="style" title="Style"/>
      </head>
  
      <body>
        <xsp:logic>
          String filename = request.getParameter("filename");
          if (filename != null) {
  
            <h3 style="color:navy; text-align: center">
              <xsp:expr>filename</xsp:expr>
            </h3>
          
            Parser newParser = null;
            URLFactory factory = null;
  
            try {
                newParser = (Parser) this.manager.lookup(Parser.ROLE);
                factory = (URLFactory) this.manager.lookup(URLFactory.ROLE);
                Document document = newParser.newDocument();
  
                DOMBuilder builder = new DOMBuilder(newParser);
                newParser.setContentHandler(builder);
                newParser.setLexicalHandler(builder);
                URL url = factory.getURL(filename);
                InputSource is = new InputSource(url.openStream());
                newParser.parse(is);
  
                this.colorize(builder.getDocument(), document, 
this.contentHandler);    
            } catch (SAXException e){
                getLogger().debug("SAXException in colorize", e);
                throw e;
            } catch (org.w3c.dom.DOMException e){
                getLogger().debug("DOMException in colorize", e);
                throw e;
            } catch (Exception e) {
                getLogger().error("Could not include page", e);
            } finally {
                this.manager.release((Component) factory);
                this.manager.release((Component) newParser);
            }
          } else {
            <h3 style="color:navy; text-align: center">
              Need <em>filename</em> or <em>url</em> parameters to work
            </h3>
          }
        </xsp:logic>
      </body>
    </html>
  </xsp:page>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/soap/fortune.xml
  
  Index: fortune.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page
    language="java"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:xsp-request="http://apache.org/xsp/request/2.0";
    xmlns:xscript="http://apache.org/xsp/xscript/1.0";
    xmlns:soap="http://apache.org/xsp/soap/3.0";
    >
    
    <page>
        <soap:call url="http://www.lemurlabs.com:80/rpcrouter";>
          <m:getAnyFortune xmlns:m="urn:lemurlabs-Fortune">
          </m:getAnyFortune>
        </soap:call>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/soap/getquote.xml
  
  Index: getquote.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page
    language="java"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:xsp-request="http://apache.org/xsp/request/2.0";
    xmlns:xscript="http://apache.org/xsp/xscript/1.0";
    xmlns:soap="http://apache.org/xsp/soap/3.0";
    >
    
    <page>
        <soap:call url="http://services.xmethods.net:80/soap";>
          <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes">
            <soap:enc/>
            <symbol xsi:type="xsd:string" 
                    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"; 
                    xmlns:xsd="http://www.w3.org/1999/XMLSchema";>SUNW</symbol>
          </ns1:getQuote>
        </soap:call>
    </page>
  </xsp:page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/soap/joke.xml
  
  Index: joke.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page
    language="java"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:xscript="http://apache.org/xsp/xscript/1.0";
    xmlns:soap="http://apache.org/xsp/soap/3.0";
    >
    
    <page>
        <soap:call
          url="http://thor.velocigen.com:80/vx_engine/soap-trigger.pperl";
          method="urn:vgx-joke">
          <ns1:JokeOfTheDay xmlns:ns1="urn:vgx-joke">
            <soap:enc/>
          </ns1:JokeOfTheDay>
        </soap:call>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/soap/temperature.xml
  
  Index: temperature.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page
    language="java"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:xsp-request="http://apache.org/xsp/request/2.0";
    xmlns:xscript="http://apache.org/xsp/xscript/1.0";
    xmlns:soap="http://apache.org/xsp/soap/3.0";
    >
    
    <page>
        <soap:call url="http://services.xmethods.net:80/soap/servlet/rpcrouter";>
          <ns1:getTemp xmlns:ns1="urn:xmethods-Temperature">
            <soap:enc/>
                  <zipcode xsi_type="xsd:string">90210</zipcode> 
          </ns1:getTemp>
        </soap:call>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sql/sql-page.xml
  
  Index: sql-page.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <page xmlns:sql="http://apache.org/cocoon/SQL/2.0";>
  
   <title>Hello</title>
   <content>
    <para>This is my first Cocoon2 page filled with sql data!</para>
  
    <execute-query xmlns="http://apache.org/cocoon/SQL/2.0";> 
     <query>
          select id,name from department
     </query>
     <execute-query>
      <query>
       select id,name from employee where department_id = <ancestor-value 
sql:name="id" sql:level="1"/>
      </query>
     </execute-query>
    </execute-query>
  
   </content>
  </page>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/sql/sql-page.xml.sql
  
  Index: sql-page.xml.sql
  ===================================================================
  # MySQL dump 6.4
  #
  # Host: localhost    Database: test
  #--------------------------------------------------------
  # Server version      3.22.27
  
  #
  # Table structure for table 'department'
  #
  CREATE TABLE department (
    id int(11) DEFAULT '0' NOT NULL,
    name varchar(255) DEFAULT '' NOT NULL,
    PRIMARY KEY (id)
  );
  
  #
  # Dumping data for table 'department'
  #
  
  INSERT INTO department VALUES (1,'Programmers');
  INSERT INTO department VALUES (2,'Loungers');
  
  #
  # Table structure for table 'employee'
  #
  CREATE TABLE employee (
    id int(11) DEFAULT '0' NOT NULL,
    department_id int(11) DEFAULT '0' NOT NULL,
    name varchar(255) DEFAULT '' NOT NULL,
    PRIMARY KEY (id)
  );
  
  #
  # Dumping data for table 'employee'
  #
  
  INSERT INTO employee VALUES (1,1,'Donald Ball');
  INSERT INTO employee VALUES (2,1,'Stefano Mazzocchi');
  INSERT INTO employee VALUES (3,2,'Pierpaolo Fumagalli');
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/stream/OrderPage.xml
  
  Index: OrderPage.xml
  ===================================================================
  <page>
   <title>B2B processing</title>
    <content>
     <FORM action="request1" id="FORM1" method="post" name="FORM1">
        <para>Input your XML documet here:</para>
        <TEXTAREA cols="80" id="TEXTAREA1" name="Foo" rows="60">&lt;?xml 
version="1.0"?&gt;
                &lt;Orders&gt;
                &lt;OrderID&gt;20259&lt;/OrderID&gt;
                &lt;CustomerID&gt;WWWWWWW&lt;/CustomerID&gt;
                &lt;EmployeeID&gt;6&lt;/EmployeeID&gt;
                &lt;OrderDate&gt;2001-05-05 00:00:00&lt;/OrderDate&gt;
                &lt;RequiredDate&gt;2001-06-05 00:00:00&lt;/RequiredDate&gt;
                &lt;ShippedDate&gt;2001-06-01 00:00:00&lt;/ShippedDate&gt;
                &lt;ShipVia&gt;1&lt;/ShipVia&gt;
                &lt;Freight&gt;11.6100&lt;/Freight&gt;
                &lt;ShipName&gt;Thoms White&lt;/ShipName&gt;
                &lt;ShipAddress&gt;Somestr. 48&lt;/ShipAddress&gt;
                &lt;ShipCity&gt;Munster&lt;/ShipCity&gt;
                &lt;ShipRegion&gt;West&lt;/ShipRegion&gt;
                &lt;ShipPostalCode&gt;00000&lt;/ShipPostalCode&gt;
                &lt;ShipCountry&gt;Germany&lt;/ShipCountry&gt;
                &lt;OrderDetails&gt;
                        &lt;OrderID&gt;20259&lt;/OrderID&gt;
                        &lt;ProductID&gt;51&lt;/ProductID&gt;
                        &lt;UnitPrice&gt;42.4000&lt;/UnitPrice&gt;
                        &lt;Quantity&gt;40&lt;/Quantity&gt;
                        &lt;Discount&gt;0.0&lt;/Discount&gt;
                &lt;/OrderDetails&gt;
                &lt;OrderDetails&gt;
                                &lt;OrderID&gt;20259&lt;/OrderID&gt;
                                &lt;ProductID&gt;14&lt;/ProductID&gt;
                                &lt;UnitPrice&gt;18.6000&lt;/UnitPrice&gt;
                                &lt;Quantity&gt;9&lt;/Quantity&gt;
                                &lt;Discount&gt;0.0&lt;/Discount&gt;
                &lt;/OrderDetails&gt;
                &lt;OrderDetails&gt;
                                &lt;OrderID&gt;20259&lt;/OrderID&gt;
                                &lt;ProductID&gt;7&lt;/ProductID&gt;
                                &lt;UnitPrice&gt;12.4000&lt;/UnitPrice&gt;
                                &lt;Quantity&gt;30&lt;/Quantity&gt;
                                &lt;Discount&gt;0.0&lt;/Discount&gt;
                &lt;/OrderDetails&gt;
                &lt;Customers&gt;
                        &lt;CustomerID&gt;WWWWWWW&lt;/CustomerID&gt;
                        &lt;CompanyName&gt;Thomas White&lt;/CompanyName&gt;
                        &lt;ContactName&gt;Karin Black&lt;/ContactName&gt;
                        &lt;ContactTitle&gt;Marketing 
Manager&lt;/ContactTitle&gt;
                        &lt;Address&gt;Somestr. 48&lt;/Address&gt;
                        &lt;City&gt;Munster&lt;/City&gt;
                        &lt;Region&gt;West&lt;/Region&gt;
                        &lt;PostalCode&gt;00000&lt;/PostalCode&gt;
                        &lt;Country&gt;Germany&lt;/Country&gt;
                        &lt;Phone&gt;xxxx-yyyyyy&lt;/Phone&gt;
                        &lt;Fax&gt;xxxx-yyyyyy&lt;/Fax&gt;
                &lt;/Customers&gt;
        &lt;/Orders&gt;
        </TEXTAREA>
        
        <INPUT id="submit1" name="submit1" type="submit" value="Submit"/>
        </FORM>
        </content>
        </page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/svg/henryV.svg
  
  Index: henryV.svg
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
  
  <!-- 
========================================================================= -->
  <!-- Copyright (C) The Apache Software Foundation. All rights reserved.       
 -->
  <!--                                                                          
 -->
  <!-- This software is published under the terms of the Apache Software 
License -->
  <!-- version 1.1, a copy of which has been included with this distribution in 
 -->
  <!-- the LICENSE file.                                                        
 -->
  <!-- 
========================================================================= -->
  
  <!-- 
========================================================================= -->
  <!-- Test description here                                                    
 -->
  <!--                                                                          
 -->
  <!-- @author [EMAIL PROTECTED]                                         -->
  <!-- @version $Id: henryV.svg,v 1.1 2002/07/02 13:06:38 cziegeler Exp $       
                                                      -->
  <!-- 
========================================================================= -->
  
  <svg xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" viewBox="0 
0 450 500">
  <title>Henry V</title>
  
      <!-- ============================================================= -->
      <!-- Test content                                                  -->
      <!-- ============================================================= -->
      <defs>
          <filter id="blur" filterUnits="objectBoundingBox" 
primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" 
> 
          <feGaussianBlur stdDeviation="2 2" x="-10%" y="-10%" width="120%" 
height="120%" /> 
          </filter>
          <filter id="wideBlur" filterUnits="objectBoundingBox" 
primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" 
> 
          <feGaussianBlur stdDeviation="8 8" x="-10%" y="-10%" width="120%" 
height="120%" /> 
          </filter>
          <clipPath id="shakeSpeare" font-family="Serif" font-weight="bold" 
font-size="125" text-anchor="middle" transform="scale(0.8, 1.5)">
             <text x="50%" y="28%">Henry</text>
             <text font-size="200" x="50%" y="60%">V</text>
          </clipPath>
  
          <g font-family="Serif" font-weight="bold" font-size="125" 
text-anchor="middle" id="henryV" transform="scale(0.8, 1.5)">
             <text x="50%" y="28%">Henry</text>
             <text font-size="200" x="50%" y="60%">V</text>
          </g>
  <g font-family="Serif" id="text" font-style="oblique" font-size="15" 
fill="DarkRed" transform="scale(1.10, 0.92)">
  <text x="3%" y="6%">O for a Muse of fire, that would ascend</text>
  <text x="3%" y="9%">The brightest heaven of invention,</text>
  <text x="3%" y="12%">A kingdom for a stage, princes to act</text>
  <text x="3%" y="15%">And monarchs to behold the swelling scene!</text>
  <text x="3%" y="18%">Then should the warlike Harry, like himself,</text>
  <text x="3%" y="21%">Assume the port of Mars; and at his heels,</text>
  <text x="3%" y="24%">Leash'd in like hounds, should famine, sword and 
fire</text>
  <text x="3%" y="27%">Crouch for employment. But pardon, and gentles 
all,</text>
  <text x="3%" y="30%">The flat unraised spirits that have dared</text>
  <text x="3%" y="33%">On this unworthy scaffold to bring forth</text>
  <text x="3%" y="36%">So great an object: can this cockpit hold</text>
  <text x="3%" y="39%">The vasty fields of France? or may we cram</text>
  <text x="3%" y="42%">Within this wooden O the very casques</text>
  <text x="3%" y="45%">That did affright the air at Agincourt?</text>
  <text x="3%" y="48%">O, pardon! since a crooked figure may</text>
  <text x="3%" y="51%">Attest in little place a million;</text>
  <text x="3%" y="54%">And let us, ciphers to this great accompt,</text>
  <text x="3%" y="57%">On your imaginary forces work.</text>
  <text x="3%" y="60%">Suppose within the girdle of these walls</text>
  <text x="3%" y="63%">Are now confined two mighty monarchies,</text>
  <text x="3%" y="66%">Whose high upreared and abutting fronts</text>
  <text x="3%" y="69%">The perilous narrow ocean parts asunder:</text>
  <text x="3%" y="72%">Piece out our imperfections with your thoughts;</text>
  <text x="3%" y="75%">Into a thousand parts divide on man,</text>
  <text x="3%" y="78%">And make imaginary puissance;</text>
  <text x="3%" y="81%">Think when we talk of horses, that you see them</text>
  <text x="3%" y="84%">Printing their proud hoofs i' the receiving earth;</text>
  <text x="3%" y="87%">For 'tis your thoughts that now must deck our 
kings,</text>
  <text x="3%" y="90%">Carry them here and there; jumping o'er times,</text>
  <text x="3%" y="93%">Turning the accomplishment of many years</text>
  <text x="3%" y="96%">Into an hour-glass: for the which supply,</text>
  <text x="3%" y="99%">Admit me Chorus to this history;</text>
  <text x="3%" y="102%">Who prologue-like your humble patience pray,</text>
  <text x="3%" y="105%">Gently to hear, kindly to judge, our play.</text>
      </g>
      </defs>
      <rect width="100%" height="100%" fill="GoldenRod"/>
      <g id="testContent" transform="scale(1.2,1.0)">       
          <g opacity="0.8" fill="Maroon">
              <use xlink:href="#text"/>
          </g>
          <g transform="translate(-1, -1)">
            <use xlink:href="#henryV" fill="DarkGoldenRod" stroke-width="0.1" 
stroke="black"/>
          </g>
          <g clip-path="url(#shakeSpeare)" transform="translate(-1, -1)">
              <use xlink:href="#text"/>
              <g font-style="normal">
              <use xlink:href="#henryV" fill="none" stroke-width="4" 
stroke="black" filter="url(#blur)" opacity="0.35" transform="translate(-2, 2)"/>
              </g>
          </g>
      </g>
      <rect x="0%" y="0%" width="100%" height="100%" stroke="SaddleBrown" 
stroke-width="12" fill="none" filter="url(#wideBlur)"/>
  
      
  </svg>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/svg/opac.svg
  
  Index: opac.svg
  ===================================================================
  <?xml version="1.0" standalone="yes"?>
  
  <svg width="300px" height="300px">
   <g style="fill:#444">
    <path d="M0,0v250h300v-250z"/>
   </g>
   <g style="stroke:#000; stroke-width:2; fill:#f00; fill-opacity:0.5">
    <circle cx="100" cy="100" r="80"/>
   </g>
   <g style="stroke:#000; stroke-width:2; fill:#00f; fill-opacity:0.5">
    <circle cx="200" cy="100" r="80"/>
   </g>
   <g style="stroke:#000; stroke-width:2; fill:#0f0; fill-opacity:0.5">
    <circle cx="150" cy="150" r="80"/>
   </g>
  </svg>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/simple.xsp
  
  Index: simple.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: simple.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: September 18, 2001
   -->
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xscript="http://apache.org/xsp/xscript/1.0";>
    <page>
      <title>Inline XScript variable</title>
  
      <content>
        <para>
          This is a simple XSP page demonstrating how to work with
          inline XScript variables. This example show how one can create
          and later refer to an XScript variable.
        </para>
  
        <xscript:variable name="my-var">
          <b>123</b>
        </xscript:variable>
  
        <para>
          The content of the XScript variable is: <xscript:get name="my-var"/>.
        </para>
  
        <para>
          We now remove the Xscript variable "my-var", and try to access
          it again. You should see an error message indicating it's no
          longer available.
        </para>
  
        <para>
          <xscript:remove name="my-var"/>
          <xscript:get name="my-var"/>
        </para>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/soap-getquote1.xsl
  
  Index: soap-getquote1.xsl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: October 9, 2001
   -->
  
  <xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
    xmlns:n="urn:xmethods-delayed-quotes"
    exclude-result-prefixes="soap n"
    >
  
    <xsl:template match="soap:Envelope">
      <b><xsl:value-of select="soap:Body/n:getQuoteResponse/Result"/></b>
    </xsl:template>
  
    <xsl:template match="@*|*|text()|processing-instruction()">
      <!-- Catch all template. Just pass along unmodified everything we
           don't handle. -->
      <xsl:copy>
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
      </xsl:copy>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/soap-getquote1.xsp
  
  Index: soap-getquote1.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: soap-getquote1.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ 
-->
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: October 9, 2001
   -->
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xscript="http://apache.org/xsp/xscript/1.0";
            xmlns:soap="http://apache.org/xsp/soap/3.0";>
    <page>
      <title>SOAP Stock Quote Example 1</title>
  
      <content>
        <xsp:logic>
          String symbol = request.getParameter("symbol");
  
          if (symbol == null || symbol.equals("")) {
             <para>This page demonstrates the SOAP logicsheet for
             Cocoon2. It accesses a SOAP service that provides stock quotes
             and displays the result.</para>
  
             <para>The SOAP result is placed in the generated page, and the
             stock price is extracted from it using an external XSLT
             stylesheet. Compare this approach with the one used in
             <code>soap-getquote2.xsp</code>, which uses an internal XScript
             stylesheet to extract the stock price.</para>
  
             <para>Please enter the stock ticker: </para>
             <form href="soap-getquote">
               <input name="symbol" type="text" value="HPQ"/>
               <input value="Do it!" type="submit"/>
             </form>
          } else {
            <para>The stock price for <xsp:expr>symbol</xsp:expr> is 
  
              <soap:call url="http://services.xmethods.net:80/soap";>
                <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes">
                  <soap:enc/>
                  <symbol xsi:type="xsd:string" 
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/1999/XMLSchema";><xsp-request:get-parameter 
name="symbol"/></symbol>
                </ns1:getQuote>
              </soap:call>
            </para>
  
            <form href="soap-getquote">
              <input value="Back" type="submit"/>
            </form>
          }
        </xsp:logic>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/soap-getquote2.xsp
  
  Index: soap-getquote2.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: soap-getquote2.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ 
-->
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: October 9, 2001
   -->
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xscript="http://apache.org/xsp/xscript/1.0";
            xmlns:soap="http://apache.org/xsp/soap/3.0";>
  
    <page>
      <title>SOAP Stock Quote Example 2</title>
  
      <content>
        <xsp:logic>
          String symbol = request.getParameter("symbol");
          if (symbol == null || symbol.equals("")) {
            <para>This page demonstrates the SOAP logicsheet for
            Cocoon2. It accesses a SOAP service that provides stock quotes
            and displays the result.</para>
  
            <para>This example uses an inline XSLT stylesheet and an
            XScript <code>transform</code> instruction to extract the stock
            price. Compare this with the approach used in
            <code>soap-getquote1.xsp</code>, which uses a sitemap XSLT
            transformer to achieve the same thing.</para>
  
            <para>Please enter the stock ticker: </para>
            <form href="soap-getquote">
              <input name="symbol" type="text" value="HPQ"/>
              <input value="Do it!" type="submit"/>
            </form>
          } else {
            <para>The stock price for <xsp:expr>symbol</xsp:expr> is 
              <xscript:variable name="soap-result">
                <soap:call url="http://services.xmethods.net:80/soap";>
                  <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes">
                    <soap:enc/>
                    <symbol xsi:type="xsd:string" 
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/1999/XMLSchema";><xsp-request:get-parameter 
name="symbol"/></symbol>
                  </ns1:getQuote>
                </soap:call>
              </xscript:variable>
  
              <xscript:variable name="stylesheet">
                <xsl:stylesheet version="1.0"
                                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                                
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
                                xmlns:n="urn:xmethods-delayed-quotes"
                                exclude-result-prefixes="soap n">
                  <xsl:template match="/">
                    <b>
                      <xsl:value-of 
select="/soap:Envelope/soap:Body/n:getQuoteResponse/Result"/>
                    </b>
                  </xsl:template>
                </xsl:stylesheet>
              </xscript:variable>
  
              <xscript:transform name="soap-result" stylesheet="stylesheet"/>
            </para>
  
            <form href="soap-getquote">
              <input value="Back" type="submit"/>
            </form>
          }
        </xsp:logic>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/soap-getquote3.xsl
  
  Index: soap-getquote3.xsl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: October 9, 2001
   -->
  
  <xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
    xmlns:n="urn:xmethods-delayed-quotes"
    exclude-result-prefixes="soap n"
    >
  
    <xsl:template match="/">
      <b><xsl:value-of 
select="/soap:Envelope/soap:Body/n:getQuoteResponse/Result"/></b>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xscript/soap-getquote3.xsp
  
  Index: soap-getquote3.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: soap-getquote3.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ 
-->
  
  <!--
    Author: Ovidiu Predescu "[EMAIL PROTECTED]"
  
    Date: October 9, 2001
   -->
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xscript="http://apache.org/xsp/xscript/1.0";
            xmlns:soap="http://apache.org/xsp/soap/3.0";>
    <page>
      <title>SOAP Stock Quote Example 3</title>
  
      <content>
  
        <xsp:logic>
          String symbol = request.getParameter("symbol");
          if (symbol == null || symbol.equals("")) {
             <para>This page demonstrates the SOAP logicsheet for
             Cocoon2. It accesses a SOAP service that provides stock quotes
             and displays the result.</para>
  
             <para>This is yet another example of the XScript and SOAP
             logicsheets. This sample is very similar with
             <code>soap-getquote2.xsp</code>, except that the stylesheet is
             defined in an external file.
             </para>
  
             <para>Please enter the stock ticker: </para>
             <form href="soap-getquote">
               <input name="symbol" type="text" value="HPQ"/>
               <input value="Do it!" type="submit"/>
             </form>
          } else {
            <para>
              The stock price for <xsp:expr>symbol</xsp:expr> is 
  
              <xscript:variable name="soap-result">
                <soap:call url="http://services.xmethods.net:80/soap";>
                  <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes">
                    <soap:enc/>
                    <symbol xsi:type="xsd:string" 
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/1999/XMLSchema";><xsp-request:get-parameter 
name="symbol"/></symbol>
                  </ns1:getQuote>
                </soap:call>
              </xscript:variable>
  
              <xscript:variable name="stylesheet"
                                href="docs/samples/xscript/soap-getquote3.xsl"/>
  
              <xscript:transform name="soap-result" stylesheet="stylesheet"/>
            </para>
  
            <form href="soap-getquote">
              <input value="Back" type="submit"/>
            </form>
          }
        </xsp:logic>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/aggregate.xsp
  
  Index: aggregate.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: aggregate.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:cinclude="http://apache.org/cocoon/include/1.0";>
  
      <xsp:logic>
          /**
           * Generate the unique key.
           * This key must be unique inside the space of this XSP page.
           * This method will be invoked before the generateValidity() method.
           *
           * @return The generated key or 0 if the component
           *         is currently not cacheable.
           */
          public long generateKey()
          {
              return 1;
          }
  
          /**
           * Generate the validity object.
           *
           * @return The generated validity object or <code>null</code> if the
           *         component is currently not cacheable.
           */
          public org.apache.cocoon.caching.CacheValidity generateValidity() {
              return new org.apache.cocoon.caching.NOPCacheValidity();
          }
      </xsp:logic>
      <page>
          <title>A Simple XSP Page using Content Aggregation</title>
          <content>
              <para>
                  <cinclude:include src="cocoon:/news/slashdot.xml" 
element="slashdot" ns="http://foo.bar.com/slashdot"/>
              </para>
              <para>
                  <cinclude:include src="cocoon:/news/moreover.xml" 
element="moreover" ns="http://foo.bar.com/moreover"/>
              </para>
              <para>
                  <cinclude:include src="cocoon:/news/xmlhack.xml" 
element="isyndicate" ns="http://foo.bar.com/xmlhack"/>
              </para>
              <para>Brought to you by Cocoon at <xsp:expr>new 
Date()</xsp:expr>.</para>
          </content>
      </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/cacheable.xsp
  
  Index: cacheable.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: cacheable.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
  
  <xsp:structure>
  <xsp:include>org.apache.cocoon.caching.CacheValidity</xsp:include>
  <xsp:include>org.apache.cocoon.caching.DeltaTimeCacheValidity</xsp:include>
  <xsp:include>org.apache.cocoon.util.HashUtil</xsp:include>
  </xsp:structure>
  
  <xsp:logic>
      /**
       * Generate the unique key.
       * This key must be unique inside the space of this XSP page.
       * This method will be invoked before the generateValidity() method.
       *
       * @return The generated key or 0 if the component
       *         is currently not cacheable.
       */
      public long generateKey()
      {
          // Generate unique key; add parameters' values here
          return HashUtil.hash("" + request.getParameter("param"));
      }
      
      /**
       * Generate the validity object.
       * Before this method can be invoked the generateKey() method
       * will be invoked.
       *
       * @return The generated validity object or null if the
       *         component is currently not cacheable.
       */
      public CacheValidity generateValidity() {
          // Check all dependencies here
          return new DeltaTimeCacheValidity(0, 5);
      }
  </xsp:logic>
  
    <page>
      <title>A Cacheable XSP Page</title>
      <content>
        <para>Hi there! I'm a simple dynamic page generated by XSP
          (eXtensible Server Pages).</para>
        <para>I'm cached for every different value of request parameter
          'param'. Value is: <b>
          <xsp-request:get-parameter name="param"/>
            </b></para>
        <para>All other request parameters do not influence cache status, but
          my validity will expire after 5 sec (see source).
          Value of parameter 'other' is: <b>
            <xsp-request:get-parameter name="other"/></b>
              </para>
        <para>Links:
          <ul>
          <li><a href="cacheable?param=one">param=one</a></li>
          <li><a href="cacheable?param=two">param=two</a></li>
          <li><a href="cacheable?param=three&amp;other=abc">param=three, 
other=abc</a></li>
          <li><a href="cacheable?param=three&amp;other=xyz">param=three, 
other=xyz</a></li>
          </ul>
          Try two last links with delay 5 sec; and try without delay.
            </para>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/cookie.xsp
  
  Index: cookie.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: cookie.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
          xmlns:xsp="http://apache.org/xsp";
          xmlns:xsp-cookie="http://apache.org/xsp/cookie/2.0";
          xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
    
    <xsp:structure>
      <xsp:include>org.apache.cocoon.environment.Cookie</xsp:include>    
    </xsp:structure>
    
    <page>
      <title>COOKIE LOGIC SHEET TEST1</title>
      
      <br>Trying to generate a cookie with name=testname, value=testvalue, 
maxage=10 years </br>
      <xsp:logic>
        String testname = "testname";
        String testvalue = "testvalue";      
      </xsp:logic>
  
      <!-- Create cookie using constant name -->    
      <xsp-cookie:cookie>
        <xsp-cookie:name>testname1</xsp-cookie:name>
        <xsp-cookie:value>testvalue1</xsp-cookie:value>
        
<xsp-cookie:setMaxAge><xsp:expr>10*365*24*60*60</xsp:expr></xsp-cookie:setMaxAge>
      </xsp-cookie:cookie>
  
      <!-- Create cookie using Java variable name -->    
      <xsp-cookie:cookie>
        <xsp-cookie:name><xsp:expr>testname</xsp:expr></xsp-cookie:name>
        <xsp-cookie:value><xsp:expr>testvalue</xsp:expr></xsp-cookie:value>
        
<xsp-cookie:setMaxAge><xsp:expr>10*365*24*60*60</xsp:expr></xsp-cookie:setMaxAge>
      </xsp-cookie:cookie>            
      
      <br>Cookie Generated</br>
      
      <br>***********</br>
      <br> Cookies as XML </br>
        <xsp-cookie:getCookies as="xml"/>
      <br>***********</br>
      
      <br> Single cookie as XML (using "name" attribute) </br>      
        <xsp-cookie:getCookie as="xml" name="testname"/>
      <br>***********</br>
      
      <br> Single cookie as XML (using "index" attribute) </br>      
        <textarea cols="60" rows="8"><xsp-cookie:getCookie as="xml" 
index="0"/></textarea>
      <br>***********</br>
      
      <br> Name of cookie by using index </br>
        <xsp:logic>
          String name = <xsp-cookie:getName index="0"/>;
        </xsp:logic>
        <cookiename><xsp:expr>name</xsp:expr></cookiename>
      <br>***********</br>
      
      <br> Comment of cookie by using name </br>
        <xsp:logic>
          String commentbyname = <xsp-cookie:getComment name="testname"/>;
        </xsp:logic>
        
<cookiecommentname><xsp:expr>commentbyname</xsp:expr></cookiecommentname>
      <br>***********</br>
      
      <br> Comment of cookie by using index </br>
        <xsp:logic>
          String commentbyindex = <xsp-cookie:getComment index="0"/>;
        </xsp:logic>
        
<cookiecommentindex><xsp:expr>commentbyindex</xsp:expr></cookiecommentindex>
      <br>***********</br>
      
      <br> Domain of cookie by using name </br>
        <xsp:logic>
          String domainbyname = <xsp-cookie:getDomain name="testname"/>;
        </xsp:logic>
        <cookiedomainname><xsp:expr>domainbyname</xsp:expr></cookiedomainname>
      <br>***********</br>
  
      <br> Domain of cookie by using index </br>
        <xsp:logic>
          String domainbyindex = <xsp-cookie:getDomain index="0"/>;
        </xsp:logic>
        
<cookiedomainindex><xsp:expr>domainbyindex</xsp:expr></cookiedomainindex>
      <br>***********</br>
      
      <br> MaxAge of cookie by using name </br>
        <xsp:logic>
          String maxagebyname = <xsp-cookie:getMaxAge name="testname"/>;
        </xsp:logic>
        <cookiemaxagename><xsp:expr>maxagebyname</xsp:expr></cookiemaxagename>
      <br>***********</br>
  
      <br> MaxAge of cookie by using index </br>
        <xsp:logic>
          String maxagebyindex = <xsp-cookie:getMaxAge index="0"/>;
        </xsp:logic>
        
<cookiemaxageindex><xsp:expr>maxagebyindex</xsp:expr></cookiemaxageindex>
      <br>***********</br>
      
      <br> Path of cookie by using name </br>
        <xsp:logic>
          String pathbyname = <xsp-cookie:getPath name="testname"/>;
        </xsp:logic>
        <cookiepathname><xsp:expr>pathbyname</xsp:expr></cookiepathname>
      <br>***********</br>
  
      <br> Path of cookie by using index </br>
        <xsp:logic>
          String pathbyindex = <xsp-cookie:getPath index="0"/>;
        </xsp:logic>
        <cookiepathindex><xsp:expr>pathbyindex</xsp:expr></cookiepathindex>
      <br>***********</br>
      
      <br> Secure of cookie by using name </br>
        <xsp:logic>
          String securebyname = <xsp-cookie:getSecure name="testname"/>;
        </xsp:logic>
        <cookiesecurename><xsp:expr>securebyname</xsp:expr></cookiesecurename>
      <br>***********</br>
  
      <br> Secure of cookie by using index </br>
        <xsp:logic>
          String securebyindex = <xsp-cookie:getSecure index="0"/>;
        </xsp:logic>
        
<cookiesecureindex><xsp:expr>securebyindex</xsp:expr></cookiesecureindex>
      <br>***********</br>
  
      <br> Value of cookie by using name </br>
        <xsp:logic>
          String valuebyname = <xsp-cookie:getValue name="testname"/>;
        </xsp:logic>
        <cookievaluename><xsp:expr>valuebyname</xsp:expr></cookievaluename>
      <br>***********</br>
  
      <br> Value of cookie by using index </br>
        <xsp:logic>
          String valuebyindex = <xsp-cookie:getValue index="0"/>;
        </xsp:logic>
        <cookievalueindex><xsp:expr>valuebyindex</xsp:expr></cookievalueindex>
      <br>***********</br>
      
      <br> Version of cookie by using name </br>
        <xsp:logic>
          String versionbyname = <xsp-cookie:getVersion name="testname"/>;
        </xsp:logic>
        <cookievaluename><xsp:expr>versionbyname</xsp:expr></cookievaluename>
      <br>***********</br>
  
      <br> Value of cookie by using index </br>
        <xsp:logic>
          String versionbyindex = <xsp-cookie:getVersion index="0"/>;
        </xsp:logic>
        <cookievalueindex><xsp:expr>versionbyindex</xsp:expr></cookievalueindex>
      <br>***********</br>
  
      <xsp:logic>
        Cookie cookie = <xsp-cookie:getCookie name="testname1"/>;
      </xsp:logic>
  
    </page>
  </xsp:page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/xsp/esql.xsd
  
  Index: esql.xsd
  ===================================================================
  <?xml version="1.0"?>
  
  <!DOCTYPE schema SYSTEM "../../../../xdocs/dtd/XMLSchema.dtd">
  
  <schema
    xmlns="http://www.w3.org/2000/10/XMLSchema";
    xmlns:esql="http://apache.org/cocoon/SQL/v2";
  >
  
  <element name="esql:connection">
    <annotation>
      <documentation>Opens a new database connection.</documentation>
    </annotation>
    <complexType>
      <sequence>
        <choice>
          <sequence>
            <!-- not schema strings - xsp strings -->
            <element name="esql:driver" type="string">
              <annotation>
                <documentation>The name of the driver to use</documentation>
              </annotation>
            </element>
            <element name="esql:dburl" type="string">
              <annotation>
                <documentation>The URL of the database</documentation>
              </annotation>
            </element>
            <element name="esql:username" type="string" minOccurs="0" 
maxOccurs="1">
              <annotation>
                <documentation>The database user's name</documentation>
              </annotation>
            </element>
            <element name="esql:password" type="string" minOccurs="0" 
maxOccurs="1">
              <annotation>
                <documentation>The database user's password</documentation>
              </annotation>
            </element>
          </sequence>
          <element name="esql:pool" type="string">
            <annotation>
              <documentation>The name of the database pool</documentation>
            </annotation>
          </element>
        </choice>
        <sequence>
          <element name="esql:execute-query" minOccurs="0" 
maxOccurs="unbounded">
            <annotation>
              <documentation>Executes a query on the database</documentation>
            </annotation>
            <complexType>
              <sequence>
                <element name="esql:query">
                  <annotation>
                    <documentation>The query to execute</documentation>
                  </annotation>
                  <complexType mixed="true">
                    <sequence>
                      <element name="esql:parameter" minOccurs="0" 
maxOccurs="unbounded">
                        <annotation>
                          <documentation>A parameter for a prepared 
statement</documentation>
                        </annotation>
                      </element>
                    </sequence>
                  </complexType>
                </element>
                <element name="esql:results" minOccurs="0" maxOccurs="1">
                  <annotation>
                    <documentation>This element's children are instantiated in 
the result tree when the query returns a resultset</documentation>
                  </annotation>
                  <complexType mixed="true">
                    <sequence>
                      <element name="esql:row-results" minOccurs="0" 
maxOccurs="1">
                        <annotation>
                          <documentation>This element's children are 
instantiated in the result tree for each row in the resultset</documentation>
                        </annotation>
                        <complexType mixed="true">
                          <sequence>
                            <choice>
                              <any namespace="##other" minOccurs="0" 
maxOccurs="unbounded" processContents="lax"/>
                              <element name="esql:get-columns" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns a sequence of elements 
whose names are the current row's column names, and whose values are the 
current row's column values</documentation>
                                </annotation>
                                <element name="esql:encoding" minOccurs="0" 
maxOccurs="1">
                                  <annotation>
                                    <documentation>The encoding used for this 
column, specified as a Java encoding 
  name.</documentation>
                                  </annotation>
                                </element>
                              </element>
                              <element name="esql:get-string" minOccurs="0" 
maxOccurs="unbounded" type="EsqlColumnFunction">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a string</documentation>
                                </annotation>
                                <element name="esql:encoding" minOccurs="0" 
maxOccurs="1">
                                  <annotation>
                                    <documentation>The encoding used for this 
column, specified as a Java encoding
  name.</documentation>
                                  </annotation>
                                </element>
                              </element>
                              <element name="esql:get-date" minOccurs="0" 
maxOccurs="unbounded" type="EsqlFormattedColumnFunction">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a date</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-time" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a time</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-timestamp" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a timestamp</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-boolean" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a boolean</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-double" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a double</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-float" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a float</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-int" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a int</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-long" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a long</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-short" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the value of the given 
column in the current row as a short</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-xml" minOccurs="0" 
maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Parses the value of the given 
column in the current row as XML and returns it</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-row-position" 
minOccurs="0" maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the position of the 
current row in the resultset</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-column-name" 
minOccurs="0" maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the name of the given 
column in the current row</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-column-label" 
minOccurs="0" maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the label of the given 
column in the current row</documentation>
                                </annotation>
                              </element>
                              <element name="esql:get-column-type-name" 
minOccurs="0" maxOccurs="unbounded">
                                <annotation>
                                  <documentation>Returns the type name of the 
given column in the current row</documentation>
                                </annotation>
                              </element>
                            </choice>
                          </sequence>
                        </complexType>
                      </element>
                      <element name="esql:no-results" minOccurs="0" 
maxOccurs="1">
                        <annotation>
                          <documentation>This element's children are 
instantiated in the result tree for each row in the resultset</documentation>
                        </annotation>
                      </element>
                    </sequence>
                  </complexType>
                </element>
                <element name="esql:update-results" minOccurs="0" maxOccurs="1">
                  <annotation>
                    <documentation>This element's children are instantiated in 
the result tree if the query returns a number of rows</documentation>
                  </annotation>
                </element>
                <element name="esql:error-results" minOccurs="0" maxOccurs="1">
                  <annotation>
                    <documentation>This element's children are instantiated in 
the result tree if the query results in a database error. If this element does 
not exist, the error is passed on to the xsp layer. If it does exist, the error 
is caught here unless passed on explicitly.</documentation>
                  </annotation>
                </element>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </sequence>
    </complexType>
  </element>
  
  <complexType name="EsqlColumnFunction">
    <annotation>
      <documentation>The given column is indicated by the column attribute. If 
the attribute's value is an integer, it is treated as the index of the column 
in the row, otherwise it's value is treated as the name of the 
column.</documentation>
    </annotation>
    <attribute name="column" type="string"/>
  </complexType>
  
  <complexType name="EsqlFormattedColumnFunction">
    <annotation>
      <documentation>The value of the format attribute can used by some column 
value functions (e.g. date, real) as a template for formatting the column 
value. This is necessarily implementation dependent.</documentation>
    </annotation>
    <complexContent>
      <extension base="EsqlColumnFunction">
        <attribute name="format" type="string"/>
      </extension>
    </complexContent>
  </complexType>
  
  </schema>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/xsp/esql.xsp
  
  Index: esql.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: esql.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:esql="http://apache.org/cocoon/SQL/v2";>
  
    <page>
     <title>A Database Driven XSP Page</title>
  
     <content>
  
     <esql:connection>
       <esql:pool>personnel</esql:pool>
       <esql:execute-query>
         <esql:query>select * from department</esql:query>
         <esql:results>
           <esql:row-results>
             <para><esql:get-string column="name"/></para>
             <esql:get-columns/>
           </esql:row-results>
         </esql:results>
       </esql:execute-query>
  
          <hr/>
  
          <para>
            Below departments and employees are printed. This uses the grouping
            feature in esql.
          </para>
          
          <esql:execute-query>
            <esql:query>
              SELECT department.name, employee.id, employee.name as empName 
FROM department, employee
              WHERE department.id = employee.department_id  ORDER BY 
department.name
            </esql:query>
            <esql:results>
              <esql:row-results>
                <esql:group group-on='name'><!-- grouping -->
                  <Department>
                    <xsp:attribute name='name'><esql:get-string 
column='name'/></xsp:attribute>
                    <h2><esql:get-string column='name'/></h2>
                    <esql:member><!-- grouping -->
                      <para><employee><esql:get-string 
column='empName'/></employee></para>
                    </esql:member><!--grouping -->
                  </Department>
                </esql:group><!-- grouping -->
              </esql:row-results>
            </esql:results>
          </esql:execute-query>
  
          <hr/>
  
          <para>
            Without the grouping feature, the result would look like this:
          </para>
  
          <esql:execute-query>
            <esql:query>
              SELECT department.name, employee.id, employee.name as empName 
FROM department, employee
              WHERE department.id = employee.department_id  ORDER BY 
department.name
            </esql:query>
            <esql:results>
              <esql:row-results>
                <Department>
                  <xsp:attribute name='name'><esql:get-string 
column='name'/></xsp:attribute>
                  <h2><esql:get-string column='name'/></h2>
                  <para><employee><esql:get-string 
column='empName'/></employee></para>
                </Department>
              </esql:row-results>
            </esql:results>
          </esql:execute-query>
  
        </esql:connection>
        
     </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/docs/samples/xsp/hello.xsp
  
  Index: hello.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: hello.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";>
  
    <page>
      <title>Hello</title>
      <content>
        <para>This is my first Cocoon page!</para>
  
        <xsp:element name="para">
          With the help of XSP and 
          <xsp:expr>Constants.COMPLETE_NAME</xsp:expr>
        </xsp:element>
      </content>
    </page>
  
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/logicsheet.xsp
  
  Index: logicsheet.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: logicsheet.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <!-- XSP can be assotiated with the logicsheet using processing
       instruction xml-logicsheet or the xsp:logicsheet element.
       Do not use both methods!
  
  <?xml-logicsheet href="logicsheets/hello.xsl"?>
  
  -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xsp-hello="http://apache.org/xsp/hello/1.0";>
  
    <xsp:logicsheet location="logicsheets/hello.xsl"/>
  
    <!-- Context URL also can be used:
  
    <xsp:logicsheet location="context://logicsheets/hello.xsl"/>
  
       URL relative to the current sitemap CAN NOT be used, as 
       logicsheet is the global object, shared between all sitemaps.
    -->
  
    <page>
      <title>Greetings Page</title>
      <content>
        <xsp:logic>
          String name = <xsp-request:get-parameter name="name"/>;
          if (name == null) {
            <para>
              <!-- Print default greeting -->
              <xsp-hello:greeting name="Unknown"/>
              <form action="logicsheet">
                Please enter your name: <input name="name"/> <input 
type="submit"/>
              </form>
            </para>
          } else {
            <para>
              <!-- Override default greeting -->
              <xsp-hello:greeting value="Welcome to this small logicsheet 
sample">
                <!-- Alternate way of specifying name attribute -->
                <xsp-hello:name><xsp:expr>name</xsp:expr></xsp-hello:name>
              </xsp-hello:greeting>
            </para>
  
            <para>
              This greeting above was created using simple logicsheet.
            </para>
          }
        </xsp:logic>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/request.xsp
  
  Index: request.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: request.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";  
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
  
  <page>
  
  <!-- Test set attribute using Java variable -->
  <xsp:logic>
    String attribute= "Test Attribute Value!";
  </xsp:logic>
  <xsp-request:set-attribute 
name="attr"><xsp:expr>attribute</xsp:expr></xsp-request:set-attribute>
  
  <!-- Test set attribute using constant -->
  <xsp-request:set-attribute name="attr">Test Attribute 
Value!!!</xsp-request:set-attribute>
  
  
  <h1>xsp-request logicsheet output</h1>
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th><th>Java 
method</th><th>Output</th></tr>
  <tr>
    <td>get-uri</td><td><xsp-request:get-uri/></td>
    <td>getRequestURI</td><td><xsp:expr>request.getRequestURI()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-sitemap-uri</td><td><xsp-request:get-sitemap-uri/></td>
      </tr>
  <tr>
    <td>get-scheme</td><td><xsp-request:get-scheme/></td>
    <td>getScheme</td><td><xsp:expr>request.getScheme()</xsp:expr></td>
      </tr>
  <tr>
    
<td>get-character-encoding</td><td><xsp-request:get-character-encoding/></td>
    
<td>getCharacterEncoding</td><td><xsp:expr>request.getCharacterEncoding()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-content-length</td><td><xsp-request:get-content-length/></td>
    
<td>getContentLength</td><td><xsp:expr>request.getContentLength()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-content-type</td><td><xsp-request:get-content-type/></td>
    
<td>getContentType</td><td><xsp:expr>request.getContentType()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-request:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>request.getLocale()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locales</td><td><xsp:expr>String.valueOf(<xsp-request:get-locales 
as="array"/>)</xsp:expr></td>
    
<td>getLocales</td><td><xsp:expr>String.valueOf(request.getLocales())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter</td><td><xsp-request:get-parameter name="param"/></td>
    
<td>getParameter</td><td><xsp:expr>request.getParameter("param")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter with default </td><td><xsp-request:get-parameter 
name="param" default="default"/></td>
      </tr>
  <tr>
    <td>get-parameter-values (as 
array)</td><td><xsp:expr>String.valueOf(<xsp-request:get-parameter-values 
name="param" as="array"/>)</xsp:expr></td>
    
<td>getParameterValues</td><td><xsp:expr>String.valueOf(request.getParameterValues("param"))</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter-names (as 
array)</td><td><xsp:expr>String.valueOf(<xsp-request:get-parameter-names 
as="array"/>)</xsp:expr></td>
    
<td>getParameterNames</td><td><xsp:expr>String.valueOf(request.getParameterNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header accept</td><td><xsp-request:get-header name="accept"/></td>
    <td>getHeader</td><td><xsp:expr>request.getHeader("accept")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header user-agent</td><td><xsp-request:get-header 
name="user-agent"/></td>
    
<td>getHeader</td><td><xsp:expr>request.getHeader("user-agent")</xsp:expr></td>
      </tr>
  <!--
  get-int-header
  get-date-header
  -->
  <tr>
    <td>get-headers accept-language (as 
array)</td><td><xsp:expr>String.valueOf(<xsp-request:get-headers 
name="accept-language" as="array"/>)</xsp:expr></td>
    
<td>getHeaders</td><td><xsp:expr>request.getHeaders("accept-language")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header-names (as 
array)</td><td><xsp:expr>String.valueOf(<xsp-request:get-header-names 
as="array"/>)</xsp:expr></td>
    
<td>getHeaderNames</td><td><xsp:expr>String.valueOf(request.getHeaderNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-attribute attr</td><td><xsp-request:get-attribute name="attr"/></td>
    
<td>getAttribute</td><td><xsp:expr>request.getAttribute("attr")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-attribute-names (as 
array)</td><td><xsp:expr>String.valueOf(<xsp-request:get-attribute-names 
as="array"/>)</xsp:expr></td>
    
<td>getAttributeNames</td><td><xsp:expr>String.valueOf(request.getAttributeNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-requested-url</td><td><xsp-request:get-requested-url/></td>
      </tr>
  <tr>
    <td>get-remote-address</td><td><xsp-request:get-remote-address/></td>
    <td>getRemoteAddr</td><td><xsp:expr>request.getRemoteAddr()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-remote-user</td><td><xsp-request:get-remote-user/></td>
    <td>getRemoteUser</td><td><xsp:expr>request.getRemoteUser()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-context-path</td><td><xsp-request:get-context-path/></td>
    
<td>getContextPath</td><td><xsp:expr>request.getContextPath()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-path-info</td><td><xsp-request:get-path-info/></td>
    <td>getPathInfo</td><td><xsp:expr>request.getPathInfo()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-server-name</td><td><xsp-request:get-server-name/></td>
    <td>getServerName</td><td><xsp:expr>request.getServerName()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-server-port</td><td><xsp-request:get-server-port/></td>
    <td>getServerPort</td><td><xsp:expr>request.getServerPort()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-method</td><td><xsp-request:get-method/></td>
    <td>getMethod</td><td><xsp:expr>request.getMethod()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-query-string</td><td><xsp-request:get-query-string/></td>
    
<td>getQueryString</td><td><xsp:expr>request.getQueryString()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-protocol</td><td><xsp-request:get-protocol/></td>
    <td>getProtocol</td><td><xsp:expr>request.getProtocol()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-remote-host</td><td><xsp-request:get-remote-host/></td>
    <td>getRemoteHost</td><td><xsp:expr>request.getRemoteHost()</xsp:expr></td>
      </tr>
  <tr>
    <td>is-secure</td><td><xsp-request:is-secure/></td>
    <td>isSecure</td><td><xsp:expr>request.isSecure()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-servlet-path</td><td><xsp-request:get-servlet-path/></td>
    
<td>getServletPath</td><td><xsp:expr>request.getServletPath()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-user-principal</td><td><xsp-request:get-user-principal/></td>
    
<td>getUserPrincipal</td><td><xsp:expr>request.getUserPrincipal()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-auth-type</td><td><xsp-request:get-auth-type/></td>
    <td>getAuthType</td><td><xsp:expr>request.getAuthType()</xsp:expr></td>
      </tr>
  <tr>
    <td>is-user-in-role</td><td><xsp-request:is-user-in-role role="admin"/></td>
    
<td>isUserInRole</td><td><xsp:expr>request.isUserInRole("admin")</xsp:expr></td>
      </tr>
  <tr>
    
<td>get-requested-session-id</td><td><xsp-request:get-requested-session-id/></td>
    
<td>getRequestedSessionId</td><td><xsp:expr>request.getRequestedSessionId()</xsp:expr></td>
      </tr>
  </table>
  
        <h1>xsp-request logicsheet output (as xml)</h1>
  <textarea cols="100" rows="30">
  get-uri                     <xsp-request:get-uri as="xml"/>
  get-sitemap-uri             <xsp-request:get-sitemap-uri as="xml"/>
  get-scheme                  <xsp-request:get-scheme as="xml"/>
  get-character-encoding      <xsp-request:get-character-encoding as="xml"/>
  get-content-length          <xsp-request:get-content-length as="xml"/>
  get-content-type            <xsp-request:get-content-type as="xml"/>
  get-locale                  <xsp-request:get-locale as="xml"/>
  get-locales                 <xsp-request:get-locales as="xml"/>
  get-parameter               <xsp-request:get-parameter name="param" as="xml"/>
  get-parameter with default  <xsp-request:get-parameter name="param" 
default="default" as="xml"/>
  get-parameter-values        <xsp-request:get-parameter-values name="param" 
as="xml"/>
  get-parameter-names         <xsp-request:get-parameter-names as="xml"/>
  get-header accept           <xsp-request:get-header name="accept" as="xml"/>
  get-header user-agent       <xsp-request:get-header name="user-agent" 
as="xml"/>
  get-header-names            <xsp-request:get-header-names as="xml"/>
  get-int-header - no sample
  get-date-header - no sample
  get-headers                 <xsp-request:get-headers name="accept-language" 
as="xml"/>
  get-attribute attr          <xsp-request:get-attribute name="attr" as="xml"/>
  get-attribute-names         <xsp-request:get-attribute-names as="xml"/>
  get-requested-url           <xsp-request:get-requested-url as="xml"/>
  get-remote-address          <xsp-request:get-remote-address as="xml"/>
  get-remote-user             <xsp-request:get-remote-user as="xml"/>
  get-context-path            <xsp-request:get-context-path as="xml"/>
  get-path-info               <xsp-request:get-path-info as="xml"/>
  get-server-name             <xsp-request:get-server-name as="xml"/>
  get-server-port             <xsp-request:get-server-port as="xml"/>
  get-method                  <xsp-request:get-method as="xml"/>
  get-query-string            <xsp-request:get-query-string as="xml"/>
  get-protocol                <xsp-request:get-protocol as="xml"/>
  get-remote-host             <xsp-request:get-remote-host as="xml"/>
  is-secure                   <xsp-request:is-secure as="xml"/>
  get-servlet-path            <xsp-request:get-servlet-path as="xml"/>
  get-user-principal          <xsp-request:get-user-principal as="xml"/>
  get-auth-type               <xsp-request:get-auth-type as="xml"/>
  is-user-in-role             <xsp-request:is-user-in-role role="admin" 
as="xml"/>
  get-requested-session-id    <xsp-request:get-requested-session-id as="xml"/>
  </textarea>
  
  <xsp-request:remove-attribute name="attr"/>
  
  <h2>Links</h2>
  <a href="request?param=value&amp;a=b&amp;x=y">Get</a>
  <br/>
  <form method="post" action="request">
  <input name="param"/>
  <input type="submit" value="Post"/>
  </form>
  
  
  </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/resolver.xsp
  
  Index: resolver.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page language="java"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:util="http://apache.org/xsp/util/2.0";
    xmlns:xsp-request="http://apache.org/xsp/request/2.0";
  >
    <xsp:structure>
        <xsp:include>org.apache.cocoon.components.parser.Parser</xsp:include>
        <xsp:include>org.apache.cocoon.environment.Source</xsp:include>
        <xsp:include>org.apache.cocoon.xml.IncludeXMLConsumer</xsp:include>
        <xsp:include>java.io.InputStream</xsp:include>
        <xsp:include>java.io.BufferedInputStream</xsp:include>
        <xsp:include>java.lang.Long</xsp:include>
    </xsp:structure>
    
    <page>
     <title>An XSP Page using a source</title>
     <content>
  <!--
          <p>
                this is the source code of this page: 
<xsp-request:get-sitemap-uri/>
          </p>
          <table align="center" width="90%" bgcolor="#d0FFFF" border="1">
                <tr>
                  <td>
                          <pre>
                          <util:get-source>
                            <util:param 
name="uri">cocoon://view-xsource?filename=/docs/samples/<xsp-request:get-sitemap-uri/>.xsp</util:param>
                          </util:get-source>
                          </pre>                  
                  </td>
                </tr>
          </table>
  -->
  <!-- obtain an InputSource instead of an InputStream -->
          <p>
                this is the source code of this page:
          </p>
          <table align="center" width="90%" bgcolor="#d0FFFF" border="1">
                <tr>
                  <td>
                          <util:include-source><util:param 
name="uri">cocoon://view-xsource?filename=/docs/samples/<xsp-request:get-sitemap-uri/>.xsp</util:param></util:include-source>
                  </td>
                </tr>
          </table>
  <!-- -->
  
        
     </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/response.xsp
  
  Index: response.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: response.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";  
            xmlns:xsp-response="http://apache.org/xsp/response/2.0";>
  
  <page>
  
  <h1>xsp-response logicsheet output</h1>
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th><th>Java 
method</th><th>Output</th></tr>
  <tr>
    
<td>get-character-encoding</td><td><xsp-response:get-character-encoding/></td>
    
<td>getCharacterEncoding</td><td><xsp:expr>response.getCharacterEncoding()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-response:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>response.getLocale()</xsp:expr></td>
      </tr>
  <tr>
    <td>set-locale to GERMANY</td><td>
      
<xsp-response:set-locale><xsp:expr>java.util.Locale.GERMANY</xsp:expr></xsp-response:set-locale>
        </td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-response:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>response.getLocale()</xsp:expr></td>
      </tr>
  
  
<xsp-response:set-locale><xsp:expr>java.util.Locale.getDefault()</xsp:expr></xsp-response:set-locale>
  
  <tr>
    <td>add-date-header</td><td>
      <xsp-response:add-date-header name="X-Cocoon-Date">
        <xsp-response:date><xsp:expr>new Date()</xsp:expr></xsp-response:date>
          </xsp-response:add-date-header></td>
    <td>addDateHeader</td><td><xsp:logic>response.addDateHeader("X-Java-Date", 
System.currentTimeMillis());</xsp:logic></td>
      </tr>
  
  <tr>
    <td>add-header</td><td>
      <xsp-response:add-header name="X-Cocoon-Header" value="Value!"/>
        </td>
    <td>addHeader</td><td><xsp:logic>response.addHeader("X-Java-Header", 
"Value!");</xsp:logic></td>
      </tr>
  
  <tr>
    <td>add-int-header</td><td>
      <xsp-response:add-int-header name="X-Cocoon-Int">
        <xsp-response:value><xsp:expr>5</xsp:expr></xsp-response:value>
          </xsp-response:add-int-header></td>
    <td>addIntHeader</td><td><xsp:logic>response.addIntHeader("X-Java-Int", 
5);</xsp:logic></td>
      </tr>
  
  <tr>
    <td>contains-header</td><td>
      <xsp-response:contains-header name="X-Cocoon-Header"/>
        </td>
    
<td>containsHeader</td><td><xsp:expr>response.containsHeader("X-Java-Header")</xsp:expr></td>
      </tr>
  
  <tr>
    <td>encode-url</td><td>
      <xsp-response:encode-url url="http://localhost:8080/cocoon/welcome"/>
        </td>
    
<td>encodeURL</td><td><xsp:expr>response.encodeURL("http://localhost:8080/cocoon/welcome";)</xsp:expr></td>
      </tr>
  <!--
  xsp-response:add-cookie
  xsp-response:set-date-header
  xsp-response:set-header
  xsp-response:set-int-header
  -->
  </table>
  
        <h1>xsp-response logicsheet output (as xml)</h1>
  <textarea cols="100" rows="12">
  get-character-encoding      <xsp-response:get-character-encoding as="xml"/>
  get-locale                  <xsp-response:get-locale as="xml"/>
  contains-header             <xsp-response:contains-header 
name="X-Cocoon-Header" as="xml"/>
  encode-url                  <xsp-response:encode-url 
url="http://localhost:8080/cocoon/welcome"; as="xml"/>
  </textarea>
  
  </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/session.xsp
  
  Index: session.xsp
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: session.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-session="http://apache.org/xsp/session/2.0";
            create-session="yes">
    
  <page>
  
  <p>Adding attribute attr1='Test Value!'.</p>
  <xsp-session:set-attribute name="attr1">Test 
value!</xsp-session:set-attribute>
  <p>Set max inactive interval to 500</p>
  <xsp-session:set-max-inactive-interval interval="500"/>
  
  <h1>xsp-session logicsheet output</h1>
  
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th></tr>
  <tr>
    <td>get-session-id</td><td><xsp-session:get-session-id/></td></tr>
  <tr>
    <td>get-attribute</td><td><xsp-session:get-attribute 
name="attr1"/></td></tr>
  <tr>
    <td>get-attribute-names</td><td><xsp:expr><xsp-session:get-attribute-names 
as="array"/></xsp:expr></td></tr>
  <tr>
    <td>get-creation-time</td><td><xsp-session:get-creation-time/></td></tr>
  <tr>
    <td>get-creation-time (string)</td><td><xsp-session:get-creation-time 
as="string"/></td></tr>
  <tr>
    <td>get-id</td><td><xsp-session:get-id/></td></tr>
  <tr>
    
<td>get-last-accessed-time</td><td><xsp-session:get-last-accessed-time/></td></tr>
  <tr>
    <td>get-last-accessed-time 
(string)</td><td><xsp-session:get-last-accessed-time as="string"/></td></tr>
  <tr>
    
<td>get-max-inactive-interval</td><td><xsp-session:get-max-inactive-interval/></td></tr>
  <tr>
    <td>is-new</td><td><xsp-session:is-new/></td></tr>
  </table>
  
  <h1>xsp-session logicsheet output (as xml)</h1>
  
  <textarea cols="100" rows="20">
  get-session-id              <xsp-session:get-session-id as="xml"/>
  get-attribute               <xsp-session:get-attribute name="attr1" as="xml"/>
  get-attribute-names         <xsp-session:get-attribute-names as="xml"/>
  get-creation-time           <xsp-session:get-creation-time as="xml"/>
  get-id                      <xsp-session:get-id as="xml"/>
  get-last-accessed-time      <xsp-session:get-last-accessed-time as="xml"/>
  get-max-inactive-interval   <xsp-session:get-max-inactive-interval as="xml"/>
  is-new                      <xsp-session:is-new as="xml"/>
  encode-url                  <xsp-session:encode-url href="../"/>
  form-encode-url             <xsp-session:form-encode-url href="../"/>
  </textarea>
  
  
  <p>Removing attribute attr1</p>
  <xsp-session:remove-attribute name="attr1"/>
  <p>Invalidating session</p>
  <xsp-session:invalidate/>
  
  </page>
  
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/sessionpage.xsp
  
  Index: sessionpage.xsp
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: sessionpage.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-session="http://apache.org/xsp/session/2.0";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            create-session="yes">
    
    <!-- a simple session page by J�rg Prante <[EMAIL PROTECTED]> -->
    
    <page>
      <title>A Simple URI-based Session Example</title>
      <content>
        <para> <xsp-request:get-uri as="xml"/> </para>
        <para> Session ID = <xsp-session:get-id as="xml"/> </para>
        <para>
        Encode URL Test =
        <xsp-session:encode-url href="sessionpage">Follow 
me!</xsp-session:encode-url>
        </para>
             
        <para>Session parameter "my-param" is <xsp-session:get-attribute 
name="my-param" default="not set"/></para>
        
        <!-- set my-param for future visits to page -->
        <xsp-session:set-attribute 
name="my-param">set</xsp-session:set-attribute>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/simple.xsp
  
  Index: simple.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: simple.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:log="http://apache.org/xsp/log/2.0";
            xmlns:capture="http://apache.org/cocoon/capture/1.0";>
  
    <page>
    <log:logger name="xsp-sample" filename="xsp-sample.log"/>
    <log:debug>Processing the beginning of the page</log:debug>
  
     <title>A Simple XSP Page</title>
  
     <content>
  
     <capture:fragment-variable name="page_part">
       <para>These 2 paragraphs were generated at the start of the XSP, and 
captured for insertion at the end.</para>
  
       <para>Brought to you by Cocoon at <xsp:expr>new Date()</xsp:expr>.</para>
     </capture:fragment-variable>
  
     <para>Hi there! I'm a simple dynamic page generated by XSP (eXtensible 
Server Pages).</para>
  
     <para>I was requested as the URI: <b><xsp-request:get-uri 
as="xml"/></b></para>
  
     <para>The following list was dynamically generated:</para>
  
     <ul>
       <xsp:logic>
         <![CDATA[
         for (int i=0; i<3; i++) {
         ]]>
           <li>
             Item <xsp:expr>i</xsp:expr>
           </li>
         <![CDATA[
         } 
         ]]>
       </xsp:logic>
     </ul>
  
     <xsp:element>
       <xsp:param name="name"><xsp:expr>"P".toLowerCase()</xsp:expr></xsp:param>
       <xsp:attribute name="align">left</xsp:attribute>
       <i>
         This paragraph was dynamically generated by logic embedded in the page
       </i>
     </xsp:element>
  
     <para>
       Request parameter "name" as XML:
       <xsp-request:get-parameter name="name" default="Not provided" as="xml"/>
     </para>
  
     <para>
       Request parameter "name" as String:
       <xsp-request:get-parameter name="name" default="Not provided"/>
     </para>
  
     <para>
       Request parameter "name" as iso-8859-2 encoded String (with servlet
       container encoding iso-8859-1):
       <xsp-request:get-parameter name="name" default="Not provided"
         form-encoding="iso-8859-2" container-encoding="iso-8859-1"/>
     </para>
  
     <xsp-request:get-parameter-values name="name"/>
  
     <xsp-request:get-parameter-names/>
  
     <para>
       Header "user-agent" as XML:
       <xsp-request:get-header name="user-agent" as="xml"/>
     </para>
  
     <para>
       Header "user-agent" as String:
       <xsp-request:get-header name="user-agent"/>
     </para>
  
     <xsp-request:get-header-names/>
  
     <xsp:expr>page_part</xsp:expr>
     </content>
     <log:debug>Processing the end of the page</log:debug>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp/upload.xsp
  
  Index: upload.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: upload.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";
            xmlns:xsp-response="http://apache.org/xsp/response/2.0";
            xmlns:log="http://apache.org/xsp/log/2.0";>
  
    <xsp:structure>
     
<xsp:include>org.apache.cocoon.components.language.markup.xsp.XSPUtil</xsp:include>
     
<xsp:include>org.apache.avalon.framework.context.ContextException</xsp:include>
    </xsp:structure>
  
    <xsp:logic>
    File uploadDir = null;
    /** Contextualize this class */
    public void contextualize(Context context) throws ContextException {
      uploadDir = (File) context.get(Constants.CONTEXT_UPLOAD_DIR);
    }
    </xsp:logic>
  
    <page>
     <title>This form allows you upload files</title>
     <content>
       <para>
         <form method="post" enctype="multipart/form-data" action="upload">
           File:  <input type="file" name="uploaded_file" size="50" />
       <p><input type="submit" value="Upload File" /></p>
         </form>
       </para>
       <para>
       <ul>
         <xsp:logic>
          getLogger().debug("Dir=" + uploadDir);
           String[] filelist = uploadDir.list();
           <![CDATA[
           getLogger().debug("List=" + filelist.length);
           for (int i = 0; i < filelist.length; i++) {
              getLogger().debug("File [" + i + "]=" + filelist[i]);
           ]]>
             <li>
               <xsp:expr>filelist[i]</xsp:expr>
             </li>
           <![CDATA[
           }
           ]]>
         </xsp:logic>
       </ul>
       </para>
       <para>Brought to you by Cocoon at <xsp:expr>new Date()</xsp:expr>.</para>
  
     </content>
    </page>
  </xsp:page>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-js/hello.xsp
  
  Index: hello.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: hello.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="javascript" xmlns:xsp="http://apache.org/xsp";>
    <page>
      <title>Hello</title>
      <content>
        <para>This is my first Cocoon page!</para>
  
        <xsp:element name="para">
          With the help of XSP and Javascript!
        </xsp:element>
  
        <para>
          <xsp:logic>
            align = "center";
          </xsp:logic>
          <p>
            <xsp:attribute 
name="align"><xsp:expr>align</xsp:expr></xsp:attribute>
      
            <xsp:logic>
              msg = "Executed at: ";
              <xsp:content>
                <xsp:expr>msg + new Date()</xsp:expr>
              </xsp:content>
            </xsp:logic>
          </p>
        </para>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-js/request.xsp
  
  Index: request.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: request.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="jsxsp"
            xmlns:xsp="http://apache.org/xsp";  
            xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
  
  <page>
  
  <xsp-request:set-attribute name="attr">Test Attribute 
Value</xsp-request:set-attribute>
  
  <h1>xsp-request logicsheet output</h1>
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th><th>Java 
method</th><th>Output</th></tr>
  <tr>
    <td>get-uri</td><td><xsp-request:get-uri/></td>
    <td>getRequestURI</td><td><xsp:expr>request.getRequestURI()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-sitemap-uri</td><td><xsp-request:get-sitemap-uri/></td>
      </tr>
  <tr>
    <td>get-scheme</td><td><xsp-request:get-scheme/></td>
    <td>getScheme</td><td><xsp:expr>request.getScheme()</xsp:expr></td>
      </tr>
  <tr>
    
<td>get-character-encoding</td><td><xsp-request:get-character-encoding/></td>
    
<td>getCharacterEncoding</td><td><xsp:expr>request.getCharacterEncoding()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-content-length</td><td><xsp-request:get-content-length/></td>
    
<td>getContentLength</td><td><xsp:expr>request.getContentLength()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-content-type</td><td><xsp-request:get-content-type/></td>
    
<td>getContentType</td><td><xsp:expr>request.getContentType()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-request:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>request.getLocale()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locales</td><td><xsp:expr>String(<xsp-request:get-locales 
as="array"/>)</xsp:expr></td>
    
<td>getLocales</td><td><xsp:expr>String(request.getLocales())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter</td><td><xsp-request:get-parameter name="param"/></td>
    
<td>getParameter</td><td><xsp:expr>request.getParameter("param")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter with default </td><td><xsp-request:get-parameter 
name="param" default="default"/></td>
      </tr>
  <tr>
    <td>get-parameter-values (as 
array)</td><td><xsp:expr>String(<xsp-request:get-parameter-values name="param" 
as="array"/>)</xsp:expr></td>
    
<td>getParameterValues</td><td><xsp:expr>String(request.getParameterValues("param"))</xsp:expr></td>
      </tr>
  <tr>
    <td>get-parameter-names (as 
array)</td><td><xsp:expr>String(<xsp-request:get-parameter-names 
as="array"/>)</xsp:expr></td>
    
<td>getParameterNames</td><td><xsp:expr>String(request.getParameterNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header accept</td><td><xsp-request:get-header name="accept"/></td>
    <td>getHeader</td><td><xsp:expr>request.getHeader("accept")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header user-agent</td><td><xsp-request:get-header 
name="user-agent"/></td>
    
<td>getHeader</td><td><xsp:expr>request.getHeader("user-agent")</xsp:expr></td>
      </tr>
  <!--
  get-int-header
  get-date-header
  -->
  <tr>
    <td>get-headers accept-language (as 
array)</td><td><xsp:expr>String(<xsp-request:get-headers name="accept-language" 
as="array"/>)</xsp:expr></td>
    
<td>getHeaders</td><td><xsp:expr>request.getHeaders("accept-language")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-header-names (as 
array)</td><td><xsp:expr>String(<xsp-request:get-header-names 
as="array"/>)</xsp:expr></td>
    
<td>getHeaderNames</td><td><xsp:expr>String(request.getHeaderNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-attribute attr</td><td><xsp-request:get-attribute name="attr"/></td>
    
<td>getAttribute</td><td><xsp:expr>request.getAttribute("attr")</xsp:expr></td>
      </tr>
  <tr>
    <td>get-attribute-names (as 
array)</td><td><xsp:expr>String(<xsp-request:get-attribute-names 
as="array"/>)</xsp:expr></td>
    
<td>getAttributeNames</td><td><xsp:expr>String(request.getAttributeNames())</xsp:expr></td>
      </tr>
  <tr>
    <td>get-requested-url</td><td><xsp-request:get-requested-url/></td>
      </tr>
  <tr>
    <td>get-remote-address</td><td><xsp-request:get-remote-address/></td>
    <td>getRemoteAddr</td><td><xsp:expr>request.getRemoteAddr()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-remote-user</td><td><xsp-request:get-remote-user/></td>
    <td>getRemoteUser</td><td><xsp:expr>request.getRemoteUser()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-context-path</td><td><xsp-request:get-context-path/></td>
    
<td>getContextPath</td><td><xsp:expr>request.getContextPath()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-path-info</td><td><xsp-request:get-path-info/></td>
    <td>getPathInfo</td><td><xsp:expr>request.getPathInfo()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-server-name</td><td><xsp-request:get-server-name/></td>
    <td>getServerName</td><td><xsp:expr>request.getServerName()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-server-port</td><td><xsp-request:get-server-port/></td>
    <td>getServerPort</td><td><xsp:expr>request.getServerPort()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-method</td><td><xsp-request:get-method/></td>
    <td>getMethod</td><td><xsp:expr>request.getMethod()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-query-string</td><td><xsp-request:get-query-string/></td>
    
<td>getQueryString</td><td><xsp:expr>request.getQueryString()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-protocol</td><td><xsp-request:get-protocol/></td>
    <td>getProtocol</td><td><xsp:expr>request.getProtocol()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-remote-host</td><td><xsp-request:get-remote-host/></td>
    <td>getRemoteHost</td><td><xsp:expr>request.getRemoteHost()</xsp:expr></td>
      </tr>
  <tr>
    <td>is-secure</td><td><xsp-request:is-secure/></td>
    <td>isSecure</td><td><xsp:expr>request.isSecure()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-servlet-path</td><td><xsp-request:get-servlet-path/></td>
    
<td>getServletPath</td><td><xsp:expr>request.getServletPath()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-user-principal</td><td><xsp-request:get-user-principal/></td>
    
<td>getUserPrincipal</td><td><xsp:expr>request.getUserPrincipal()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-auth-type</td><td><xsp-request:get-auth-type/></td>
    <td>getAuthType</td><td><xsp:expr>request.getAuthType()</xsp:expr></td>
      </tr>
  <tr>
    <td>is-user-in-role</td><td><xsp-request:is-user-in-role role="admin"/></td>
    
<td>isUserInRole</td><td><xsp:expr>request.isUserInRole("admin")</xsp:expr></td>
      </tr>
  <tr>
    
<td>get-requested-session-id</td><td><xsp-request:get-requested-session-id/></td>
    
<td>getRequestedSessionId</td><td><xsp:expr>request.getRequestedSessionId()</xsp:expr></td>
      </tr>
  </table>
  
        <h1>xsp-request logicsheet output (as xml)</h1>
  <textarea cols="100" rows="30">
  get-uri                     <xsp-request:get-uri as="xml"/>
  get-sitemap-uri             <xsp-request:get-sitemap-uri as="xml"/>
  get-scheme                  <xsp-request:get-scheme as="xml"/>
  get-character-encoding      <xsp-request:get-character-encoding as="xml"/>
  get-content-length          <xsp-request:get-content-length as="xml"/>
  get-content-type            <xsp-request:get-content-type as="xml"/>
  get-locale                  <xsp-request:get-locale as="xml"/>
  get-locales                 <xsp-request:get-locales as="xml"/>
  get-parameter               <xsp-request:get-parameter name="param" as="xml"/>
  get-parameter with default  <xsp-request:get-parameter name="param" 
default="default" as="xml"/>
  get-parameter-values        <xsp-request:get-parameter-values name="param" 
as="xml"/>
  get-parameter-names         <xsp-request:get-parameter-names as="xml"/>
  get-header accept           <xsp-request:get-header name="accept" as="xml"/>
  get-header user-agent       <xsp-request:get-header name="user-agent" 
as="xml"/>
  get-header-names            <xsp-request:get-header-names as="xml"/>
  get-int-header - no sample
  get-date-header - no sample
  get-headers - no sample
  get-headers                 <xsp-request:get-headers name="accept-language" 
as="xml"/>
  get-attribute attr          <xsp-request:get-attribute name="attr" as="xml"/>
  get-attribute-names         <xsp-request:get-attribute-names as="xml"/>
  get-requested-url           <xsp-request:get-requested-url as="xml"/>
  get-remote-address          <xsp-request:get-remote-address as="xml"/>
  get-remote-user             <xsp-request:get-remote-user as="xml"/>
  get-context-path            <xsp-request:get-context-path as="xml"/>
  get-path-info               <xsp-request:get-path-info as="xml"/>
  get-server-name             <xsp-request:get-server-name as="xml"/>
  get-server-port             <xsp-request:get-server-port as="xml"/>
  get-method                  <xsp-request:get-method as="xml"/>
  get-query-string            <xsp-request:get-query-string as="xml"/>
  get-protocol                <xsp-request:get-protocol as="xml"/>
  get-remote-host             <xsp-request:get-remote-host as="xml"/>
  is-secure                   <xsp-request:is-secure as="xml"/>
  get-servlet-path            <xsp-request:get-servlet-path as="xml"/>
  get-user-principal          <xsp-request:get-user-principal as="xml"/>
  get-auth-type               <xsp-request:get-auth-type as="xml"/>
  is-user-in-role             <xsp-request:is-user-in-role role="admin" 
as="xml"/>
  get-requested-session-id    <xsp-request:get-requested-session-id as="xml"/>
  </textarea>
  
  <xsp-request:remove-attribute name="attr"/>
  
  <h2>Links</h2>
  <a href="request-test?param=value&amp;a=b&amp;x=y">Get</a>
  <br/>
  <form method="post" action="request-test">
  <input name="param"/>
  <input type="submit" value="Post"/>
  </form>
  
  
  </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-js/response.xsp
  
  Index: response.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: response.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="javascript"
            xmlns:xsp="http://apache.org/xsp";  
            xmlns:xsp-response="http://apache.org/xsp/response/2.0";>
  
  <page>
  
  <h1>xsp-response logicsheet output</h1>
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th><th>Java 
method</th><th>Output</th></tr>
  <tr>
    
<td>get-character-encoding</td><td><xsp-response:get-character-encoding/></td>
    
<td>getCharacterEncoding</td><td><xsp:expr>response.getCharacterEncoding()</xsp:expr></td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-response:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>response.getLocale()</xsp:expr></td>
      </tr>
  <tr>
    <td>set-locale to GERMANY</td><td>
      
<xsp-response:set-locale><xsp:expr>java.util.Locale.GERMANY</xsp:expr></xsp-response:set-locale>
        </td>
      </tr>
  <tr>
    <td>get-locale</td><td><xsp-response:get-locale/></td>
    <td>getLocale</td><td><xsp:expr>response.getLocale()</xsp:expr></td>
      </tr>
  
  
<xsp-response:set-locale><xsp:expr>java.util.Locale.getDefault()</xsp:expr></xsp-response:set-locale>
  
  <tr>
    <td>add-date-header</td><td>
      <xsp-response:add-date-header name="X-Cocoon-Date">
        <xsp-response:date><xsp:expr>new 
java.util.Date()</xsp:expr></xsp-response:date>
          </xsp-response:add-date-header></td>
    <td>addDateHeader</td><td><xsp:logic>response.addDateHeader("X-Java-Date", 
-1);</xsp:logic></td>
      </tr>
  
  <tr>
    <td>add-header</td><td>
      <xsp-response:add-header name="X-Cocoon-Header" value="Value!"/>
        </td>
    <td>addHeader</td><td><xsp:logic>response.addHeader("X-Java-Header", 
"Value!");</xsp:logic></td>
      </tr>
  
  <tr>
    <td>add-int-header</td><td>
      <xsp-response:add-int-header name="X-Cocoon-Int">
        <xsp-response:value><xsp:expr>5</xsp:expr></xsp-response:value>
          </xsp-response:add-int-header></td>
    <td>addIntHeader</td><td><xsp:logic>response.addIntHeader("X-Java-Int", 
5);</xsp:logic></td>
      </tr>
  
  <tr>
    <td>contains-header</td><td>
      <xsp-response:contains-header name="X-Cocoon-Header"/>
        </td>
    
<td>containsHeader</td><td><xsp:expr>response.containsHeader("X-Java-Header")</xsp:expr></td>
      </tr>
  
  <tr>
    <td>encode-url</td><td>
      <xsp-response:encode-url url="http://localhost:8080/cocoon/welcome"/>
        </td>
    
<td>encodeURL</td><td><xsp:expr>response.encodeURL("http://localhost:8080/cocoon/welcome";)</xsp:expr></td>
      </tr>
  <!--
  xsp-response:add-cookie
  xsp-response:set-date-header
  xsp-response:set-header
  xsp-response:set-int-header
  -->
  </table>
  
        <h1>xsp-response logicsheet output (as xml)</h1>
  <textarea cols="100" rows="12">
  get-character-encoding      <xsp-response:get-character-encoding as="xml"/>
  get-locale                  <xsp-response:get-locale as="xml"/>
  contains-header             <xsp-response:contains-header 
name="X-Cocoon-Header" as="xml"/>
  encode-url                  <xsp-response:encode-url 
url="http://localhost:8080/cocoon/welcome"; as="xml"/>
  </textarea>
  
  </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-js/session.xsp
  
  Index: session.xsp
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  
  <!-- CVS: $Id: session.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="java"
            xmlns:xsp="http://apache.org/xsp";
            xmlns:xsp-session="http://apache.org/xsp/session/2.0";
            create-session="yes">
    
  <page>
  
  <p>Adding attribute attr1='Test Value!'.</p>
  <xsp-session:set-attribute name="attr1">Test 
value!</xsp-session:set-attribute>
  <p>Set max inactive interval to 500</p>
  <xsp-session:set-max-inactive-interval interval="500"/>
  
  <h1>xsp-session logicsheet output</h1>
  
  <table border="1">
  <tr>
    <th>Logicsheet tag</th><th>Output</th></tr>
  <tr>
    <td>get-session-id</td><td><xsp-session:get-session-id/></td></tr>
  <tr>
    <td>get-attribute</td><td><xsp-session:get-attribute 
name="attr1"/></td></tr>
  <tr>
    <td>get-attribute-names</td><td><xsp:expr><xsp-session:get-attribute-names 
as="array"/></xsp:expr></td></tr>
  <tr>
    <td>get-creation-time</td><td><xsp-session:get-creation-time/></td></tr>
  <tr>
    <td>get-creation-time (string)</td><td><xsp-session:get-creation-time 
as="string"/></td></tr>
  <tr>
    <td>get-id</td><td><xsp-session:get-id/></td></tr>
  <tr>
    
<td>get-last-accessed-time</td><td><xsp-session:get-last-accessed-time/></td></tr>
  <tr>
    <td>get-last-accessed-time 
(string)</td><td><xsp-session:get-last-accessed-time as="string"/></td></tr>
  <tr>
    
<td>get-max-inactive-interval</td><td><xsp-session:get-max-inactive-interval/></td></tr>
  <tr>
    <td>is-new</td><td><xsp-session:is-new/></td></tr>
  </table>
  
  <h1>xsp-session logicsheet output (as xml)</h1>
  
  <textarea cols="100" rows="20">
  get-session-id              <xsp-session:get-session-id as="xml"/>
  get-attribute               <xsp-session:get-attribute name="attr1" as="xml"/>
  get-attribute-names         <xsp-session:get-attribute-names as="xml"/>
  get-creation-time           <xsp-session:get-creation-time as="xml"/>
  get-id                      <xsp-session:get-id as="xml"/>
  get-last-accessed-time      <xsp-session:get-last-accessed-time as="xml"/>
  get-max-inactive-interval   <xsp-session:get-max-inactive-interval as="xml"/>
  is-new                      <xsp-session:is-new as="xml"/>
  encode-url                  <xsp-session:encode-url href="../" as="xml"/>
  form-encode-url             <xsp-session:form-encode-url href="../"/>
  </textarea>
  
  
  <p>Removing attribute attr1</p>
  <xsp-session:remove-attribute name="attr1"/>
  <p>Invalidating session</p>
  <xsp-session:invalidate/>
  
  </page>
  
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-js/simple.xsp
  
  Index: simple.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- CVS: $Id: simple.xsp,v 1.1 2002/07/02 13:06:39 cziegeler Exp $ -->
  
  <xsp:page language="javascript" xmlns:xsp="http://apache.org/xsp";>
    <page>
      <title>A Simple XSP Page in Javascript</title>
      <content>
        <para>Hi there! I'm a simple dynamic page generated by XSP (eXtensible 
Server Pages).</para>
        <para>
          Testing Javascript:
          <ul>
            <li>
              <xsp:logic>
                i = 1;
                <xsp:content>Integer in Javascript: <xsp:expr>i</xsp:expr>
                </xsp:content>
              </xsp:logic>
            </li>
            <li>
              <xsp:logic>
                s = "Test Javascript String";
                <xsp:content>String in Javascript: <xsp:expr>s</xsp:expr>
                </xsp:content>
              </xsp:logic>
            </li>
            <li>
              Java 'page' object: <xsp:expr>page</xsp:expr>
            </li>
            <li>
              Java 'request' object: <xsp:expr>request</xsp:expr>
            </li>
            <li>
              Request locale object: <xsp:expr>request.getLocale()</xsp:expr>
            </li>
            <li>
              Java Null object: <xsp:expr>request.getUserPrincipal()</xsp:expr>
            </li>
          </ul>
        </para>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/docs/samples/xsp-py/hello.xsp
  
  Index: hello.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsp:page language="python" xmlns:xsp="http://apache.org/xsp";>
    <page>
      <title>Hello from XSP page in Python</title>
      <para>
        <b>This</b> is my first <b>Cocoon</b> page!
      </para>
  
      <xsp:element>
        <xsp:param name="name">para</xsp:param>
        With the help of XSP and Python!
      </xsp:element>
  
      <para>
        <xsp:logic>
          align = "center";
          <p>
            <xsp:attribute 
name="align"><xsp:expr>align</xsp:expr></xsp:attribute>
            <xsp:logic>
              msg = "Executed at: "
              import time
              now = time.asctime(time.localtime())
              <xsp:content>
                Executed at:
                <xsp:expr>now</xsp:expr>
              </xsp:content>
            </xsp:logic>
          </p>
        </xsp:logic>
      </para>
    </page>
  </xsp:page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/logicsheets/hello.xsl
  
  Index: hello.xsl
  ===================================================================
  <?xml version="1.0"?>
  <!--
   *****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * _________________________________________________________________________ *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   *****************************************************************************
  -->
  
  <!--
   * Hello World logicsheet for the Java language
   *
   * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a>
   * @version CVS $Revision: 1.1 $ $Date: 2002/07/02 13:06:40 $
  -->
  
  <xsl:stylesheet
    version="1.0"
    xmlns:xsp="http://apache.org/xsp";
    xmlns:xsp-hello="http://apache.org/xsp/hello/1.0";
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:template match="xsp-hello:greeting">
      <xsl:variable name="name">
        <xsl:choose>
          <xsl:when test="@name">"<xsl:value-of select="@name"/>"</xsl:when>
          <xsl:when test="xsp-hello:name">
            <xsl:call-template name="get-nested-content">
              <xsl:with-param name="content" select="xsp-hello:name"/>
            </xsl:call-template>
          </xsl:when>
        </xsl:choose>
      </xsl:variable>
  
      <xsl:variable name="value">
        <xsl:choose>
          <xsl:when test="@value">"<xsl:value-of select="@value"/>"</xsl:when>
          <xsl:when test="xsp-hello:value">
            <xsl:call-template name="get-nested-content">
              <xsl:with-param name="content" select="xsp-hello:value"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>"Hello"</xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
  
      <xsp:content>
      <xsp:expr><xsl:value-of select="$value"/></xsp:expr>, 
      <xsp:expr><xsl:value-of select="$name"/></xsp:expr>!
      </xsp:content>
    </xsl:template>
  
    <xsl:template name="get-nested-content">
      <xsl:param name="content"/>
      <xsl:choose>
        <xsl:when test="$content/*">
          <xsl:apply-templates select="$content/*"/>
        </xsl:when>
        <xsl:otherwise>"<xsl:value-of select="$content"/>"</xsl:otherwise>
      </xsl:choose>
    </xsl:template>
   
    <xsl:template match="@*|*|text()|processing-instruction()">
      <xsl:copy>
        <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
      </xsl:copy>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/myapp/readme.html
  
  Index: readme.html
  ===================================================================
  <!-- CVS: $Id: readme.html,v 1.1 2002/07/02 13:06:40 cziegeler Exp $ -->
  
  <html>
     <head>
        <title>Minimal Cocoon Web Application - README</title>
     </head>
     <body>
  <pre>
  ==================================================================
               Minimal Cocoon Web Application Template
  
         by Konstantin Piroumian ([EMAIL PROTECTED])
         Date: $Date: 2002/07/02 13:06:40 $
  ==================================================================
  
  
  This is the place where you can start hacking with Cocoon.
  
  What you have to know before using this template
  ------------------------------------------------
  1. You should know basics of XML: how to create content
  
  2. You should be familiar more or less with XSLT
  
  3. You should be familiar with Web Applications 
  and servlet environment
  
  4. It's not neccessary, but it'd be fine if you were familiar
  with Java language, so you could create dynamic pages
  
  
  For newbies
  ------------
  
  1. Create XML files, drop them into 'xml' directory
  
  2. Edit the stylesheet named style.xsl to render your xml, 
     just drop it into 'xsl' directory
  
  3. Access this URL: http://localhost:port/cocoon/myapp/page.xml 
     where 
         'page' is actual name of your xml file, say 'index.xml'
         'port' your app server port where it handles servlet requests, 
          8080 for Tomcat
        
  4. Enjoy!
  
  Note: Templates for XML, XSLT files are provided for your convenience.
  
  
  A little more advanced users
  ----------------------------
  
  1. Create XSP files, drop them into 'xml' directory
  
  2. Create/reuse stylesheet(s) to render your XSP output
  
  3. Access this URL: http://localhost:port/cocoon/myapp/page.xsp
  
  4. Fix your XSP, try again
  
  5. Enjoy!
  
   
  Very advanced users
  --------------------
  
  1. Read User docs (http://xml.apache.org/cocoon/userdocs/)
  
  2. Edit your sitemap.xmap as needed for your application: 
        - add/use components (see root sitemap to see what is availble)
        - add/modify pipelines (change matching patterns, add actions)
        - use more transformations in pipeline
        - use aggregation
        - create sitemap resources
        - create sitemap views
  
  Not all the above is necessary for every application. 
  
  For advanced developers
  ------------------------
  You don't need this application, you can create your own, if no, 
  then look a few lines upper  ;)
  
  1. Read Developer docs 
(http://xml.apache.org/cocoon/developing/extending.html)
  
  2. Implement your own components:
        - actions
        - generators
        - transformers
        - serializers
        - sources
        - [add your own]
  
  Note: You can find a lot of samples to learn from in Cocoon sources.
  
  3. Declare your components in sitemap
  
  4. Debug your sitemap
  
  5. Debug your components
  
  6. Enjoy when it works!
  
  
  For all kind of users
  ---------------------
  
  - Join Cocoon Users mail list and ask questions if you don't find the answer 
in FAQ or docs
  - Join Cocoon Dev mail list to participate in Cocoon development
  
  That's all folks!
  
  Cocoon Team wishes you Happy Hacking with Cocoon 2.1!
  </pre>
     </body>
  </html>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/myapp/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  <?xml version="1.0"?>
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
  <!-- CVS: $Id: sitemap.xmap,v 1.1 2002/07/02 13:06:40 cziegeler Exp $ -->
  <!--
      Minimal sitemap to start making XML/XSP/XSLT transformations.
  
      Author: Konstantin Piroumian "[EMAIL PROTECTED]" 
  -->
      <map:components>
          <map:generators default="file"/>
          <map:transformers default="xslt"/>
          <map:readers default="resource"/>
          <map:serializers default="html"/>
          <map:matchers default="wildcard"/>
          <map:selectors default="browser"/>
      </map:components>
     <!-- =========================== Pipelines 
================================= -->
      <map:pipelines>
          <map:pipeline>
          
                  <!-- Default URL matcher. Matches '/' URLs-->
                  <map:match pattern="">
                      <map:redirect-to uri="readme.html" />
                  </map:match>
  
                  <!-- This matches requests like 'page.xml' to display static 
output -->
                  <map:match pattern="*.xml">
                          <!-- {1} contains the value that substituted '*' in 
the pattern-->
                          <map:generate src="xml/{1}.xml"/>
                          <!-- You can change 'src' to 'xsl/{1}.xsl' to use 
custom stylesheets
                          for every page, e.g.: mypage.xml -> mypage.xsl  -->
                          <map:transform src="xsl/style.xsl"/>
                          <!-- Just output the result as HTML (default) 
                              Add 'type' attribute with 'xml' value to get XML 
output
                          -->
                          <map:serialize/>
                  </map:match>            
                  
                  <!-- This matches requests like 'page.xsp' to display dynamic 
output -->
                  <map:match pattern="*.xsp">
                          <!-- This generator uses 'serverpages' generator. 
                          See the root sitemap for other types of available 
components -->
                          <map:generate type="serverpages" src="xsp/{1}.xsp"/>
                          <map:transform src="xsl/style.xsl"/>
                          <map:serialize/>
                  </map:match>                            
  
                  <!-- Display static HTML files, like readme.html -->          
      
                  <map:match pattern="*.html">
                      <map:read src="{1}.html" mime-type="text/html" />
                  </map:match>
  
                  <!-- Add your pipelines here -->
                  
              </map:pipeline>                
      </map:pipelines>
  </map:sitemap>
  <!-- end of file -->
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/myapp/xml/page.xml
  
  Index: page.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!-- CVS: $Id: page.xml,v 1.1 2002/07/02 13:06:40 cziegeler Exp $ -->
  <page>
      <title>My App page</title>
      <content>
          <para>Just a static contents</para>
      </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/myapp/xsl/style.xsl
  
  Index: style.xsl
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!-- CVS: $Id: style.xsl,v 1.1 2002/07/02 13:06:40 cziegeler Exp $ -->
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
  <xsl:template match="page">
      <html>
          <head>
              <title><xsl:value-of select="title" /></title>
          </head>
          <body>
              <xsl:apply-templates />
          </body>
      </html>
  </xsl:template>
  
  <xsl:template match="title">
      <h1><xsl:value-of select="." /></h1>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/myapp/xsp/page.xsp
  
  Index: page.xsp
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!-- CVS: $Id: page.xsp,v 1.1 2002/07/02 13:06:40 cziegeler Exp $ -->
  
  <!--
       XSP can be assotiated with the logicsheet using processing
       instruction xml-logicsheet or the xsp:logicsheet element.
       Do not use both methods!
  
  <?xml-logicsheet href="logicsheets/hello.xsl"?>
  -->
  
  <xsp:page language="java" xmlns:xsp="http://apache.org/xsp";>
  
  <!-- Place your imports here. Note, that you shoud have imported 
      packages somewhere in classpath. -->
      <xsp:structure>
          <xsp:include>java.util.Date</xsp:include>
      </xsp:structure>
      
      <!-- Place your class level logic here -->
      <xsp:logic>
          private Date getDate() {
              return new Date();
          }
      </xsp:logic>
  
      <!-- Your content root element -->    
      <page>
          <!-- Place logicsheet declarations here. Href is relative to app 
context -->
          <!--
          <xsp:logicsheet location="logicsheets/hello.xsl"/>
          -->        
          <title>My App XSP Page</title>
          <content>
              <para>
                  Some dynamic content <xsp:expr>getDate()</xsp:expr>
              </para>
          </content>
      </page>
  </xsp:page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/stylesheets/deli_test.xsl
  
  Index: deli_test.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
        <xsl:param name="deli-capabilities"/>
        <xsl:param name="accept"/>
        <xsl:template match="/">
                <xsl:if test="normalize-space($accept)=''">
                        <html>
                        <head>
                                <title>Test Page for DELI in Cocoon</title>
                        </head>
                        <body>
                                <h1>DELI is switched off</h1>
                        </body>
                        </html>
                </xsl:if>
                <xsl:if test="contains($accept,'wml') and 
not(normalize-space($accept)='')">
                        <xsl:call-template name="wmldevice"/>
                </xsl:if>
                <xsl:if test="not(contains($accept,'wml')) and 
not(normalize-space($accept)='')">
                        <xsl:call-template name="htmldevice"/>
                </xsl:if>
        </xsl:template>
        <xsl:template name="wmldevice">
                <wml>
                        <card id="init" newcontext="true">
                                <p>
                                        <xsl:call-template name="capabilities"/>
                                </p>
                        </card>
                </wml>
        </xsl:template>
        <xsl:template name="htmldevice">
                <html>
                        <head>
                                <title>Test Page for DELI in Cocoon</title>
                        </head>
                        <body>
                                <xsl:call-template name="capabilities"/>
                        </body>
                </html>
        </xsl:template>
        <xsl:template name="capabilities">
                <xsl:if test="$deli-capabilities/browser/ColorCapable">
  ColorCapable: <xsl:value-of select="$deli-capabilities/browser/ColorCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/AudioInputEncoder">
  AudioInputEncoder: <xsl:for-each 
select="$deli-capabilities/browser/AudioInputEncoder/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if 
test="$deli-capabilities/browser/DownloadableBrowserApps">
  DownloadableBrowserApps: <xsl:for-each 
select="$deli-capabilities/browser/DownloadableBrowserApps/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/TextInputCapable">
  TextInputCapable: <xsl:value-of 
select="$deli-capabilities/browser/TextInputCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/ImageCapable">
  ImageCapable: <xsl:value-of select="$deli-capabilities/browser/ImageCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CcppAccept">
        CcppAccept:
        <xsl:for-each select="$deli-capabilities/browser/CcppAccept/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CcppAccept-Charset">
  CcppAccept-Charset: <xsl:for-each 
select="$deli-capabilities/browser/CcppAccept-Charset/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CcppAccept-Encoding">
  CcppAccept-Encoding: <xsl:for-each 
select="$deli-capabilities/browser/CcppAccept-Encoding/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CcppAccept-Language">
  CcppAccept-Language: <xsl:for-each 
select="$deli-capabilities/browser/CcppAccept-Language/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JavaPlatform">
  JavaPlatform: <xsl:for-each 
select="$deli-capabilities/browser/JavaPlatform/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JVMVersion">
  JVMVersion: <xsl:for-each select="$deli-capabilities/browser/JVMVersion/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/XhtmlModules">
  XhtmlModules: <xsl:for-each 
select="$deli-capabilities/browser/XhtmlVersion/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/SupportedPictogramSet">
  SupportedPictogramSet: <xsl:for-each 
select="$deli-capabilities/browser/SupportedPictogramSet/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/OutputCharSet">
  OutputCharSet: <xsl:for-each 
select="$deli-capabilities/browser/OutputCharSet/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/InputCharSet">
  InputCharSet: <xsl:for-each 
select="$deli-capabilities/browser/InputCharSet/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WmlScriptVersion">
  WmlScriptVersion: <xsl:for-each 
select="$deli-capabilities/browser/WmlScriptVersion/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WmlVersion">
  WmlVersion: <xsl:for-each select="$deli-capabilities/browser/WmlVersion/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/VideoInputEncoder">
  VideoInputEncoder: <xsl:for-each 
select="$deli-capabilities/browser/VideoInputEncoder/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/SupportedBeareres">
  SupportedBearers: <xsl:for-each 
select="$deli-capabilities/browser/SupportedBearers/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/SecuritySupport">
  SecuritySupport: <xsl:value-of 
select="$deli-capabilities/browser/SecuritySupport"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CurrentBearerService">
  CurrentBearerService: <xsl:value-of 
select="$deli-capabilities/browser/CurrentBearerService"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/BrowserName">
  BrowserName: <xsl:value-of select="$deli-capabilities/browser/BrowserName"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/BrowserVersion">
  BrowserVersion: <xsl:value-of 
select="$deli-capabilities/browser/BrowserVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if 
test="$deli-capabilities/browser/SupportedBlueToothVersion">
  SupportedBluetoothVersion: <xsl:value-of 
select="$deli-capabilities/browser/SupportedBlueToothVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/SoftwareNumber">
  SoftwareNumber: <xsl:value-of 
select="$deli-capabilities/browser/SoftwareNumber"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/HtmlVersion">
  HtmlVersion: <xsl:value-of select="$deli-capabilities/browser/HtmlVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JavaAppletEnabled">
  JavaAppletEnabled: <xsl:value-of 
select="$deli-capabilities/browser/JavaAppletEnabled"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JavaScriptEnabled">
  JavaScriptEnabled: <xsl:value-of 
select="$deli-capabilities/browser/JavaScriptEnabled"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JavaScriptVersion">
  JavaScriptVersion: <xsl:value-of 
select="$deli-capabilities/browser/JavaScriptVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/PreferenceForFrames">
  PreferenceForFrames: <xsl:value-of 
select="$deli-capabilities/browser/PreferenceForFrames"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/TablesCapable">
  TablesCapable: <xsl:value-of 
select="$deli-capabilities/browser/TablesCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/XhtmlVersion">
  XhtmlVersion: <xsl:value-of select="$deli-capabilities/browser/XhtmlVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WapDeviceClass">
  WapDeviceClass: <xsl:value-of 
select="$deli-capabilities/browser/WapDeviceClass"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WapVersion">
  WapVersion: <xsl:value-of select="$deli-capabilities/browser/WapVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WmlDeckSize">
  WmlDeckSize: <xsl:value-of select="$deli-capabilities/browser/WmlDeckSize"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WmlScriptLibraries">
  WmlScriptLibraries: <xsl:for-each 
select="$deli-capabilities/browser/WmlScriptLibraries/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WtaiLibraries">
  WtaiLibraries:        <xsl:for-each 
select="$deli-capabilities/browser/WtaiLibraries/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/WtaiVersion">
  WtaiVersion: <xsl:value-of select="$deli-capabilities/browser/WtaiVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/BluetoothProfile">
  BluetoothProfile:     <xsl:for-each 
select="$deli-capabilities/browser/BluetoothProfile/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/ImageCapable">
  ImageCapable: <xsl:value-of select="$deli-capabilities/browser/ImageCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Keyboard">
  Keyboard: <xsl:value-of select="$deli-capabilities/browser/Keyboard"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/CPU">
  CPU: <xsl:value-of select="$deli-capabilities/browser/CPU"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Model">
  Model: <xsl:value-of select="$deli-capabilities/browser/Model"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/NumberOfSoftKeys">
  NumberOfSoftKeys: <xsl:value-of 
select="$deli-capabilities/browser/NumberOfSoftKeys"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/PixelAspectRatio">
  PixelAspectRatio: <xsl:value-of 
select="$deli-capabilities/browser/PixelAspectRatio"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/PointingResolution">
  PointingResolution: <xsl:value-of 
select="$deli-capabilities/browser/PointingResolution"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/ScreenSize">
  ScreenSize: <xsl:value-of select="$deli-capabilities/browser/ScreenSize"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/ScreenSizeChar">
  ScreenSizeChar: <xsl:value-of 
select="$deli-capabilities/browser/ScreenSizeChar"/>
                        <br/>
                </xsl:if>
                <xsl:if 
test="$deli-capabilities/browser/StandardFontProportional">
  StandardFontProportional: <xsl:value-of 
select="$deli-capabilities/browser/StandardFontProportional"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/SoundOutputCapable">
  SoundOutputCapable: <xsl:value-of 
select="$deli-capabilities/browser/SoundOutputCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/TextInputCapable">
  TextInputCapable: <xsl:value-of 
select="$deli-capabilities/browser/TextInputCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/RecipientAppAgent">
  RecipientAppAgent: <xsl:value-of 
select="$deli-capabilities/browser/RecipientAppAgent"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/OSVersion">
  OSVersion: <xsl:value-of select="$deli-capabilities/browser/OSVersion"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/MexeSpec">
  MexeSpec: <xsl:value-of select="$deli-capabilities/browser/MexeSpec"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/MexeClassmarks">
  MexeClassmarks:       <xsl:for-each 
select="$deli-capabilities/browser/MexeClassmarks/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/JavaEnabled">
  JavaEnabled: <xsl:value-of select="$deli-capabilities/browser/JavaEnabled"/>
                        <br/>
                </xsl:if>
                <xsl:if 
test="$deli-capabilities/browser/DownloadableSoftwareSupport">
  DownloadableSoftwareSupport:  <xsl:for-each 
select="$deli-capabilities/browser/DownloadableSoftwareSupport/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if 
test="$deli-capabilities/browser/AcceptDownloadableSoftware">
  AcceptDownloadableSoftware: <xsl:value-of 
select="$deli-capabilities/browser/AcceptDownloadableSoftware"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/VoiceInputCapable">
  VoiceInputCapable: <xsl:value-of 
select="$deli-capabilities/browser/VoiceInputCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Vendor">
  Vendor: <xsl:value-of select="$deli-capabilities/browser/Vendor"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/FramesCapable">
  FramesCapable: <xsl:value-of 
select="$deli-capabilities/browser/FramesCapable"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/BitsPerPixel">
  BitsPerPixel: <xsl:value-of select="$deli-capabilities/browser/BitsPerPixel"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-Accept">
  Push-Accept:  <xsl:for-each 
select="$deli-capabilities/browser/Push-Accept/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-Accept-Charset">
  Push-Accept-Charset:  <xsl:for-each 
select="$deli-capabilities/browser/Push-Accept-Charset/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-Accept-Encoding">
  Push-Accept-Encoding:         <xsl:for-each 
select="$deli-capabilities/browser/Push-Accept-Encoding/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-Accept-Language">
  Push-Accept-Language: <xsl:for-each 
select="$deli-capabilities/browser/Push-Accept-Language/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-Accept-AppID">
  Push-Accept-AppID: <xsl:for-each 
select="$deli-capabilities/browser/PushAccept-AppID/li">
                                <xsl:value-of select="."/>, 
        </xsl:for-each>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-MsgSize">
  Push-MsgSize: <xsl:value-of select="$deli-capabilities/browser/Push-MsgSize"/>
                        <br/>
                </xsl:if>
                <xsl:if test="$deli-capabilities/browser/Push-MaxPushReq">
  Push-MaxPushReq: <xsl:value-of 
select="$deli-capabilities/browser/Push-MaxPushReq"/>
                        <br/>
                </xsl:if>
        </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/dynamic-page2html.xsl
  
  Index: dynamic-page2html.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:xsp-request="http://apache.org/xsp/request/2.0";
    xmlns:xsp="http://apache.org/xsp";>
  
    <xsl:include href="page/simple-page2html.xsl"/>
  
    <xsl:template match="xsp-request:uri">
      <b><xsl:value-of select="."/></b>
    </xsl:template>
  
    <xsl:template match="xsp-request:parameter">
      <i><xsl:value-of select="@name"/></i>:<b><xsl:value-of select="."/></b>
    </xsl:template>
  
    <xsl:template match="xsp-request:parameter-values">
      <p>Parameter Values for "<xsl:value-of select="@name"/>":</p>
  
      <ul>
        <xsl:for-each select="xsp-request:value">
          <li>
          <xsl:value-of select="."/>
        </li>
        </xsl:for-each>
      </ul>
    </xsl:template>
  
    <xsl:template match="xsp-request:parameter-names">
      <p>All Parameter Names:</p>
  
      <ul>
        <xsl:for-each select="xsp-request:name">
          <li>
          <xsl:value-of select="."/>
        </li>
        </xsl:for-each>
      </ul>
    </xsl:template>
  
    <xsl:template match="xsp-request:headers">
      <p>Headers:</p>
      
      <ul>
        <xsl:for-each select="xsp-request:header">
        <li>
            <i><xsl:value-of select="@name"/></i>:
            <b><xsl:value-of select="."/></b>
        </li>
        </xsl:for-each>
      </ul>
      <br/>
    </xsl:template>
  
    <xsl:template match="xsp-request:header">
      <i><xsl:value-of select="@name"/></i>:<b><xsl:value-of select="."/></b>
    </xsl:template>
  
    <xsl:template match="xsp-request:header-names">
      <p>All Header names:</p>
  
      <ul>
        <xsl:for-each select="xsp-request:name">
          <li>
          <xsl:value-of select="."/>
        </li>
        </xsl:for-each>
      </ul>
    </xsl:template>
  
    <xsl:template match="@*|node()" priority="-1">
     <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/fragment-extractor.xsl
  
  Index: fragment-extractor.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:fe="http://apache.org/cocoon/fragmentextractor/2.0";>
        
        <xsl:template match="//fe:fragment">
                <img src="welcome-svg-images/[EMAIL PROTECTED]" border="0"/>
        </xsl:template>
        
        <xsl:template match="@*|*|text()|processing-instruction()" 
priority="-1">
                <xsl:copy>
                        <xsl:apply-templates 
select="@*|*|text()|processing-instruction()"/>
                </xsl:copy>
        </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/simple-samples2html.xsl
  
  Index: simple-samples2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  <!-- Author: Nicola Ken Barozzi "[EMAIL PROTECTED]" -->
  <!-- Author: Vadim Gritsenko "[EMAIL PROTECTED]" -->
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:xlink="http://www.w3.org/1999/xlink";>
  
   <xsl:template match="/">
    <html>
     <head>
      <title>Apache Cocoon @version@</title>
      <link rel="SHORTCUT ICON" href="favicon.ico"/>
     </head>
     <body bgcolor="#ffffff" link="#0086b2" vlink="#00698c" alink="#743e75">
      <table border="0" cellspacing="2" cellpadding="2" align="center" 
width="100%">
       <tr>
        <td colspan="3" align="center"><font face="arial,helvetica,sanserif" 
color="#000000">The Apache Software Foundation is proud to 
present...</font></td>
       </tr>
       <tr>
        <td width="30%"></td>
        <td width="40%" align="center"><img border="0" 
src="images/cocoon.gif"/></td>
        <td width="30%" align="center"><font face="arial,helvetica,sanserif" 
color="#000000"><b>version @version@</b></font></td>
       </tr>
      </table>
  
      <xsl:apply-templates select="samples"/>
  
      <p align="center">
       <font size="-1">
        Copyright &#169; @year@ <a href="http://www.apache.org";>The Apache 
Software Foundation</a>.<br/>
        All rights reserved.
       </font>
      </p>
     </body>
    </html>
   </xsl:template>
  
   <xsl:template match="samples">
    <xsl:variable name="all-samples" select="count(group/sample)"/>
    <xsl:variable name="half-samples" select="round($all-samples div 2)"/>
  
    <xsl:variable name="half-possibilities">
      <xsl:for-each select="group">
        <xsl:if test="position() &lt; last() and position() &gt; 1">
          <xsl:variable name="group-position" select="position()"/>
          <xsl:variable name="prev-sample" select="count(../group[position() 
&lt;= $group-position - 1]/sample)"/>
          <xsl:variable name="curr-sample" select="count(../group[position() 
&lt;= $group-position]/sample)"/>
          <xsl:variable name="next-sample" select="count(../group[position() 
&lt;= $group-position + 1]/sample)"/>
          <xsl:variable name="prev-deviation">
            <xsl:choose>
              <xsl:when test="$prev-sample &gt; $half-samples">
                <xsl:value-of select="$prev-sample - $half-samples"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="$half-samples - $prev-sample"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>
          <xsl:variable name="curr-deviation">
            <xsl:choose>
              <xsl:when test="$curr-sample &gt; $half-samples">
                <xsl:value-of select="$curr-sample - $half-samples"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="$half-samples - $curr-sample"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>
          <xsl:variable name="next-deviation">
            <xsl:choose>
              <xsl:when test="$next-sample &gt; $half-samples">
                <xsl:value-of select="$next-sample - $half-samples"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="$half-samples - $next-sample"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>
          <xsl:if test="$prev-deviation &gt;= $curr-deviation and 
$curr-deviation &lt;= $next-deviation">
            <xsl:value-of select="$group-position"/><xsl:text> </xsl:text>
          </xsl:if>
        </xsl:if>
      </xsl:for-each>
    </xsl:variable>
    <xsl:variable name="half">
      <xsl:value-of select="substring-before($half-possibilities, ' ')"/>
    </xsl:variable>
  
    <table width="100%">
     <tr>
      <td width="50%" valign="top">
       <xsl:for-each select="group">  
        <xsl:variable name="group-position" select="position()"/>
  
        <xsl:choose>
         <xsl:when test="$group-position &lt;= $half">
         <table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0" 
width="97%">
          <tbody>
           <tr>
            <td>
  
          <table bgcolor="#000000" border="0" cellspacing="2" cellpadding="2" 
align="center" width="100%">
           <tr>
            <td bgcolor="#0086b2" width="100%" align="left">
             <font size="+1" face="arial,helvetica,sanserif" 
color="#ffffff"><xsl:value-of select="@name"/></font>
            </td>
           </tr>
           <tr>
            <td width="100%" bgcolor="#ffffff" align="left">
             <table bgcolor="#ffffff" border="0" cellspacing="0" 
cellpadding="2"  width="100%" align="center">
              <xsl:apply-templates/>
             </table>
            </td>
           </tr>
          </table>
          
            </td>
           </tr>        
           </tbody>
          </table>
          
          <br/>
         </xsl:when>
         <xsl:otherwise></xsl:otherwise>
        </xsl:choose>
       </xsl:for-each>
      </td>
      <td valign="top">
       <xsl:for-each select="group">  <!-- [position()<=$half] -->
        <xsl:variable name="group-position" select="position()"/>
  
        <xsl:choose>
         <xsl:when test="$group-position &gt; $half">
         <table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0" 
width="97%">
          <tbody>
           <tr>
            <td>       
          <table bgcolor="#000000" border="0" cellspacing="2" cellpadding="2" 
align="center" width="100%">
           <tr>
            <td bgcolor="#0086b2" width="100%" align="left">
             <font size="+1" face="arial,helvetica,sanserif" 
color="#ffffff"><xsl:value-of select="@name"/></font>
            </td>
           </tr>
           <tr>
            <td width="100%" bgcolor="#ffffff" align="left">
             <table bgcolor="#ffffff" border="0" cellspacing="0" 
cellpadding="2"  width="100%" align="center">
              <xsl:apply-templates/>
             </table>
            </td>
           </tr>
          </table>
           </td>
           </tr>        
           </tbody>
          </table>
          <br/>
         </xsl:when>
         <xsl:otherwise></xsl:otherwise>
        </xsl:choose>
       </xsl:for-each>
      </td>
     </tr>
    </table>
   </xsl:template>
   
   <xsl:template match="sample">
    <tr>
     <td width="100%" bgcolor="#ffffff" align="left">
      <font size="+0" face="arial,helvetica,sanserif" color="#000000">    
        <a href="[EMAIL PROTECTED]"><xsl:value-of 
select="@name"/></a><xsl:text> - </xsl:text>
        <xsl:value-of select="."/>
      </font>
     </td>
    </tr>
   </xsl:template>
   
   <xsl:template match="note">
    <tr>
     <td width="100%" bgcolor="#ffffff" align="left">
      <font size="+0" face="arial,helvetica,sanserif" color="#000000">    
        <xsl:value-of select="."/>
      </font>
     </td>
    </tr>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/simple-sql2html.xsl
  
  Index: simple-sql2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                                xmlns:sql="http://apache.org/cocoon/SQL/2.0";>
  
  
    <xsl:import href="page/simple-page2html.xsl"/>
  
    <xsl:template match="sql:rowset">
     <xsl:choose>
      <xsl:when test="ancestor::sql:rowset">
       <tr>
        <td>
         <table border="1">
          <xsl:apply-templates/>
         </table>
        </td>
       </tr>
      </xsl:when>
      <xsl:otherwise>
       <table border="1">
        <xsl:apply-templates/>
       </table>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:template>
  
    <xsl:template match="sql:row">
     <tr>
      <xsl:apply-templates/>
     </tr>
    </xsl:template>
  
    <xsl:template match="sql:name">
     <td><xsl:value-of select="."/></td>  
    </xsl:template>
  
    <xsl:template match="sql:id">
     <!-- ignore -->
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/simple-xml2html.xsl
  
  Index: simple-xml2html.xsl
  ===================================================================
  <!--
   |
   | XSLT REC Compliant Version of IE5 Default Stylesheet
   |
   | Original version by Jonathan Marsh ([EMAIL PROTECTED])
   | http://msdn.microsoft.com/xml/samples/defaultss/defaultss.xsl
   |
   | Conversion to XSLT 1.0 REC Syntax by Steve Muench ([EMAIL PROTECTED])
   |
   +-->
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
     <xsl:output indent="no" method="html"/>
  
     <xsl:template match="/">
        <HTML>
           <HEAD>
              <SCRIPT>
                 <xsl:comment><![CDATA[
                    function f(e){
                       if (e.className=="ci") {
                         if (e.children(0).innerText.indexOf("\n")>0) 
fix(e,"cb");
                       }
                       if (e.className=="di") {
                         if (e.children(0).innerText.indexOf("\n")>0) 
fix(e,"db");
                       } e.id="";
                    }
                    function fix(e,cl){
                      e.className=cl;
                      e.style.display="block";
                      j=e.parentElement.children(0);
                      j.className="c";
                      k=j.children(0);
                      k.style.visibility="visible";
                      k.href="#";
                    }
                    function ch(e) {
                      mark=e.children(0).children(0);
                      if (mark.innerText=="+") {
                        mark.innerText="-";
                        for (var i=1;i<e.children.length;i++) {
                          e.children(i).style.display="block";
                        }
                      }
                      else if (mark.innerText=="-") {
                        mark.innerText="+";
                        for (var i=1;i<e.children.length;i++) {
                          e.children(i).style.display="none";
                        }
                      }
                    }
                    function ch2(e) {
                      mark=e.children(0).children(0);
                      contents=e.children(1);
                      if (mark.innerText=="+") {
                        mark.innerText="-";
                        if (contents.className=="db"||contents.className=="cb") 
{
                          contents.style.display="block";
                        }
                        else {
                          contents.style.display="inline";
                        }
                      }
                      else if (mark.innerText=="-") {
                        mark.innerText="+";
                        contents.style.display="none";
                      }
                    }
                    function cl() {
                      e=window.event.srcElement;
                      if (e.className!="c") {
                        e=e.parentElement;
                        if (e.className!="c") {
                          return;
                        }
                      }
                      e=e.parentElement;
                      if (e.className=="e") {
                        ch(e);
                      }
                      if (e.className=="k") {
                        ch2(e);
                      }
                    }
                    function ex(){}
                    function h(){window.status=" ";}
                    document.onclick=cl;
                ]]>
                </xsl:comment>
              </SCRIPT>
              <STYLE>
                BODY {font:x-small 'Verdana'; margin-right:1.5em}
                  .c  {cursor:hand}
                  .b  {color:red; font-family:'Courier New'; font-weight:bold;
                       text-decoration:none}
                  .e  {margin-left:1em; text-indent:-1em; margin-right:1em}
                  .k  {margin-left:1em; text-indent:-1em; margin-right:1em}
                  .t  {color:#990000}
                  .xt {color:#990099}
                  .ns {color:red}
                  .dt {color:green}
                  .m  {color:blue}
                  .tx {font-weight:bold}
                  .db {text-indent:0px; margin-left:1em; margin-top:0px;
                       margin-bottom:0px;padding-left:.3em;
                       border-left:1px solid #CCCCCC; font:small Courier}
                  .di {font:small Courier}
                  .d  {color:blue}
                  .pi {color:blue}
                  .cb {text-indent:0px; margin-left:1em; margin-top:0px;
                       margin-bottom:0px;padding-left:.3em; font:small Courier;
                       color:#888888}
                  .ci {font:small Courier; color:#888888}
                  PRE {margin:0px; display:inline}
             </STYLE>
           </HEAD>
           <BODY class="st">
              <xsl:apply-templates/>
           </BODY>
        </HTML>
     </xsl:template>
  
     <xsl:template match="processing-instruction()">
        <DIV class="e">
           <SPAN class="b">
                        <xsl:call-template name="nbsp-ref"/>
           </SPAN>
           <SPAN class="m">
              <xsl:text>&lt;?</xsl:text>
           </SPAN>
           <SPAN class="pi">
              <xsl:value-of select="name(.)"/>
              <xsl:value-of select="."/>
           </SPAN>
           <SPAN class="m">
              <xsl:text>?></xsl:text>
           </SPAN>
        </DIV>
     </xsl:template>
  
     <xsl:template match="processing-instruction('xml')">
        <DIV class="e">
           <SPAN class="b">
              <xsl:call-template name="nbsp-ref"/>
           </SPAN>
           <SPAN class="m">
              <xsl:text>&lt;?</xsl:text>
           </SPAN>
           <SPAN class="pi">
              <xsl:text>xml </xsl:text>
              <xsl:for-each select="@*">
                 <xsl:value-of select="name(.)"/>
                 <xsl:text>="</xsl:text>
                 <xsl:value-of select="."/>
                 <xsl:text>" </xsl:text>
              </xsl:for-each>
           </SPAN>
           <SPAN class="m">
              <xsl:text>?></xsl:text>
           </SPAN>
        </DIV>
     </xsl:template>
  
     <xsl:template match="@*">
        <SPAN>
           <xsl:attribute name="class">
              <xsl:if test="xsl:*/@*">
                <xsl:text>x</xsl:text>
              </xsl:if>
              <xsl:text>t</xsl:text>
           </xsl:attribute>
           <xsl:value-of select="name(.)"/>
        </SPAN>
        <SPAN class="m">="</SPAN>
        <B>
           <xsl:value-of select="."/>
        </B>
        <SPAN class="m">"</SPAN>
        <xsl:if test="position()!=last()">
           <xsl:text> </xsl:text>
        </xsl:if>
     </xsl:template>
  
     <xsl:template match="text()">
        <DIV class="e">
           <SPAN class="b"> </SPAN>
           <SPAN class="tx">
              <xsl:value-of select="."/>
           </SPAN>
        </DIV>
     </xsl:template>
  
     <xsl:template match="comment()">
        <DIV class="k">
           <SPAN>
              <A STYLE="visibility:hidden" class="b" onclick="return false" 
onfocus="h()">-</A>
              <SPAN class="m">
                 <xsl:text>&lt;!--</xsl:text>
              </SPAN>
           </SPAN>
           <SPAN class="ci" id="clean">
              <PRE>
                 <xsl:value-of select="."/>
              </PRE>
           </SPAN>
           <SPAN class="b">
              <xsl:call-template name="nbsp-ref"/>
           </SPAN>
           <SPAN class="m">
              <xsl:text>--></xsl:text>
           </SPAN>
           <SCRIPT>f(clean);</SCRIPT>
        </DIV>
     </xsl:template>
  
     <xsl:template match="*">
        <DIV class="e">
           <DIV STYLE="margin-left:1em;text-indent:-2em">
              <SPAN class="b">
                        <xsl:call-template name="nbsp-ref"/>
              </SPAN>
              <SPAN class="m">&lt;</SPAN>
              <SPAN>
                 <xsl:attribute name="class">
                    <xsl:if test="xsl:*">
                       <xsl:text>x</xsl:text>
                    </xsl:if>
                    <xsl:text>t</xsl:text>
                 </xsl:attribute>
                 <xsl:value-of select="name(.)"/>
                 <xsl:if test="@*">
                    <xsl:text> </xsl:text>
                 </xsl:if>
              </SPAN>
              <xsl:apply-templates select="@*"/>
              <SPAN class="m">
                 <xsl:text>/></xsl:text>
              </SPAN>
           </DIV>
        </DIV>
     </xsl:template>
  
     <xsl:template match="*[node()]">
        <DIV class="e">
           <DIV class="c">
              <A class="b" href="#" onclick="return false" onfocus="h()">-</A>
              <SPAN class="m">&lt;</SPAN>
              <SPAN>
                 <xsl:attribute name="class">
                    <xsl:if test="xsl:*">
                       <xsl:text>x</xsl:text>
                    </xsl:if>
                    <xsl:text>t</xsl:text>
                 </xsl:attribute>
                 <xsl:value-of select="name(.)"/>
                 <xsl:if test="@*">
                    <xsl:text> </xsl:text>
                 </xsl:if>
              </SPAN>
              <xsl:apply-templates select="@*"/>
              <SPAN class="m">
                 <xsl:text>></xsl:text>
              </SPAN>
           </DIV>
           <DIV>
              <xsl:apply-templates/>
              <DIV>
                 <SPAN class="b">
                                <xsl:call-template name="nbsp-ref"/>
                 </SPAN>
                 <SPAN class="m">
                    <xsl:text>&lt;/</xsl:text>
                 </SPAN>
                 <SPAN>
                    <xsl:attribute name="class">
                       <xsl:if test="xsl:*">
                          <xsl:text>x</xsl:text>
                       </xsl:if>
                       <xsl:text>t</xsl:text>
                    </xsl:attribute>
                    <xsl:value-of select="name(.)"/>
                 </SPAN>
                 <SPAN class="m">
                    <xsl:text>></xsl:text>
                 </SPAN>
              </DIV>
           </DIV>
        </DIV>
     </xsl:template>
  
     <xsl:template match="*[text() and not (comment() or 
processing-instruction())]">
        <DIV class="e">
           <DIV STYLE="margin-left:1em;text-indent:-2em">
              <SPAN class="b">
                        <xsl:call-template name="nbsp-ref"/>
              </SPAN>
              <SPAN class="m">
                 <xsl:text>&lt;</xsl:text>
              </SPAN>
              <SPAN>
                 <xsl:attribute name="class">
                    <xsl:if test="xsl:*">
                       <xsl:text>x</xsl:text>
                    </xsl:if>
                    <xsl:text>t</xsl:text>
                 </xsl:attribute>
                 <xsl:value-of select="name(.)"/>
                 <xsl:if test="@*">
                    <xsl:text> </xsl:text>
                 </xsl:if>
              </SPAN>
              <xsl:apply-templates select="@*"/>
              <SPAN class="m">
                 <xsl:text>></xsl:text>
              </SPAN>
              <SPAN class="tx">
                 <xsl:value-of select="."/>
              </SPAN>
              <SPAN class="m">&lt;/</SPAN>
              <SPAN>
                 <xsl:attribute name="class">
                    <xsl:if test="xsl:*">
                       <xsl:text>x</xsl:text>
                    </xsl:if>
                    <xsl:text>t</xsl:text>
                 </xsl:attribute>
                 <xsl:value-of select="name(.)"/>
              </SPAN>
              <SPAN class="m">
                 <xsl:text>></xsl:text>
              </SPAN>
           </DIV>
        </DIV>
     </xsl:template>
  
     <xsl:template match="*[*]" priority="20">
        <DIV class="e">
           <DIV STYLE="margin-left:1em;text-indent:-2em" class="c">
              <A class="b" href="#" onclick="return false" onfocus="h()">-</A>
              <SPAN class="m">&lt;</SPAN>
              <SPAN>
                 <xsl:attribute name="class">
                    <xsl:if test="xsl:*">
                       <xsl:text>x</xsl:text>
                    </xsl:if>
                    <xsl:text>t</xsl:text>
                 </xsl:attribute>
                 <xsl:value-of select="name(.)"/>
                 <xsl:if test="@*">
                    <xsl:text> </xsl:text>
                 </xsl:if>
              </SPAN>
              <xsl:apply-templates select="@*"/>
              <SPAN class="m">
                 <xsl:text>></xsl:text>
              </SPAN>
           </DIV>
           <DIV>
              <xsl:apply-templates/>
              <DIV>
                 <SPAN class="b">
                                <xsl:call-template name="nbsp-ref"/>
                 </SPAN>
                 <SPAN class="m">
                    <xsl:text>&lt;/</xsl:text>
                 </SPAN>
                 <SPAN>
                    <xsl:attribute name="class">
                       <xsl:if test="xsl:*">
                          <xsl:text>x</xsl:text>
                       </xsl:if>
                       <xsl:text>t</xsl:text>
                    </xsl:attribute>
                    <xsl:value-of select="name(.)"/>
                 </SPAN>
                 <SPAN class="m">
                    <xsl:text>></xsl:text>
                 </SPAN>
              </DIV>
           </DIV>
        </DIV>
     </xsl:template>
  
     <xsl:template name="nbsp-ref">
        <xsl:text>&#160;</xsl:text>
     </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/svg-samples2html.xsl
  
  Index: svg-samples2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:xlink="http://www.w3.org/1999/xlink";>
  
   <xsl:template match="/">
    <html>
     <head>
      <title>Apache Cocoon @version@</title>
     </head>
     <body bgcolor="#ffffff" link="#0086b2" vlink="#00698c" alink="#743e75">
      <table border="0" cellspacing="2" cellpadding="2" align="center" 
width="100%">
       <tr>
        <td colspan="3" align="center"><font face="arial,helvetica,sanserif" 
color="#000000">The Apache Software Foundation is proud to 
present...</font></td>
       </tr>
       <tr>
        <td width="30%"></td>
        <td width="40%" align="center"><img border="0" 
src="images/cocoon.gif"/></td>
        <td width="30%" align="center"><font face="arial,helvetica,sanserif" 
color="#000000"><b>version @version@</b></font></td>
       </tr>
      </table>
  
      <xsl:apply-templates/>
  
      <p align="center">
       <font size="-1">
        Copyright &#169; @year@ <a href="http://www.apache.org";>The Apache 
Software Foundation</a>.<br/>
        All rights reserved.
       </font>
      </p>
     </body>
    </html>
   </xsl:template>
   
   <xsl:template name="generate-group-heading">
        <xsl:param name="position"/>
        <svg:svg width="200" height="15" xmlns:svg="http://www.w3.org/2000/svg";>
                <xsl:choose>
                        <xsl:when test="$position = 'left'">
                                <svg:g style="stroke: black; stroke-width: 
2px;">
                                        <svg:line x1="5" y1="5" x2="8" y2="5"/>
                                        <svg:line x1="5" y1="5" x2="5" y2="15"/>
                                </svg:g>
                                <svg:text x="10px" y="11px" 
style="font-family:sans; font-size:15px; fill: #0086b2; text-anchor:start;">
                                        <xsl:value-of select="@name"/>
                                </svg:text>
                        </xsl:when>
                        <xsl:otherwise>
                                <svg:g style="stroke: black; stroke-width: 
2px;">
                                        <svg:line x1="195" y1="5" x2="192" 
y2="5"/>
                                        <svg:line x1="195" y1="5" x2="195" 
y2="15"/>
                                </svg:g>
                                <svg:text x="190px" y="11px" 
style="font-family:sans; font-size:15px; fill: #0086b2; text-anchor:end;">
                                        <xsl:value-of select="@name"/>
                                </svg:text>
                        </xsl:otherwise>
                </xsl:choose>
        </svg:svg>
   </xsl:template>
   
   <xsl:template name="generate-item">
        <xsl:param name="position"/>
        <svg:svg width="200" height="15" xmlns:svg="http://www.w3.org/2000/svg";>
                <xsl:choose>
                        <xsl:when test="$position = 'left'">
                                <svg:g style="stroke: black; stroke-width: 
2px;">
                                        <xsl:choose>
                                                <xsl:when test="position() = 
last()">
                                                        <svg:line x1="5" 
y1="-1" x2="5" y2="5"/>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                        <svg:line x1="5" 
y1="-1" x2="5" y2="15"/>
                                                </xsl:otherwise>
                                        </xsl:choose>
                                        <svg:line x1="5" y1="5" x2="18" y2="5"/>
                                </svg:g>
                                <svg:text x="20px" y="11px" 
style="font-family:sans; font-size:15px; fill: black; text-anchor:start;"> 
                                        <xsl:value-of select="@name"/>
                                </svg:text>
                        </xsl:when>
                        <xsl:otherwise>
                                <svg:g style="stroke: black; stroke-width: 
2px;">
                                        <xsl:choose>
                                                <xsl:when test="position() = 
last()">
                                                        <svg:line x1="195" 
y1="-1" x2="195" y2="5"/>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                        <svg:line x1="195" 
y1="-1" x2="195" y2="15"/>
                                                </xsl:otherwise>
                                        </xsl:choose>
                                        <svg:line x1="195" y1="5" x2="182" 
y2="5"/>
                                </svg:g>
                                <svg:text x="180px" y="11px" 
style="font-family:sans; font-size:15px; fill: black; text-anchor:end;"> 
                                        <xsl:value-of select="@name"/>
                                </svg:text>
                        </xsl:otherwise>
                </xsl:choose>
        </svg:svg>
   </xsl:template>
   
   <xsl:template name="generate-group">
        <xsl:param name="position"/>
        <tr>
                <td>
                        <xsl:call-template name="generate-group-heading">
                                <xsl:with-param name="position" 
select="$position"/>
                        </xsl:call-template>
                </td>
        </tr>
        <xsl:for-each select="sample">
                <tr>
                        <td>
                                <a href="[EMAIL PROTECTED]">
                                        <xsl:call-template name="generate-item">
                                                <xsl:with-param name="position" 
select="$position"/>
                                        </xsl:call-template>
                                </a>
                        </td>
                </tr>
        </xsl:for-each>
   </xsl:template>
   
   <xsl:template match="samples">
        <xsl:variable name="half" select="round(count(group) div 2)"/>
        <table cellspacing="0" cellpadding="0" border="0" align="center">
                <tr>
                        <td valign="top">
                                <table cellspacing="0" cellpadding="0" 
border="0">
                                        <xsl:for-each select="group[position() 
&lt;= $half]">
                                                <xsl:call-template 
name="generate-group">
                                                        <xsl:with-param 
name="position">left</xsl:with-param>
                                                </xsl:call-template>
                                        </xsl:for-each>
                                </table>
                        </td>
                        <td valign="top">
                                <table cellspacing="0" cellpadding="0" 
border="0">
                                        <xsl:for-each select="group[position() 
&gt; $half]">
                                                <xsl:call-template 
name="generate-group">
                                                        <xsl:with-param 
name="position">right</xsl:with-param>
                                                </xsl:call-template>
                                        </xsl:for-each>
                                </table>
                        </td>
                </tr>
        </table>
   </xsl:template>
   
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/documents/book2sidebar.xsl
  
  Index: book2sidebar.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      version="1.0">
  
    <!-- match the root book element -->
    <xsl:template match="/book">
      <sidebar>
        <xsl:apply-templates/>
      </sidebar>
    </xsl:template>
  
    <xsl:template match="/book/external">
      <link>
        <xsl:copy-of select="@href|@label"/>
      </link>
    </xsl:template>
  
    <xsl:template match="/book/page | /book/faq | /book/changes | /book/todo">
      <link href="{substring(@source,1,string-length(@source)-4)}">
        <xsl:copy-of select="@label|@id"/>
      </link>
     </xsl:template>
  
    <xsl:template match="/book/separator">
      <xsl:copy/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/documents/root2html.xsl
  
  Index: root2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    version="1.0"
  >
  
  <xsl:param name="path"/>
  
  <xsl:template match="/root">
    <html>
      <head>
        <title><xsl:value-of select="document/header/title"/></title>
      </head>
      <body>
        <table cellpadding="0" cellspacing="3">
          <tr>
            <td valign="top">
              <xsl:apply-templates select="sidebar"/>
            </td>
            <td width="10">&#160;</td>
            <td valign="top">
              <xsl:apply-templates select="document/body"/>
            </td>
          </tr>
        </table>
      </body>
    </html>
  </xsl:template>
  
  <xsl:template match="/root/sidebar">
    <table cellpadding="1" cellspacing="2" bgcolor="#000000">
      <tr bgcolor="#0086b2"><td>
        <table cellpadding="1" cellspacing="0">
          <xsl:apply-templates/>
        </table>
      </td></tr>
    </table>
  </xsl:template>
  
  <xsl:template match="sidebar/link">
    <tr>
      <td>
        <xsl:choose>
          <xsl:when test="@href=$path">
            <font color="#FFFFFF"><xsl:value-of select="@label"/></font>
          </xsl:when>
          <xsl:otherwise>
            <a>
              <xsl:copy-of select="@href"/>
              <font color="#FFFFFF"><xsl:value-of select="@label"/></font>
            </a>
          </xsl:otherwise>
        </xsl:choose>
      </td>
    </tr>
  </xsl:template>
  
  <xsl:template match="sidebar/separator">
    <tr><td height="10"></td></tr>
  </xsl:template>
  
  <xsl:template match="/root/document/body">
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="body//s1">
    <h1><xsl:value-of select="@title"/></h1>
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="body//s2">
    <h2><xsl:value-of select="@title"/></h2>
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="body//s3">
    <h3><xsl:value-of select="@title"/></h3>
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="body//s4">
    <h4><xsl:value-of select="@title"/></h4>
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="body//link">
    <a>
      <xsl:copy-of select="@href"/>
      <xsl:apply-templates/>
    </a>
  </xsl:template>
  
  <xsl:template match="source">
    <listing style="color: green; font-size: 80%;">
      <xsl:apply-templates />
    </listing>
  </xsl:template>
  
  <xsl:template match="body//node()|body//@*" priority="-1">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  
  <xsl:template match="body//figure">
    <xsl:element name="img">
      <xsl:for-each select="@*">
        <xsl:attribute name="{name(.)}">
          <xsl:value-of select="."/>
        </xsl:attribute>
      </xsl:for-each>
    </xsl:element>
  </xsl:template>
  
  <xsl:template match="link">
    <a href="[EMAIL PROTECTED]"><xsl:apply-templates/></a>
  </xsl:template>
  
  <xsl:template match="connect">
    <xsl:apply-templates/>
  </xsl:template>
  
  <xsl:template match="jump">
    <a href="[EMAIL PROTECTED]@anchor}"><xsl:apply-templates/></a>
  </xsl:template>
  
  <xsl:template match="fork">
    <a href="[EMAIL PROTECTED]" target="_blank"><xsl:apply-templates/></a>
  </xsl:template>
  
  <xsl:template match="anchor">
    <a name="[EMAIL PROTECTED]"><xsl:comment>anchor</xsl:comment></a>
  </xsl:template>  
  
  <xsl:template match="tr[position() mod 2 = 0]">
    <tr bgcolor="#B8EEFF">
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </tr>
  </xsl:template>  
  
  <xsl:template match="th">
    <th bgcolor="#0086B2">
      <xsl:copy-of select="@*"/>
      <font color="#FFFFFF"><xsl:apply-templates/></font>
    </th>
  </xsl:template>  
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/news/moreover.xsl
  
  Index: moreover.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!--
      [XSL-XSLT] This stylesheet automatically updated from an IE5-compatible 
XSL stylesheet to XSLT.
      The following problems which need manual attention may exist in this 
stylesheet:
      -->
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
        <!-- [XSL-XSLT] Simulate lack of built-in templates -->
        <xsl:template match="@*|/|node()"/>
        <!-- Match The Root Node -->
        <xsl:template match="/">
                <HTML>
                <BODY>
                <xsl:apply-templates select="*"></xsl:apply-templates>
                </BODY>
                </HTML>
        </xsl:template>
        <!-- Match Everything Else -->
        <xsl:template 
match="*|@*|text()|node()|comment()|processing-instruction()">
                <xsl:copy>
                        <xsl:apply-templates 
select="*|@*|text()|node()|comment()|processing-instruction()"></xsl:apply-templates>
                </xsl:copy>
        </xsl:template>
        <!-- Individual Templates -->
        <xsl:template match="moreovernews">
                <table border="0" width="100%">
                        <tr>
                                <td colspan="3" STYLE="background-color : 
#B0E0E6; font : x-small Arial, Helvetica, sans-serif;">
                                        <CENTER>
                                        <b>Current News from moreover.com</b>
                                        </CENTER>
                                </td>
                        </tr>
                        <xsl:apply-templates 
select="article"></xsl:apply-templates>
                </table>
        </xsl:template>
        <xsl:template match="article">
                <tr>
                        <xsl:if test="(position() mod 2) = 1">
                                <xsl:attribute name="STYLE">background-color : 
lightgrey; font : x-small Arial, Helvetica, sans-serif;</xsl:attribute>
                        </xsl:if>
                        <xsl:if test="(position() mod 2) = 0">
                                <xsl:attribute name="STYLE">font : x-small 
Arial, Helvetica, sans-serif;</xsl:attribute>
                        </xsl:if>
                        <td STYLE="font : bold;" width="50%">
                                <a>
                                        <xsl:attribute 
name="HREF"><xsl:value-of select="url"></xsl:value-of></xsl:attribute>
                                        <xsl:attribute 
name="STYLE">text-decoration : none;</xsl:attribute>
                                        <xsl:attribute 
name="TARGET">_blank</xsl:attribute>
                                        <xsl:value-of 
select="headline_text"></xsl:value-of>
                                </a>
                        </td>
                        <td STYLE="font-variant : small-caps;">
                                <a>
                                        <xsl:attribute 
name="HREF"><xsl:value-of select="document_url"></xsl:value-of></xsl:attribute>
                                        <xsl:attribute 
name="STYLE">text-decoration : none;</xsl:attribute>
                                        <xsl:attribute 
name="TARGET">_blank</xsl:attribute>
                                        <xsl:value-of 
select="source"></xsl:value-of>
                                </a>
                        </td>
                        <td>
                                <xsl:value-of 
select="harvest_time"></xsl:value-of>
                        </td>
                </tr>
        </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/stylesheets/news/news.xsl
  
  Index: news.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                  xmlns:ns0="http://foo.bar.com/myspace";
                  xmlns:ns1="http://foo.bar.com/slashdot";
                  xmlns:ns2="http://foo.bar.com/moreover";
                  xmlns:ns3="http://foo.bar.com/xmlhack";>
  
        <xsl:include href="../page/simple-page2html.xsl"/>
      
        <!-- Match The Root Node -->
        <xsl:template match="ns0:page">
                <html>
              <body>
                  <xsl:apply-templates/>
              </body>
                </html>
        </xsl:template>
  
        <xsl:template match="ns1:news">
          <xsl:apply-templates select="ns1:HTML/ns1:BODY/*"/>
      </xsl:template>
  
        <xsl:template match="ns2:news">
          <xsl:apply-templates select="ns2:HTML/ns2:BODY/*"/>
      </xsl:template>
  
        <xsl:template match="ns3:news">
          <xsl:apply-templates select="ns3:html/ns3:body/*"/>
      </xsl:template>
  
        <xsl:template match="@*|*|text()" priority="-1">
                <xsl:copy>
                        <xsl:apply-templates select="@*|*|text()"/>
                </xsl:copy>
        </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/news/slashdot.xsl
  
  Index: slashdot.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!--
      [XSL-XSLT] This stylesheet automatically updated from an IE5-compatible 
XSL stylesheet to XSLT.
      The following problems which need manual attention may exist in this 
stylesheet:
      -->
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
        <!-- [XSL-XSLT] Simulate lack of built-in templates -->
        <xsl:template match="@*|/|node()"/>
        <!-- Match The Root Node -->
        <xsl:template match="/">
                <HTML>
                <BODY>
                <xsl:apply-templates select="*"></xsl:apply-templates>
                </BODY>
                </HTML>
        </xsl:template>
        <!-- Match Everything Else -->
        <xsl:template 
match="*|@*|text()|node()|comment()|processing-instruction()">
                <xsl:copy>
                        <xsl:apply-templates 
select="*|@*|text()|node()|comment()|processing-instruction()"></xsl:apply-templates>
                </xsl:copy>
        </xsl:template>
        <!-- Individual Templates -->
        <xsl:template match="backslash">
                <table border="0" width="100%">
                        <tr>
                                <td colspan="5" STYLE="background-color : 
#B0E0E6; font : x-small Arial, Helvetica, sans-serif;">
                                        <CENTER>
                                        <b>Current News from Slashdot</b>
                                        </CENTER>
                                </td>
                        </tr>
                        <xsl:apply-templates 
select="story"></xsl:apply-templates>
                </table>
        </xsl:template>
        <xsl:template match="story">
                <tr>
                        <xsl:if test="(position() mod 2) = 1">
                                <xsl:attribute name="STYLE">background-color : 
lightgrey; font : x-small Arial, Helvetica, sans-serif;</xsl:attribute>
                        </xsl:if>
                        <xsl:if test="(position() mod 2) = 0">
                                <xsl:attribute name="STYLE">font : x-small 
Arial, Helvetica, sans-serif;</xsl:attribute>
                        </xsl:if>
                        <td>
                        <CENTER>
                        <IMG WIDTH="25" HEIGHT="25" BORDER="0">
                                <xsl:attribute name="SRC"><xsl:value-of 
select="image"></xsl:value-of></xsl:attribute>
                                <xsl:attribute name="ALT"><xsl:value-of 
select="image"></xsl:value-of></xsl:attribute>
                        </IMG>
                        </CENTER>
                        </td>
                        <td STYLE="font : bold;" width="50%">
                                <a>
                                        <xsl:attribute 
name="HREF"><xsl:value-of select="url"></xsl:value-of></xsl:attribute>
                                        <xsl:attribute 
name="STYLE">text-decoration : none;</xsl:attribute>
                                        <xsl:attribute 
name="TARGET">_blank</xsl:attribute>
                                        <xsl:value-of 
select="title"></xsl:value-of>
                                </a>
                        </td>
                        <td STYLE="font-variant : small-caps;">
                                <xsl:value-of select="topic"></xsl:value-of>
                        </td>
                        <td STYLE="font-variant : small-caps;">
                                <xsl:value-of select="author"></xsl:value-of>
                        </td>
                        <td>
                                <xsl:value-of select="time"></xsl:value-of>
                        </td>
                </tr>
        </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/news/xmlhack.xsl
  
  Index: xmlhack.xsl
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <!-- Match The Root Node -->
    <xsl:template match="/">
      <html>
        <body>
          <xsl:apply-templates/>
        </body>
      </html>
    </xsl:template>
  
    <xsl:template match="CHANNEL">
      <table border="0" width="100%">
        <tr>
          <td colspan="3" style="background-color: #B0E0E6; font: x-small 
Arial, Helvetica, sans-serif;">
            <center><b>Current News from xmlhack.com</b></center>
          </td>
        </tr>
        <xsl:apply-templates select="ITEM"/>
      </table>
    </xsl:template>
  
    <xsl:template match="ITEM">
      <tr>
        <xsl:if test="(position() mod 2) = 1">
          <xsl:attribute name="style">background-color: lightgrey; font: 
x-small Arial, Helvetica, sans-serif;</xsl:attribute>
        </xsl:if>
        <xsl:if test="(position() mod 2) = 0">
          <xsl:attribute name="style">background-color: #C0C0C0; font: x-small 
Arial, Helvetica, sans-serif;</xsl:attribute>
        </xsl:if>
        <td STYLE="font: bold;" width="75%">
          <a target="_blank" style="text-decoration: none;" href="[EMAIL 
PROTECTED]">
            <xsl:value-of select="TITLE"/>
          </a>
        </td>
        <td>
          <xsl:value-of select="@LASTMOD"/>
        </td>
      </tr>
      <tr>
        <td colspan="3">
          <xsl:value-of select="ABSTRACT"/>
        </td>
      </tr>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2fo.xsl
  
  Index: simple-page2fo.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:fo="http://www.w3.org/1999/XSL/Format";>
  
    <xsl:template match="/">
     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
     
      <fo:layout-master-set>
       <fo:simple-page-master master-name="page"
                    page-height="29.7cm" 
                    page-width="21cm"
                    margin-top="1cm" 
                    margin-bottom="2cm" 
                    margin-left="2.5cm" 
                    margin-right="2.5cm">
         <fo:region-before extent="3cm"/>
         <fo:region-body margin-top="3cm"/>
         <fo:region-after extent="1.5cm"/>
       </fo:simple-page-master>
  
       <fo:page-sequence-master master-name="all">
         <fo:repeatable-page-master-alternatives>
         <fo:conditional-page-master-reference master-reference="page" 
page-position="first"/>
         </fo:repeatable-page-master-alternatives>
       </fo:page-sequence-master>
      </fo:layout-master-set>
  
      <fo:page-sequence master-reference="all">
        <fo:static-content flow-name="xsl-region-after">
        <fo:block text-align="center" 
                  font-size="10pt" 
                  font-family="serif" 
                  line-height="14pt">page <fo:page-number/></fo:block>
        </fo:static-content> 
  
        <fo:flow flow-name="xsl-region-body">
          <xsl:apply-templates/>
        </fo:flow>
      </fo:page-sequence>
     </fo:root>
    </xsl:template>
  
    <xsl:template match="title">
      <fo:block font-size="36pt" space-before.optimum="24pt" 
text-align="center"><xsl:apply-templates/></fo:block>
    </xsl:template>
  
    <xsl:template match="para">
      <fo:block font-size="12pt" space-before.optimum="12pt" 
text-align="center"><xsl:apply-templates/></fo:block>
    </xsl:template>
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2html.xsl
  
  Index: simple-page2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:param name="view-source"/>
    <xsl:param name="path">../</xsl:param>
  
    <xsl:template match="page">
     <html>
      <head>
       <title>
        <xsl:value-of select="title"/>
       </title>
      </head>
      <body bgcolor="white" alink="red" link="blue" vlink="blue">
       <xsl:apply-templates/>
      </body>
     </html>
    </xsl:template>
  
    <xsl:template match="title">
     <h2 style="color: navy; text-align: center">
        <xsl:if test="not($view-source)">
           <xsl:apply-templates/>
        </xsl:if>     
        <xsl:if test="$view-source">
        <A>
          <xsl:attribute name="HREF"><xsl:value-of 
select="$path"/>view-source?filename=/<xsl:value-of 
select="$view-source"/></xsl:attribute>
                 <xsl:attribute name="TARGET">_blank</xsl:attribute>
           <xsl:apply-templates/>
        </A>
        </xsl:if>     
     </h2>
    </xsl:template>
    
    <xsl:template match="content">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="para">
     <p align="left">
      <i><xsl:apply-templates/></i>
     </p>
    </xsl:template>
  
  
    <xsl:template match="@*|node()" 
priority="-2"><xsl:copy><xsl:apply-templates 
select="@*|node()"/></xsl:copy></xsl:template>
    <xsl:template match="text()" priority="-1"><xsl:value-of 
select="."/></xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2svg.xsl
  
  Index: simple-page2svg.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
   <xsl:template match="page">
    <svg width="450" height="160">
     <defs>
      <filter id="blur1"><feGaussianBlur stdDeviation="3"/></filter>
      <filter id="blur2"><feGaussianBlur stdDeviation="1"/></filter>
     </defs>
     
     <g title="this is a tooltip">
      <rect 
        style="fill:#0086B3;stroke:#000000;stroke-width:4;filter:url(#blur1);"
        x="30" y="30" rx="20" ry="20" width="400" height="80"/>
      <xsl:apply-templates/>
     </g>
    </svg>
   </xsl:template>
   
   <xsl:template match="para">
    <text 
style="fill:#FFFFFF;font-size:24;font-family:TrebuchetMS-Bold;filter:url(#blur2);"
 x="65" y="80">
     <xsl:apply-templates/>
    </text>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2vml.xsl
  
  Index: simple-page2vml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Written by Theodore B. Achacoso, MD 991122 [EMAIL PROTECTED] -->
  
  <!--
      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 version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:template match="page">
      <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="para">
     <xsl:apply-templates/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2vrml.xsl
  
  Index: simple-page2vrml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
        <xsl:template match="page">
                <!-- 
                     due to a DOM limitation, you must wrap your generated VRML
                     with a fake tag, here uses <vrml>, that is stripped out by 
the
                     text formatter 
                  -->
  
                <vrml><xsl:text>#VRML V2.0 utf8</xsl:text>
                <xsl:apply-templates select="content"/>
                </vrml>
        </xsl:template>
  
        <xsl:template match="content">
                <xsl:text>
                        Transform {
                                translation 0 0 9
                                rotation 0 0 1 0.0
                                children Shape {
                                        appearance DEF WHITE Appearance {
                                                material Material {
                                                        diffuseColor 1 1 1
                                                }
                                        }
                                        geometry Text {
                                                string [ " 
</xsl:text><xsl:value-of select="para"/><xsl:text> " ]
                                                fontStyle DEF MFS FontStyle {
                                                        size 0.1
                                                        family "SERIF"
                                                        style "BOLD"
                                                        justify "MIDDLE"
                                                }
                                        }
                                }
                        }
                </xsl:text>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2wml.xsl
  
  Index: simple-page2wml.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
   <xsl:template match="page">
    <wml>
     <card id="index" title="{title}">
      <xsl:apply-templates select="content"/>
      <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; 2000<br/>
        Apache Software Foundation.<br/>
        All rights reserved.
       </small>
      </p>
     </card>
    </wml>
   </xsl:template>
    
   <xsl:template match="para">
    <p align="center">
     <xsl:apply-templates/>
    </p>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/parentcm/time.xsl
  
  Index: time.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
      
      <xsl:template match="/">
          <html>
              <head>
                  <title>Sample of Parent Component Managers</title>
              </head>
              <body alink="#743e75" vlink="#00698c" link="#0086b2" 
bgcolor="#ffffff">
                  <table width="100%" height="100%">
                      <tr>
                          <td valign="center" align="center">
                              
                              <table bgcolor="#000000" border="0" 
cellspacing="2" cellpadding="2" align="center">
                                  <tr>
                                      <td bgcolor="#0086b2" width="100%" 
align="left">
                                          <font size="+1" 
face="arial,helvetica,sanserif" color="#ffffff">Current Time</font>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="100%" bgcolor="#ffffff" 
align="center">
                                          <p>
                                              <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                                  The time below was obtained 
from a component managed by Cocoon2's parent component manager.<br/>
                                                  See <a 
href="documents/parent-component-manager">parent-component-manager.xml</a> for 
more information.
                                              </font>
                                          </p>
                                          <p>
                                              <font color="#000000" 
face="arial,helvetica,sanserif" size="+4">
                                                  <xsl:value-of select="time"/>
                                              </font>
                                          </p>
                                          <p>
                                              <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                                  <a href="./">Back</a>
                                              </font>
                                          </p>
                                      </td>
                                  </tr>
                              </table>
                          </td>
                      </tr>
                  </table>
              </body>
          </html>
      </xsl:template>
      
  </xsl:stylesheet>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/sitemap/simple-sitemap2html.xsl
  
  Index: simple-sitemap2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
    xmlns:map="http://apache.org/cocoon/sitemap/1.0";
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
   <xsl:template match="/">
    <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>The Sitemap</title>
      <link rel="stylesheet" type="text/css" href="sitemap-style" 
title="Style"/>
     </head>
     <body bgcolor="white">
      <xsl:apply-templates/>
     </body>
    </html>
   </xsl:template>
  
   <xsl:template match="map:sitemap">
    <h1>The Sitemap</h1>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:components">
    <h2>Components</h2>
    <table border="0" width="100%" bgcolor="navy" cellspacing="0" 
cellpadding="0">
     <tr>
      <td>
       <table border="0" width="100%" cellspacing="2" cellpadding="0">
        <tr>
         <td bgcolor="lightgrey">
          <table border="0" width="100%" cellspacing="2" cellpadding="0">
           <xsl:apply-templates select="map:generators"/>
           <xsl:apply-templates select="map:transformers"/>
           <xsl:apply-templates select="map:readers"/>
           <xsl:apply-templates select="map:serializers"/>
           <xsl:apply-templates select="map:selectors"/>
           <xsl:apply-templates select="map:matchers"/>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
   </xsl:template>
  
   <xsl:template match="map:views">
    <h2>Views</h2>
    <table border="0" width="100%" bgcolor="navy" cellspacing="0" 
cellpadding="0">
     <tr>
      <td>
       <table border="0" width="100%" cellspacing="2" cellpadding="0">
        <tr>
         <td bgcolor="lightgrey">
          <table border="0" width="100%" cellspacing="2" cellpadding="0">
           <tr>
            <td colspan="2" bgcolor="white"><b>Name</b></td>
            <td bgcolor="white"><b>Arguments</b></td>
           </tr>
           <xsl:apply-templates 
select="map:match|map:select|map:redirect-to|map:generate|map:transform|map:select|map:read"/>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
   </xsl:template>
  
   <xsl:template match="map:resources">
    <h2>Resources</h2>
    <table border="0" width="100%" bgcolor="navy" cellspacing="0" 
cellpadding="0">
     <tr>
      <td>
       <table border="0" width="100%" cellspacing="2" cellpadding="0">
        <tr>
         <td bgcolor="lightgrey">
          <table border="0" width="100%" cellspacing="2" cellpadding="0">
           <tr>
            <td colspan="3" bgcolor="white"><b>Name</b></td>
           </tr>
           <xsl:apply-templates/>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
   </xsl:template>
  
   <xsl:template match="map:pipelines">
    <h2>Pipelines</h2>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:generators">
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Generators</xsl:with-param>
     <xsl:with-param name="comp-type">generator</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="label">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:transformers">
    <xsl:call-template name="break"/>
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Transformers</xsl:with-param>
     <xsl:with-param name="comp-type">transformer</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="label">true</xsl:with-param>
     <xsl:with-param name="break">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:readers">
    <xsl:call-template name="break"/>
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Readers</xsl:with-param>
     <xsl:with-param name="comp-type">reader</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="break">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:serializers">
    <xsl:call-template name="break"/>
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Serializers</xsl:with-param>
     <xsl:with-param name="comp-type">serializer</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="break">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:selectors">
    <xsl:call-template name="break"/>
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Selectors</xsl:with-param>
     <xsl:with-param name="comp-type">selector</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="break">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:matchers">
    <xsl:call-template name="break"/>
    <xsl:call-template name="show-components">
     <xsl:with-param name="type">Matchers</xsl:with-param>
     <xsl:with-param name="comp-type">matcher</xsl:with-param>
     <xsl:with-param name="default" select="@default"/>
     <xsl:with-param name="components" select="./*"/>
     <xsl:with-param name="break">true</xsl:with-param>
    </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="map:view">
    <xsl:if test="preceding-sibling::map:view">
     <xsl:call-template name="break"/>
    </xsl:if>
    <tr>
     <td colspan="2" bgcolor="white"><a href=""><xsl:value-of 
select="@name"/></a></td>
     <td bgcolor="white">generate-from="<xsl:value-of 
select="@generate-from"/>"</td>
    </tr>
    <tr>
     <td bgcolor="white">&#160;</td>
     <td colspan="2" bgcolor="white">
      <xsl:apply-templates/>
     </td>
    </tr>
   </xsl:template>
  
   <xsl:template match="map:resource">
    <xsl:if test="preceding-sibling::map:resource">
     <xsl:call-template name="break"/>
    </xsl:if>
    <tr>
     <td colspan="3" bgcolor="white"><a href=""><xsl:value-of 
select="@name"/></a></td>
    </tr>
    <tr>
     <td bgcolor="white">&#160;</td>
     <td colspan="2" bgcolor="white">
      <xsl:apply-templates/>
     </td>
    </tr>
   </xsl:template>
  
   <xsl:template match="map:pipeline">
    <table border="0" width="100%" bgcolor="navy" cellspacing="0" 
cellpadding="0">
     <tr>
      <td>
       <table border="0" width="100%" cellspacing="2" cellpadding="0">
        <tr>
         <td bgcolor="lightgrey">
          <table border="0" width="100%" cellspacing="2" cellpadding="0">
           <xsl:apply-templates/>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
    <br/>
   </xsl:template>
  
   <xsl:template match="map:match">
    <xsl:choose>
     <xsl:when test="ancestor::*[self::map:pipeline]">
      <tr>
       <td bgcolor="white">
        <xsl:call-template name="indent"/>
        <a href="">match</a>
        <xsl:if test="@type">
          type="<xsl:value-of select="@type"/>"
        </xsl:if>
        pattern="<xsl:value-of select="@pattern"/>"
        <br/>
        <xsl:apply-templates/>
       </td>
      </tr>
     </xsl:when>
     <xsl:otherwise>
      <xsl:call-template name="indent"/>
      <a href="">match</a>
      <xsl:if test="@type">
        type="<xsl:value-of select="@type"/>"
      </xsl:if>
      pattern="<xsl:value-of select="@pattern"/>"
      <br/>
      <xsl:apply-templates/>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:template>
  
   <xsl:template match="map:select">
    <xsl:call-template name="indent"/>
    <a href="">select</a>
    <xsl:if test="@type">
      type="<xsl:value-of select="@type"/>"
    </xsl:if>
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:when">
    <xsl:call-template name="indent"/>
    <a href="">when</a> test="<xsl:value-of select="@test"/>"<br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:otherwise">
    <xsl:call-template name="indent"/>
    <a href="">otherwise</a><br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:generate">
    <xsl:call-template name="indent"/>
    <a href="">generate</a>
    <xsl:if test="@type">
      type="<xsl:value-of select="@type"/>"
    </xsl:if>
    src="<xsl:value-of select="@src"/>"
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:transform">
    <xsl:call-template name="indent"/>
    <a href="">transform</a>
    <xsl:if test="@type">
      type="<xsl:value-of select="@type"/>"
    </xsl:if>
    src="<xsl:value-of select="@src"/>"
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:read">
    <xsl:call-template name="indent"/>
    <a href="">read</a>
    <xsl:if test="@type">
      type="<xsl:value-of select="@type"/>"
    </xsl:if>
    src="<xsl:value-of select="@src"/>"
    <xsl:if test="@mime-type">
      mime-type="<xsl:value-of select="@mime-type"/>"
    </xsl:if>
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:redirect-to">
    <xsl:call-template name="indent"/>
    <a href="">redirect-to</a>
    <xsl:choose>
      <xsl:when test="@uri">
        uri="<xsl:value-of select="@uri"/>"
      </xsl:when>
      <xsl:when test="@resource">
        resource="<xsl:value-of select="@resource"/>"
      </xsl:when>
    </xsl:choose>
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:serialize">
    <xsl:call-template name="indent"/>
    <a href="">serialize</a>
    <xsl:if test="@type">
      type="<xsl:value-of select="@type"/>"
    </xsl:if>
    <xsl:if test="@mime-type">
      mime-type="<xsl:value-of select="@mime-type"/>"
    </xsl:if>
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:mount">
    <xsl:call-template name="indent"/>
    <a href="">mount</a> src="<xsl:value-of select="@src"/>" 
uri-prefix="<xsl:value-of select="@uri-prefix"/>"<br/>
    <xsl:if test="@check-reload">
      check-reload="<xsl:value-of select="@check-reload"/>"
    </xsl:if>
    <br/>
    <xsl:apply-templates/>
   </xsl:template>
  
   <xsl:template match="map:handle-errors">
    <tr>
     <td bgcolor="white">
      <xsl:call-template name="indent"/>
      <a href="">handle-errors</a>
      <br/>
      <xsl:apply-templates/>
     </td>
    </tr>
   </xsl:template>
  
   <!-- named templates -->
  
   <xsl:template name="show-components">
    <xsl:param name="type"/>
    <xsl:param name="comp-type"/>
    <xsl:param name="default"/>
    <xsl:param name="components"/>
    <xsl:param name="label"/>
    <tr>
     <td colspan="3" bgcolor="white">
      <span class="h3"><xsl:value-of select="$type"/> (default=<i><xsl:value-of 
select="$default"/></i>)</span>
     </td>
    </tr>
    <tr>
     <td bgcolor="white"><b>Name</b></td>
     <xsl:choose>
      <xsl:when test="$label">
       <td bgcolor="white"><b>Class</b></td>
       <td bgcolor="white"><b>Label</b></td>
      </xsl:when>
      <xsl:otherwise>
       <td colspan="2" bgcolor="white"><b>Class</b></td>
      </xsl:otherwise>
     </xsl:choose>
    </tr>
    <xsl:for-each select="$components">
     <tr>
      <td bgcolor="white"><a 
href="sitemap-component?component={$comp-type}&amp;[EMAIL 
PROTECTED]"><xsl:value-of select="@name"/></a></td>
      <xsl:choose>
       <xsl:when test="$label">
        <xsl:choose>
         <xsl:when test="@src">
          <td bgcolor="white"><xsl:value-of select="@src"/></td>
         </xsl:when>
         <xsl:otherwise>
          <td bgcolor="white"><i><xsl:value-of select="@factory"/></i></td>
         </xsl:otherwise>
        </xsl:choose>
        <td bgcolor="white"><xsl:value-of select="@label"/>&#160;</td>
       </xsl:when>
       <xsl:otherwise>
        <xsl:choose>
         <xsl:when test="@src">
          <td colspan="2" bgcolor="white"><xsl:value-of select="@src"/></td>
         </xsl:when>
         <xsl:otherwise>
          <td colspan="2" bgcolor="white"><i><xsl:value-of 
select="@factory"/></i></td>
         </xsl:otherwise>
        </xsl:choose>
       </xsl:otherwise>
      </xsl:choose>
     </tr>
     <xsl:if test="./*">
  <!--
      <xsl:call-template name="show-config"/>
  -->
     </xsl:if>
    </xsl:for-each>
   </xsl:template>
  
   <xsl:template name="show-config">
    <xsl:param name="indent"/>
    <xsl:choose>
     <xsl:when test="string-length($indent)=0">
      <tr>
       <td align="right">Configuration</td>
       <td colspan="3">
        <xsl:for-each select="./*">
         &#160;<xsl:value-of select="name()"/>
         <xsl:if test="./*">
          <xsl:call-template name="show-config">
           <xsl:with-param name="indent">&#160;<xsl:value-of 
select="$indent"/></xsl:with-param>
          </xsl:call-template>
         </xsl:if>
        </xsl:for-each>
       </td>
      </tr>
     </xsl:when>
     <xsl:otherwise>
      <tr>
       <td align="right">&#160;</td>
       <td colspan="3">
        <xsl:for-each select="./*">
         &#160;<xsl:value-of select="name()"/>=<xsl:value-of select="text()"/>
         <xsl:if test="./*">
          <xsl:call-template name="show-config">
           <xsl:with-param name="indent">&#160;<xsl:value-of 
select="$indent"/></xsl:with-param>
          </xsl:call-template>
         </xsl:if>
        </xsl:for-each>
       </td>
      </tr>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:template>
  
   <xsl:template name="break">
    <tr>
     <td colspan="3" bgcolor="white"><hr color="navy"/></td>
    </tr>
   </xsl:template>
  
   <xsl:template name="indent">
    <xsl:for-each select="ancestor::*">
     <xsl:choose>
      <xsl:when test="local-name(.)='pipeline'">
      </xsl:when>
      <xsl:when test="local-name(.)='pipelines'">
      </xsl:when>
      <xsl:when test="local-name(.)='sitemap'">
      </xsl:when>
      <xsl:when test="local-name(.)='resource'">
      </xsl:when>
      <xsl:when test="local-name(.)='resources'">
      </xsl:when>
      <xsl:when test="local-name(.)='view'">
      </xsl:when>
      <xsl:when test="local-name(.)='views'">
      </xsl:when>
      <xsl:otherwise>
       &#160;&#160;
      </xsl:otherwise>
     </xsl:choose>
    </xsl:for-each>
   </xsl:template>
  
   <xsl:template match="*|@*|text()|comment()|processing-instruction()" 
priority="-1"/>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/sites/jakarta_apache_org-html.xsl
  
  Index: jakarta_apache_org-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "[EMAIL PROTECTED]" -->
  <!-- Version: $Id: jakarta_apache_org-html.xsl,v 1.1 2002/07/02 13:06:41 
cziegeler Exp $ -->
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:template match="page">
     <html>
      <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       <title><xsl:value-of select="@title"/></title>
       <link rel="stylesheet" href="styles/jakarta_apache_org.css"><!-- no not 
remove this comment --></link>
      </head>
      <body bgcolor="#FFFFFF">
       <table width="100%" border="0">
        <tr> 
         <td> 
          <p>
           <a href="welcome"><img src="{/page/logo/@href}"
             alt="The Jakarta Project" border="0"/></a> 
          </p>
         </td>
        </tr>
       </table>
       <table width="100%" border="0" cellpadding="10" cellspacing="0">
        <tr valign="top">
         <xsl:apply-templates/>
        </tr>
       </table>
  
       <br/>
  
       <table width="100%" border="0" cellpadding="10" cellspacing="0">
        <tr>
         <td>
          <p class="fineprint">
           Copyright &#169; 1999-2000 The Apache Software Foundation<br/>
           <a href="legal.html">Legal Stuff They Make Us Say</a><br/>
           <a href="contact.html">Contact Information</a>
          </p>
         </td>
        </tr>
       </table>
      </body>
     </html>
    </xsl:template>
  
    <xsl:template match="sidebar">
     <td width="120">
      <xsl:apply-templates/>
     </td>
    </xsl:template>
  
    <xsl:template match="body">
     <td>
      <xsl:apply-templates/>
     </td>
    </xsl:template>
  
    <xsl:template match="group">
     <p>
      <span class="navheading"><xsl:value-of 
select="@name"/><xsl:text>:</xsl:text></span><br/>
      <span class="navitem">
       <xsl:apply-templates/>
      </span>
     </p>
    </xsl:template>
  
    <xsl:template match="section">
     <h3><xsl:value-of select="@title"/></h3>
     <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="p|a">
     <xsl:copy>
      <xsl:apply-templates/>
     </xsl:copy>
    </xsl:template>
  
    <xsl:template match="link">
     <a href="[EMAIL PROTECTED]"><xsl:apply-templates/></a><br/>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/sites/java_apache_org-html.xsl
  
  Index: java_apache_org-html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!-- Author: Stefano Mazzocchi "[EMAIL PROTECTED]" -->
  <!-- Version: $Id: java_apache_org-html.xsl,v 1.1 2002/07/02 13:06:41 
cziegeler Exp $ -->
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:template match="page">
     <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%" align="left">
                <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" align="left">
       <a href="{link}">
        <strong><xsl:value-of select="title"/></strong>
       </a>
      </td>
     </tr>
     <tr>
      <td bgcolor="#ffffff" align="left">
       <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" align="left">
       <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-cocoon2/src/webapp/samples/stylesheets/slides/slides-apachecon.xsl
  
  Index: slides-apachecon.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:template match="slide">
     <html>
      <head>
       <title><xsl:value-of select="title"/></title>
       <link rel="stylesheet" type="text/css" href="style" title="Style"/>
      </head>
      <body bgcolor="white">
       <table width="100%">
        <tr>
         <td>
          <table width="100%">
           <tr>
            <td width="100%"><img src="../images/cocoon.gif" border="0"/></td>
            <td>
             <xsl:apply-templates select="navigation"/>
            </td>
           </tr>
          </table>
         </td>
        </tr>
        <tr>
         <td>
          <div id="main">
           <xsl:apply-templates select="layout"/>
          </div>
         </td>
        </tr>
       </table>
      </body>
     </html>
    </xsl:template>
  
    <xsl:template match="navigation">
     <table>
      <tr>
       <td>
        <xsl:if test="previous">
         <a href="{previous/@href}"><img src="../images/slides/previous.png" 
border="0"/></a>
        </xsl:if>
        <xsl:if test="not(previous)">
         <img src="../images/slides/previous.png" border="0"/>
        </xsl:if>
       </td>
       <td>
        <xsl:if test="previous-section">
         <a href="{previous-section/@href}"><img 
src="../images/slides/previous-section.png" border="0"/></a>
        </xsl:if>
        <xsl:if test="not(previous-section)">
         <img src="../images/slides/previous-section.png" border="0"/>
        </xsl:if>
       </td>
       <td>
        <xsl:if test="home">
         <a href="{home/@href}"><img src="../images/slides/home.png" 
border="0"/></a>
        </xsl:if>
        <xsl:if test="not(home)">
         <img src="../images/slides/home.png" border="0"/>
        </xsl:if>
       </td>
       <td>
        <xsl:if test="next-section">
         <a href="{next-section/@href}"><img 
src="../images/slides/next-section.png" border="0"/></a>
        </xsl:if>
        <xsl:if test="not(next-section)">
         <img src="../images/slides/next-section.png" border="0"/>
        </xsl:if>
       </td>
       <td>
        <xsl:if test="next">
         <a href="{next/@href}"><img src="../images/slides/next.png" 
border="0"/></a>
        </xsl:if>
        <xsl:if test="not(next)">
         <img src="../images/slides/next.png" border="0"/>
        </xsl:if>
       </td>
      </tr>
     </table>
    </xsl:template>
  
    <xsl:template match="layout">
     <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="p|ol|ul|li|em|strong|br">
     <xsl:copy>
      <xsl:apply-templates/>
     </xsl:copy>
    </xsl:template>
  
    <xsl:template match="fork">
     <a href="[EMAIL PROTECTED]" target="_blank">
      <xsl:apply-templates/>
     </a>
    </xsl:template>
  
    <xsl:template match="link">
     <a href="[EMAIL PROTECTED]">
      <xsl:apply-templates/>
     </a>
    </xsl:template>
  
    <xsl:template match="title">
     <h1>
      <xsl:apply-templates/>
     </h1>
    </xsl:template>
  
    <xsl:template match="subtitle">
     <h3>
      <xsl:text> [</xsl:text>
      <xsl:apply-templates/>
      <xsl:text>]</xsl:text>
     </h3>
    </xsl:template>
  
    <xsl:template match="quote">
     <p class="quote">
      <xsl:apply-templates/>
     </p>
    </xsl:template>
  
    <xsl:template match="source">
     <pre>
      <xsl:apply-templates/>
     </pre>
    </xsl:template>
  
    <xsl:template match="figure">
     <p class="figure" align="center">
      <img src="[EMAIL PROTECTED]"/>
     </p>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/slides/slides-navigation.xsl
  
  Index: slides-navigation.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
    <xsl:param name="section"/>
    <xsl:param name="slide"/>
  
    <xsl:template match="slides">
  
     <slide style="[EMAIL PROTECTED]">
       <xsl:if test="not($section)">
         <title>
          <xsl:value-of select="title"/>
         </title>
         <navigation>
          <next href="?section=1"/>
         </navigation>
         <layout>
          <title><a href="?section=1"><xsl:value-of select="title"/></a></title>
          <subtitle>
           <xsl:for-each select="authors/person">
            <xsl:value-of select="name"/>
             <xsl:text> (</xsl:text>
             <xsl:value-of select="email"/>
             <xsl:text>)</xsl:text>
            </xsl:for-each>
          </subtitle>
          <quote><xsl:value-of select="overview"/></quote>
         </layout>
       </xsl:if>
  
       <xsl:if test="$section">
        <xsl:if test="not($slide)">
         <xsl:apply-templates select="//section[position() = $section]"/>
        </xsl:if>
        <xsl:if test="$slide">
         <xsl:apply-templates select="//section[position() = 
$section]/slide[position() = $slide]"/>
        </xsl:if>
       </xsl:if>
     </slide>
    </xsl:template>
  
  <!-- ================================ Section ============================== 
-->
  
    <xsl:template match="section">
      <title>
       <xsl:value-of select="title"/>
      </title>
  
      <navigation>
       <xsl:variable name="last">
        <xsl:value-of select="count(//section)"/>
       </xsl:variable>
       <xsl:variable name="previous-last">
        <xsl:value-of select="count(//section[position() = ($section - 
1)]/slide)"/>
       </xsl:variable>
  
       <home href=""/>
  
       <xsl:if test="$section!=1">
        <previous-section href="?section={$section - 1}"/>
        <previous href="?section={$section - 1}&amp;slide={$previous-last}"/>
       </xsl:if>
  
       <xsl:if test="$section!=$last">
        <next-section href="?section={$section + 1}"/>
       </xsl:if>
  
       <next href="?section={$section}&amp;slide=1"/>
      </navigation>
  
      <layout>
       <title><xsl:value-of select="title"/></title>
       <subtitle><xsl:value-of select="subtitle"/></subtitle>
      </layout>
    </xsl:template>
  
  <!-- ================================ Slide ============================== -->
  
    <xsl:template match="slide">
      <title>
       <xsl:value-of select="title"/>
      </title>
  
      <navigation>
       <xsl:variable name="last-section">
        <xsl:value-of select="count(//section)"/>
       </xsl:variable>
       <xsl:variable name="last">
        <xsl:value-of select="count(//section[position() = $section]/slide)"/>
       </xsl:variable>
       <xsl:variable name="previous-last">
        <xsl:value-of select="count(//section[position() = ($section - 
1)]/slide)"/>
       </xsl:variable>
  
       <home href="?section={$section}"/>
  
       <xsl:if test="$slide!=1">
        <previous href="?section={$section}&amp;slide={$slide - 1}"/>
       </xsl:if>
       <xsl:if test="($slide=1)">
        <previous href="?section={$section}"/>
       </xsl:if>
  
       <xsl:if test="$slide!=$last">
        <next href="?section={$section}&amp;slide={$slide + 1}"/>
       </xsl:if>
       <xsl:if test="($slide=$last) and ($section!=$last-section)">
        <next href="?section={$section + 1}"/>
       </xsl:if>
  
       <xsl:if test="$section!=1">
        <previous-section href="?section={$section - 1}"/>
       </xsl:if>
       <xsl:if test="$section!=$last-section">
        <next-section href="?section={$section + 1}"/>
       </xsl:if>
      </navigation>
  
      <layout>
       <xsl:apply-templates/>
      </layout>
    </xsl:template>
    
    <xsl:template match="*|@*|text()">
     <xsl:copy>
      <xsl:apply-templates select="*|@*|text()"/>
     </xsl:copy>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/system/directory2html.xsl
  
  Index: directory2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:dir="http://apache.org/cocoon/directory/2.0";>
  
    <xsl:template match="/">
     <html>
      <head>
       <title><xsl:value-of select="dir:directory/@name"/></title>
         <style>
                <xsl:comment>
                        body { background-color: #ffffff }
                </xsl:comment>
         </style>
      </head>
      <body>
       <h1>Directory Listing of <xsl:value-of 
select="dir:directory/@name"/></h1>
       <table border="0">
        <tr>
         <td><a href="../"><i>parent directory</i></a></td>
        </tr>
        <tr>
         <td>&#160;</td>
        </tr>
        <xsl:apply-templates/>
       </table>
      </body>
     </html>
    </xsl:template>
  
    <xsl:template match="dir:directory/dir:directory">
     <tr>
      <td><a href="[EMAIL PROTECTED]/"><i><xsl:value-of 
select="@name"/></i></a></td>
      <td><xsl:value-of select="@date"/></td>
     </tr>
    </xsl:template>
  
    <xsl:template match="dir:file">
     <tr>
      <td><a href="[EMAIL PROTECTED]"><xsl:value-of select="@name"/></a></td>
      <td><xsl:value-of select="@date"/></td>
     </tr>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/system/error2html.xsl
  
  Index: error2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  <!-- Author: Nicola Ken Barozzi "[EMAIL PROTECTED]" -->
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:error="http://apache.org/cocoon/error/2.0";>
  
  <xsl:template match="error:notify">
   <html>
    <head>
     <title>
      <xsl:value-of select="@error:type"/>:<xsl:value-of select="error:title"/>
     </title>
     <style><![CDATA[
     <!--
        H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color 
: #0086b2;} 
        BODY{font-family : sans-serif,Arial,Tahoma;color : 
black;background-color : white;} 
        TABLE{font-family : sans-serif,Arial,Tahoma;color : 
black;background-color : black;} 
        B{color : white;background-color : #0086b2;}
        HR{color : #0086b2;} 
     //-->]]>
     </style>
     <script language="JavaScript1.2"><![CDATA[
      <!--
        var head="display:''"
        function expand(whatToExpand)
        {
          var head=whatToExpand.style
          if (head.display=="none"){
            head.display=""
          }
          else{
            head.display="none"
          }
        }
       //-->]]>
     </script>
    </head>
    <body>
       <table align="center" border="0" bgcolor="#000000" cellpadding="0" 
cellspacing="0">
      <tbody>
       <tr>
        <td>
        
        
     <table align="center" border="0" bgcolor="#000000" cellpadding="2" 
cellspacing="2">
      <tbody>
       <tr>
        <td bgcolor="#0086b2" colspan="2">
         <font color="#ffffff" size="+2">
          <xsl:value-of select="error:title"/>
         </font>
        </td>
       </tr>
  
       <tr>
        <td bgcolor="#ffffff" colspan="2" valign="top">
         <font color="#000000">
          The <xsl:value-of select="@error:sender"/> notifies that 
          <xsl:value-of select="error:source"/> says:<br/><br/>
          <i><xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="error:message"/>
           </xsl:call-template></i><br/><br/>
          More precisely:<br/><br/>
          <i><xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="error:description"/>
           </xsl:call-template></i><br/>
          <br/>
         </font>
        </td>
       </tr>
       
  <!--     
       
       <tr>
        <td bgcolor="#0086b2" valign="top">
         <font color="#ffffff" size="+1">
          <xsl:value-of select="@error:type"/>
         </font>
        </td>
        <td bgcolor="#ffffff" >
         <xsl:apply-templates select="error:message"/>
        </td>
       </tr>
  
       <tr>
        <td bgcolor="#0086b2" valign="top" colspan="2">
         <font color="#ffffff" size="+1">details</font>
        </td>
       </tr>
  
       <tr>
        <td bgcolor="#0086b2" valign="top">
         <font color="#ffffff">from</font>
        </td>
        <td bgcolor="#ffffff">
         <font face="arial,helvetica,sanserif">
          <xsl:value-of select="@error:sender"/>
         </font>
        </td>
       </tr>
  
       <tr>
        <td bgcolor="#0086b2" valign="top">
         <font color="#ffffff">source</font>
        </td>
        <td bgcolor="#ffffff">
         <font face="arial,helvetica,sanserif">
          <xsl:value-of select="error:source"/>
         </font>
        </td>
       </tr>
  
       <xsl:apply-templates select="error:description"/>
  -->
       <tr>
        <td bgcolor="#0086b2" valign="top" colspan="2">
         <font color="#ffffff" size="+1">extra info</font>
        </td>
       </tr>
  
       <xsl:apply-templates select="error:extra"/>
       
       <tr>
        <td bgcolor="#ffffff" colspan="2" valign="top">
         <font color="#000000" size="-1">
         <br/>
          If you need help and this information is not enough, you
          are invited to read the <a 
href="http://xml.apache.org/cocoon/faq.html";>cocoon faq</a>.<br/>
          If you still don't find the answers you need,
          can send a mail to the 
          <a>
          <xsl:attribute name="href">mailto:[EMAIL PROTECTED]<xsl:value-of 
select="error:message"/>&amp;body=Description:<xsl:value-of 
select="error:description"/></xsl:attribute>
          Cocoon users mailing list</a>,
          remembering to
          <ul>
            <li> specify the version of Cocoon you're using, or we suppose that 
you
            are talking about the latest version;</li>
            <li>specify the taglibs and sitemap components that are 
pertinent;</li>
            <li>specify the platform-operating system-version-servlet container 
version;</li>
            <li>send any pertinent error message;</li>
            <li>send pertinent log snippets;</li>
            <li>send pertinent sitemap snippets;</li>
            <li>send pertinent parts of the page that gives you problems.</li>
          </ul>
          For more detailed technical information, take a look at the log
          files in the log directory of cocoon, which is 
<code>/WEB-INF/logs</code> by default.<br/>
          Logging configuration is by default in 
<code>/WEB-INF/logkit.xconf.</code><br/><br/>
          If you think you found a bug, please report it to 
          <a href="http://nagoya.apache.org/bugzilla/";>Apache's Bugzilla</a>;
          a message will be sent to the developer mailing list.<br/>
         </font>
        </td>
       </tr>
         
      </tbody>
     </table>
     
     
     
           </td>
       </tr>
         
      </tbody>
     </table>
     
     
    </body>
   </html>
  </xsl:template>
  
   <xsl:template match="error:description">
    <tr>
     <td bgcolor="#0086b2" valign="top">
      <font color="#ffffff" face="arial,helvetica,sanserif">description</font>
     </td>
     <td bgcolor="#ffffff">
           <xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="."/>
           </xsl:call-template>
     </td>
    </tr>
   </xsl:template>
  
   <xsl:template match="error:message">
           <xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="."/>
           </xsl:call-template>
   </xsl:template>
  
   <xsl:template match="error:extra">
    <tr>
     <td bgcolor="#0086b2" valign="top">
      <font color="#ffffff">
       <xsl:value-of select="@error:description"/>
      </font>
     </td>   
     <td bgcolor="#ffffff">
      <font size="-1">
                <xsl:choose>
                        <xsl:when 
test="contains(@error:description,'stacktrace')">
         <!-- degrade gracefully on Netscape-->
         <a href="javascript:" 
onclick="expand(document.all[this.sourceIndex+2])"><script>if(document.all){document.write('show');}</script></a>
         <div style="display:'none';">
           <xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="."/>
           </xsl:call-template>
         </div>
                        </xsl:when>
                        <xsl:otherwise>
           <xsl:call-template name="returns2br">
             <xsl:with-param name="string" select="."/>
           </xsl:call-template>
                        </xsl:otherwise>
                </xsl:choose>
      </font>
     </td>
    </tr>
   </xsl:template>
   
    <xsl:template name="returns2br">
      <xsl:param name="string"/>
      <xsl:variable name="return" select="'&#xa;'"/>
      <xsl:choose>
        <xsl:when test="contains($string,$return)">
          <xsl:value-of select="substring-before($string,$return)"/>
          <br/>
          <xsl:call-template name="returns2br">
            <xsl:with-param name="string" 
select="substring-after($string,$return)"/>
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$string"/>
        </xsl:otherwise>
     </xsl:choose>
    </xsl:template>
    
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/system/profile2html.xsl
  
  Index: profile2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:profile="http://apache.org/cocoon/profiler/1.0";>
  
    <xsl:param name="sort"/>
  
    <xsl:template match="profile:profilerinfo">
      <html>
        <head>
          <title>Cocoon2 profile information [<xsl:value-of 
select="@profile:date"/>]</title>
        </head>
        <body>
          Sort results by <a href="?sort=uri">uri</a>,
          <a href="?sort=count">count</a>, <a href="?sort=time">time</a>.
  
          <table noshade="noshade" border="0" cellspacing="1" cellpadding="0" 
width="100%">
            <xsl:choose>
              <xsl:when test="$sort = 'uri'">
                <xsl:apply-templates>
                   <xsl:sort select="@profile:uri"/>
                </xsl:apply-templates>
              </xsl:when>
              <xsl:when test="$sort = 'time'">
                <xsl:apply-templates>
                   <xsl:sort select="@profile:time" data-type="number"/>
                </xsl:apply-templates>
              </xsl:when>
              <xsl:when test="$sort = 'count'">
                <xsl:apply-templates>
                   <xsl:sort select="@profile:count" data-type="number"/>
                </xsl:apply-templates>
              </xsl:when>
              <xsl:otherwise>
                <xsl:apply-templates/>
              </xsl:otherwise>
            </xsl:choose>
          </table>
        </body>
      </html>
    </xsl:template>
  
    <xsl:template match="profile:pipeline">
      <xsl:if test="position() mod 5 = 1">
        <tr bgcolor="#FFC0C0">
         <th>NN</th>
         <th>Role (Source)</th>
         <th>Average</th>
         <th colspan="10">Last Results</th>
        </tr>
      </xsl:if>
      <tr bgcolor="#C0C0FF">
       <td colspan="14">
        <font face="verdana"><strong><xsl:value-of 
select="@profile:uri"/></strong></font>
        (<xsl:value-of select="@profile:count"/> results,
        total time: <xsl:value-of select="@profile:time"/>,
        average time: <xsl:value-of select="@profile:time div @profile:count"/>)
       </td>
      </tr>
  <!--
      <xsl:for-each select="*">
       <tr>
        <td>
         <xsl:apply-templates select="."/>
        </td>
       </tr>
      </xsl:for-each>
  -->
      <xsl:for-each select="profile:average/profile:element">
        <xsl:variable name="bgcolor">
         <xsl:if test="position() mod 2 = 0">#D0D0D0</xsl:if>
         <xsl:if test="position() mod 2 = 1">#E0E0E0</xsl:if>
        </xsl:variable>
        <tr bgcolor="{$bgcolor}">
  
         <xsl:variable name="pos" select="position()"/>
         <td width="1%">
          <xsl:value-of select="$pos"/>
         </td>
         <td width="10%">
          <xsl:value-of select="@profile:role"/>
          <xsl:if test="@profile:source">
            (<xsl:value-of select="@profile:source"/>)
          </xsl:if>
         </td>
  
         <xsl:for-each 
select="../../profile:average/profile:element[position()=$pos]">
          <th>
           <xsl:value-of select="@profile:time"/>
          </th>
         </xsl:for-each>
  
         <xsl:for-each 
select="../../profile:result/profile:element[position()=$pos]">
          <td>
           <xsl:value-of select="@profile:time"/>
          </td>
         </xsl:for-each>
  
        </tr>
      </xsl:for-each>
  
         <xsl:variable name="pos" 
select="count(profile:average/profile:element)"/>
        <tr>
         <td width="1%">
          <xsl:value-of select="$pos+1"/>
         </td>
         <td width="10%">
          TOTAL
         </td>
  
          <th>
           <xsl:value-of select="profile:average/@profile:time"/>
          </th>
  
         <xsl:for-each select="profile:result">
          <td>
           <xsl:value-of select="@profile:time"/>
          </td>
         </xsl:for-each>
  
        </tr>
    </xsl:template>
  
    <xsl:template match="profile:average|profile:result">
     <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="profile:element">
     <table cellspacing="0" cellpadding="0">
      <tr>
       <td>
        <xsl:value-of select="@profile:role"/>
       </td>
      </tr>
     </table>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/system/status2html.xsl
  
  Index: status2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  <!-- Author: Nicola Ken Barozzi "[EMAIL PROTECTED]" -->
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:status="http://apache.org/cocoon/status/2.0";>
  
    <xsl:template match="status:statusinfo">
      <html>
        <head>
          <title>Cocoon2 status [<xsl:value-of select="@status:host"/>]</title>
        </head>
        <body bgcolor="white">
  
        <table bgcolor="#000000" cellspacing="0" cellpadding="2" width="97%">
          <tr>
            <td>
      
             <table border="0" bgcolor="#000000" cellpadding="0" 
cellspacing="0" width="100%">
               <tr>
                <td>   
                
                  <table bgcolor="#ffffff" noshade="noshade" cellspacing="0" 
cellpadding="6" width="100%">
                    <tr>
                      <td bgcolor="#0086b2" valign="top" align="left">
                        <img src="images/cocoon.gif" border="0"/>
                      </td>
                      <td bgcolor="#0086b2" valign="top" align="right">
                       <FONT face="arial,helvetica,sanserif" color="#ffffff">
                         [<xsl:value-of select="@status:host"/>] <xsl:value-of 
select="@status:date"/>
                       </FONT>
                      </td>
                    </tr>
                   </table>
  
                  </td>
                 </tr>
               </table>      
          
              </td>
            </tr>
           </table>
   
        <xsl:call-template name="spacer">
         <xsl:with-param name="height" select="number(10)"/>
        </xsl:call-template>
        
        <xsl:apply-templates />
          
        </body>
      </html>
    </xsl:template>
  
    <xsl:template match="status:group">
         <table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0" 
width="100%">
           <tr>
            <td>    
            
             <table bgcolor="#000000" border="0" cellspacing="2" 
cellpadding="6" width="100%">
              <tr>
                <td bgcolor="#0086b2" valign="top" align="left" colspan="2">
                 <FONT color="#ffffff" face="arial,helvetica,sanserif" 
size="+1">
                  -<xsl:value-of select="@status:name"/>
                 </FONT>
                </td>
              </tr>
              <tr>
     
            <td bgcolor="#ffffff">
        
              <table border="0" bgcolor="#000000" cellpadding="0" 
cellspacing="0" width="100%">
               <tr>
                <td>    
   
                  <table width="100%" bgcolor="#000000" border="0" 
cellspacing="2" cellpadding="6">
                    <xsl:apply-templates select="status:value"/>
                    <xsl:call-template name="spacer">
                     <xsl:with-param name="height" select="number(8)"/>
                    </xsl:call-template>
                    <xsl:apply-templates select="status:group"/>
                  </table>
          
               </td>
              </tr>
            </table>    
          
          </td>
        
        
         </tr>
       </table>
  
      </td>
     </tr>
   </table>
  
     
    <xsl:call-template name="spacer">
     <xsl:with-param name="height" select="number(6)"/>
    </xsl:call-template>
  
    </xsl:template>
  
        <xsl:template match="status:value">
     <tr>
      <td bgcolor="#0086b2" valign="top" align="left" width="1%">
       <font face="arial,helvetica,sanserif" color="#ffffff">
          <xsl:value-of select="@status:name"/>
       </font>
      </td>
      
      <td bgcolor="#eeeeee" width="100%">
        
      <xsl:choose>
        <xsl:when test="../@status:name='memory' and ( @status:name='total' or 
@status:name='free')">
            <font face="arial,helvetica,sanserif">
            <xsl:call-template name="suffix">
              <xsl:with-param 
                name="bytes" 
                select="number(.)"/>
            </xsl:call-template>
            </font>
        </xsl:when>    
        <xsl:when test="count(status:line) &lt;= 1">
            <font face="arial,helvetica,sanserif">
              <xsl:value-of select="status:line" />
            </font>
        </xsl:when>
        <xsl:otherwise>
            <ul>
              <xsl:apply-templates />
            </ul>
        </xsl:otherwise>
      </xsl:choose>
      </td>
     </tr>
    </xsl:template>
  
        <xsl:template match="status:line">
                <li>
                        <font face="arial,helvetica,sanserif">
                                <xsl:value-of select="." />
                        </font>
                </li>
        </xsl:template>
  
        <xsl:template name="suffix">
                <xsl:param name="bytes"/>
                <xsl:choose>
                        <!-- More than 4 MB (=4194304) -->
                        <xsl:when test="$bytes &gt;= 4194304">
                                <xsl:value-of select="round($bytes div 
10485.76) div 100"/> MB
                                <small>(<xsl:value-of select="$bytes"/>)</small>
                        </xsl:when>
                        <!-- More than 4 KB (=4096) -->
                        <xsl:when test="$bytes &gt; 4096">
                                <xsl:value-of select="round($bytes div 10.24) 
div 100"/> KB
                                <small>(<xsl:value-of select="$bytes"/>)</small>
                        </xsl:when>
                        <!-- Less -->
                        <xsl:otherwise>
                                <xsl:value-of select="$bytes"/> B
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>
    
    <xsl:template name="spacer">
        <xsl:param name="height"/>
      <table bgcolor="#ffffff" cellspacing="0" cellpadding="2" width="100%">
        <tr>
          <td bgcolor="#ffffff"> 
                
            <table bgcolor="#ffffff" cellspacing="0" cellpadding="2" 
width="100%">
             <tr>
              <td width="100%" bgcolor="#ffffff" valign="top" align="left" 
height="$height"> 
              </td>
            </tr>
           </table>
      
          </td>
        </tr>
      </table>
        </xsl:template>
  
  
  </xsl:stylesheet>
  
  
  
  
  1.1                  
xml-cocoon2/src/webapp/samples/stylesheets/xmlform/xmlform2html.xsl
  
  Index: xmlform2html.xsl
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1" ?>
  
  
  <!-- 
  
    Basic XMLForm processing stylesheet.  
    Converts XMLForm tags to HTML tags.
    
    Syntax is borrowed from the XForms standard.
    http://www.w3.org/TR/2002/WD-xforms-20020118/
    
    This stylesheet is usually applied at the end of a 
    transformation process after laying out the xmlform
    tags on the page is complete. At this stage xmlform tags 
    are rendered in device specific format.
    
    Different widgets are broken into templates 
    to allow customization in importing stylesheets
  
    author: Ivelin Ivanov, [EMAIL PROTECTED], June 2002
    author: Andrew Timberlake <[EMAIL PROTECTED]>, June 2002
    author: Michael Ratliff, [EMAIL PROTECTED] <[EMAIL PROTECTED]>, May 2002
    author: Torsten Curdt, [EMAIL PROTECTED], March 2002
  
  -->
  
  <xsl:stylesheet version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
      xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002";
  >
  
     <xsl:output method = "html" omit-xml-declaration = "yes"  /> 
    
  
     <xsl:template match="/">
       <xsl:apply-templates />
     </xsl:template>
  
     <xsl:template match="xf:form">
        <form method="POST">
           <xsl:copy-of select="@*"/>
           <input type="hidden" name="cocoon-xmlform-view" value="[EMAIL 
PROTECTED]"/>
           <xsl:apply-templates />
        </form>
     </xsl:template>
  
     <xsl:template match="xf:output">
        [<xsl:value-of select="xf:value/text()"/>]
     </xsl:template>
  
     <xsl:template match="xf:textbox">
        <input name="[EMAIL PROTECTED]" type="textbox" 
value="{xf:value/text()}">
                <xsl:copy-of select="@*[not(name()='ref')]"/>
        </input>
     </xsl:template>
  
     <xsl:template match="xf:password">
        <input name="[EMAIL PROTECTED]" type="password" 
value="{xf:value/text()}">
                <xsl:copy-of select="@*[not(name()='ref')]"/>
        </input>
     </xsl:template>
  
     <xsl:template match="xf:hidden">
        <input name="[EMAIL PROTECTED]" type="hidden" value="{xf:value/text()}">
                <xsl:copy-of select="@*[not(name()='ref')]"/>
        </input>
     </xsl:template>
  
     <xsl:template match="xf:selectBoolean">
        <input name="[EMAIL PROTECTED]" type="checkbox" value="true">
                <xsl:copy-of select="@*[not(name()='ref')]"/>
            <xsl:if test="xf:value/text() = 'true'">
            <xsl:attribute name="checked"/>
          </xsl:if>
        </input>
     </xsl:template>
  
     <xsl:template match="xf:selectOne | xf:[EMAIL PROTECTED]'listbox']">
       <select name="[EMAIL PROTECTED]">
           <xsl:copy-of select="@*[not(name()='ref')]"/>
         <xsl:variable name="selected" select="xf:value"/>
         <xsl:for-each select="xf:item">
           <option value="{xf:value}">
             <xsl:if test="$selected = xf:value">
               <xsl:attribute name="selected"/>
             </xsl:if>
             <xsl:value-of select="xf:caption"/>
           </option>
         </xsl:for-each>
       </select>
     </xsl:template>
     
     <xsl:template match="xf:[EMAIL PROTECTED]'radio']">
                <xsl:variable name="selected" select="xf:value"/>
                <xsl:variable name="ref" select="@ref"/>
          <xsl:for-each select="xf:item">
              <input name="{$ref}" type="radio" value="{xf:value}">
                                <xsl:copy-of select="@*[not(name()='ref')]"/>
                  <xsl:if test="xf:value = $selected">
                      <xsl:attribute name="checked"/>
                  </xsl:if>
              </input>
              <xsl:value-of select="xf:caption"/>
              <br/>
          </xsl:for-each>
     </xsl:template>
  
     
     <xsl:template match="xf:selectMany | xf:[EMAIL PROTECTED]'listbox']">
                <xsl:variable name="selected" select="xf:value"/>
                <select name="[EMAIL PROTECTED]">
                        <xsl:copy-of select="@*[not(name()='ref')]"/>
                        <xsl:attribute name="multiple"/>
                        <xsl:for-each select="xf:item">
                                <option value="{xf:value}">
                                        <xsl:if test="xf:value = $selected">
                                                <xsl:attribute name="selected"/>
                                        </xsl:if>
                                        <xsl:value-of select="xf:caption"/>
                                </option>
                        </xsl:for-each>
                </select>       
     </xsl:template>
  
     
     <xsl:template match="xf:[EMAIL PROTECTED]'checkbox']">
                <xsl:variable name="selected" select="xf:value"/>
                <xsl:variable name="ref" select="@ref"/>
          <xsl:for-each select="xf:item">
              <input name="{$ref}" type="checkbox" value="{xf:value}">
                                <xsl:copy-of select="@*[not(name()='ref')]"/>
                  <xsl:if test="xf:value = $selected">
                    <xsl:attribute name="checked"/>
                  </xsl:if>
              </input>
              <xsl:value-of select="xf:caption"/>
              <br/>
          </xsl:for-each>
     </xsl:template>
  
     
     
     <xsl:template match="xf:submit">
        <input name="[EMAIL PROTECTED]" type="submit" 
value="{xf:caption/text()}">
                <xsl:copy-of select="@*[not(name()='id')]"/>
        </input>
     </xsl:template>
  
  
     <xsl:template match="*">
        <xsl:copy><xsl:copy-of select="@*" /><xsl:apply-templates /></xsl:copy>
     </xsl:template>
  
     <xsl:template match="text()">
        <xsl:value-of select="." />
     </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  
  
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/templates/hello-page.vm
  
  Index: hello-page.vm
  ===================================================================
  <?xml version="1.0"?>
  #set($name = $parameters.getParameter("name", ""))
  #set($project = $parameters.getParameter("project", ""))
  <page>
   <title>Hello</title>
   <content>
    <para>This is my first Cocoon2 page!</para>
    <para>Hi!  This page is generated using $name from the $project 
project.</para>
   </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/welcome/cocoon.gif
  
        <<Binary file>>
  
  
  1.1                  xml-cocoon2/src/webapp/samples/welcome/status2html.xsl
  
  Index: status2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  <!-- Author: Nicola Ken Barozzi "[EMAIL PROTECTED]" -->
  <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:status="http://apache.org/cocoon/status/2.0";>
     <xsl:template match="status:statusinfo">
        <html>
           <head>
              <title>Cocoon2 on [
              <xsl:value-of select="@status:host" />
  
              ]</title>
           </head>
  
           <body bgcolor="white">
              <table bgcolor="#000000" cellspacing="0" cellpadding="2" 
width="97%">
                 <tr>
                    <td>
                       <table border="0" bgcolor="#000000" cellpadding="0" 
cellspacing="0" width="100%">
                          <tr>
                             <td>
                                <table bgcolor="#ffffff" noshade="noshade" 
cellspacing="0" cellpadding="6" width="100%">
                                   <tr>
                                      <td bgcolor="#0086b2" valign="top" 
align="left">
                                         <font size="5" 
face="arial,helvetica,sanserif" color="#ffffff">Apache Cocoon running on 
                                         <xsl:value-of select="@status:host" />
                                         </font>
                                      </td>
  
                                      <td bgcolor="#0086b2" valign="top" 
align="right">
                                         <font face="arial,helvetica,sanserif" 
color="#ffffff">
                                            <xsl:value-of select="@status:date" 
/>
                                         </font>
                                      </td>
                                   </tr>
                                </table>
                             </td>
                          </tr>
                       </table>
                    </td>
                 </tr>
              </table>
  
              <xsl:call-template name="spacer">
                 <xsl:with-param name="height" select="number(10)" />
              </xsl:call-template>
  
              <xsl:apply-templates />
           </body>
        </html>
     </xsl:template>
  
     <xsl:template match="status:group">
        <table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0" 
width="100%">
           <tr>
              <td>
                 <table bgcolor="#000000" border="0" cellspacing="2" 
cellpadding="6" width="100%">
                    <tr>
                       <td bgcolor="#0086b2" valign="top" align="left" 
colspan="2">
                          <FONT color="#ffffff" face="arial,helvetica,sanserif" 
size="+1">-
                          <xsl:value-of select="@status:name" />
                          </FONT>
                       </td>
                    </tr>
                 </table>
  
                 <table bgcolor="#ffffff" border="0" cellspacing="2" 
cellpadding="6" width="100%">
                    <tr>
                       <td bgcolor="#ffffff">
                          <table border="0" bgcolor="#000000" cellpadding="0" 
cellspacing="0" width="100%">
                             <tr>
                                <td>
                                   <table width="100%" bgcolor="#000000" 
border="0" cellspacing="2" cellpadding="6">
                                      <xsl:apply-templates 
select="status:value" />
  
                                      <xsl:call-template name="spacer">
                                         <xsl:with-param name="height" 
select="number(8)" />
                                      </xsl:call-template>
  
                                      <xsl:apply-templates 
select="status:group" />
                                   </table>
                                </td>
                             </tr>
                          </table>
                       </td>
                    </tr>
                 </table>
              </td>
           </tr>
        </table>
  
        <xsl:call-template name="spacer">
           <xsl:with-param name="height" select="number(6)" />
        </xsl:call-template>
     </xsl:template>
  
     <xsl:template match="status:value">
        <tr>
           <td bgcolor="#0086b2" valign="top" align="left" width="1%">
              <font face="arial,helvetica,sanserif" color="#ffffff">
                 <xsl:value-of select="@status:name" />
              </font>
           </td>
  
           <td bgcolor="#eeeeee" width="100%">
              <xsl:choose>
                 <xsl:when test="../@status:name='memory' and ( 
@status:name='total' or @status:name='free')">
                    <font face="arial,helvetica,sanserif">
                       <xsl:call-template name="suffix">
                          <xsl:with-param name="bytes" select="number(.)" />
                       </xsl:call-template>
                    </font>
                 </xsl:when>
  
                 <xsl:when test="count(status:line) &lt;= 1">
                    <font face="arial,helvetica,sanserif">
                       <xsl:value-of select="status:line" />
                    </font>
                 </xsl:when>
  
                 <xsl:otherwise>
                    <ul>
                       <xsl:apply-templates />
                    </ul>
                 </xsl:otherwise>
              </xsl:choose>
           </td>
        </tr>
     </xsl:template>
  
     <xsl:template match="status:line">
        <li>
           <font face="arial,helvetica,sanserif">
              <xsl:value-of select="." />
           </font>
        </li>
     </xsl:template>
  
     <xsl:template name="suffix">
        <xsl:param name="bytes" />
  
        <xsl:choose>
  <!-- More than 4 MB (=4194304) -->
           <xsl:when test="$bytes &gt;= 4194304">
           <xsl:value-of select="round($bytes div 10485.76) div 100" />
  
           MB 
           <small>(
           <xsl:value-of select="$bytes" />
  
           )</small>
           </xsl:when>
  
  <!-- More than 4 KB (=4096) -->
           <xsl:when test="$bytes &gt; 4096">
           <xsl:value-of select="round($bytes div 10.24) div 100" />
  
           KB 
           <small>(
           <xsl:value-of select="$bytes" />
  
           )</small>
           </xsl:when>
  
  <!-- Less -->
           <xsl:otherwise>
           <xsl:value-of select="$bytes" />
  
           B</xsl:otherwise>
        </xsl:choose>
     </xsl:template>
  
     <xsl:template name="spacer">
        <xsl:param name="height" />
  
        <table bgcolor="#ffffff" cellspacing="0" cellpadding="2" width="100%">
           <tr>
              <td bgcolor="#ffffff">
                 <table bgcolor="#ffffff" cellspacing="0" cellpadding="2" 
width="100%">
                    <tr>
                       <td width="100%" bgcolor="#ffffff" valign="top" 
align="left" height="$height">
                       </td>
                    </tr>
                 </table>
              </td>
           </tr>
        </table>
     </xsl:template>
  </xsl:stylesheet>
  
  
  
  
  1.1                  xml-cocoon2/src/webapp/samples/welcome/welcome.xhtml
  
  Index: welcome.xhtml
  ===================================================================
  <html xmlns:xlink="http://www.w3.org/1999/xlink";>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  
        <title>Apache Cocoon 2.1-dev</title>
  
        <link href="favicon.ico" rel="SHORTCUT ICON" />
     </head>
  
     <body alink="#743e75" vlink="#00698c" link="#0086b2" bgcolor="#ffffff">
        <table width="60%" align="center" cellpadding="2" cellspacing="2" 
border="0">
           <tbody>
              <tr>
                 <td align="center">
                    <font color="#000000" face="arial,helvetica,sanserif">The 
Apache Software Foundation is proud to present...</font>
                 </td>
              </tr>
  
              <tr>
                 <td align="center" width="40%">
                    <img src="cocoon.gif" border="0" />
                 </td>
              </tr>
  
              <tr>
                 <td align="center" width="30%">
                    <font color="#000000" face="arial,helvetica,sanserif">
                       <b>version 2.1-dev</b>
                    </font>
                 </td>
              </tr>
           </tbody>
        </table>
  
        <p align="center">
        </p>
  
        <table width="60%" align="center" cellpadding="2" cellspacing="2" 
border="0" bgcolor="#000000">
           <tbody>
              <tr align="center">
                 <td width="100%" bgcolor="#0086b2">
                    <font color="#ffffff" face="arial,helvetica,sanserif" 
size="+1">Welcome!</font>
                 </td>
              </tr>
  
              <tr>
                 <td align="left" bgcolor="#ffffff" width="100%">
                    <table align="center" cellpadding="2" cellspacing="0" 
border="0" bgcolor="#ffffff" width="100%">
                       <tbody>
                          <tr>
                             <td align="left" bgcolor="#ffffff" width="100%">
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">It seems you got me running :) 
                                <br />
  
                                Here are some links to the relevant portions of 
the default cocoon webapp.</font>
  
                                <br />
  
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                </font>
                             </td>
                          </tr>
  
                          <tr>
                             <td align="left" bgcolor="#ffffff" width="100%">
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                <a href="status">Status</a>
  
                                - How is life going on here in my server world? 
Find out :)</font>
                             </td>
                          </tr>
  
                          <tr>
                             <td align="left" bgcolor="#ffffff" width="100%">
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                <a href="documents/index">Documentation</a>
  
                                - Who am <a 
href="http://xml.apache.org/cocoon/";>I</a>? 
                                  <a href="documents/index">Information</a>, 
                                  <a href="tutorial/home.html">tutorials</a> 
and 
                                  <a 
href="documents/doclist.html">references</a> about me 
                                  <a href="documents/index">are here</a> 
                                  (<a href="samples/linkstatus/">check 
links</a>).</font>
                             </td>
                          </tr>
  
                          <tr>
                             <td align="left" bgcolor="#ffffff" width="100%">
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                <a href="samples/search/welcome">Search</a>
  
                                - Need to <a 
href="samples/search/welcome">search</a> for a specific 
                                  thing about me? Let me do the work for 
you.</font>
                             </td>
                          </tr>
  
                          <tr>
                             <td align="left" bgcolor="#ffffff" width="100%">
                                <font color="#000000" 
face="arial,helvetica,sanserif" size="+0">
                                <a href="samples/welcome">Samples</a>
  
                                - Are you being served?</font>
                             </td>
                          </tr>
  
                       </tbody>
                    </table>
                 </td>
              </tr>
           </tbody>
        </table>
  
        <p align="center">
           <br />
  
           <font size="-1">Copyright &#169; 1999-2002 
           <a href="http://www.apache.org/";>The Apache Software Foundation</a>
  
           . 
           <br />
  
           All rights reserved.</font>
        </p>
     </body>
  </html>
  
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to