jeremy      02/02/22 14:15:35

  Modified:    src/scratchpad/webapp/mount/editor README sitemap.xmap
               src/scratchpad/webapp/mount/editor/docs welcome.xml
               src/scratchpad/webapp/mount/editor/stylesheets
                        simple-page2html.xsl
  Added:       src/scratchpad/webapp/mount/editor editor.xmap test.xmap
               src/scratchpad/webapp/mount/editor/docs tests.xml xfwt.xml
               src/scratchpad/webapp/mount/editor/editor/docs editor.xml
                        template.xml
               src/scratchpad/webapp/mount/editor/editor/images dir.gif
                        file.gif get.gif new.gif view.gif
               src/scratchpad/webapp/mount/editor/editor/stylesheets
                        editor-components.xsl editor-page2html.xsl
                        editor-utils.xsl simple-page2html.xsl
                        stream2xfwt.xsl
               src/scratchpad/webapp/mount/editor/tests include-me.xml
                        make-page.xsl test1.xml test2.xml test3.xml
                        test4.xml test5.xml
  Removed:     src/scratchpad/webapp/mount/editor/docs include-me.xml
                        test1.xml test2.xml test3.xml test4.xml test5.xml
               src/scratchpad/webapp/mount/editor/stylesheets
                        directory2html.xsl make-page.xsl
  Log:
  Everything moved around to incorporate a new demo file editor
  
  Revision  Changes    Path
  1.2       +5 -0      xml-cocoon2/src/scratchpad/webapp/mount/editor/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/scratchpad/webapp/mount/editor/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README    15 Feb 2002 21:38:59 -0000      1.1
  +++ README    22 Feb 2002 22:15:34 -0000      1.2
  @@ -29,6 +29,11 @@
   
   BTW, the directory is called 'editor' because that is what I hope to turn it into, 
with a few more components.
   
  +To use this in your project, you need to add the 'editor' folder and 'editor.xmap' 
to your project, and add the 'editor pipelines' from the file 'sitemap.xmap' to your 
sitemap.
  +
  +Then you need to develop components for your particular document markup!
  +     ie. StyleSheets that understand your documents, editor config for your forms 
etc.
  +     I'll go into this in more detail at a later date.
   
   Thanks
   
  
  
  
  1.2       +25 -60    xml-cocoon2/src/scratchpad/webapp/mount/editor/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/scratchpad/webapp/mount/editor/sitemap.xmap,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sitemap.xmap      15 Feb 2002 21:38:59 -0000      1.1
  +++ sitemap.xmap      22 Feb 2002 22:15:34 -0000      1.2
  @@ -1,38 +1,10 @@
   <?xml version="1.0"?>
   
  -<!-- This sitemap shows what is possible and what is not allowed. -->
   <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
     <map:components>
       <map:generators default="file"/>
  -    <map:serializers default="html">
  -    
  -     <!-- You can define your own Serializer for FileWritingTransformer to use-->
  -    
  -                     <map:serializer
  -                             name="my-xml-serializer"
  -                             mime-type="text/xml" logger="sitemap.serializer.myxml"
  -                             src="org.apache.cocoon.serialization.XMLSerializer"
  -                     >
  -                             <!--<doctype-system>urn:hrc:doc</doctype-system>-->
  -                             <encoding>utf-8</encoding>
  -                             <omit-xml-declaration>no</omit-xml-declaration>
  -                     </map:serializer>
  -                     
  -    </map:serializers>
  -    <map:transformers default="xslt">
  -    
  -     <!-- Define 'filewriter' as the name for FileWritingTransformer -->
  -     <!-- You can set up the default Serialiser here -->
  -     <!-- You can also set it in the invocation tag below -->
  -     <!-- or place serializer="serializer-name" in the xfwt:write tag -->
  -     <!-- if you leave it out altogether, 'xml' is used -->
  -    
  -     <map:transformer name="filewriter" logger="sitemap.transformer.tofile"
  -                             
src="org.apache.cocoon.transformation.FileWritingTransformer">
  -                             <serializer>my-xml-serializer</serializer>
  -                     </map:transformer>
  -                     
  -    </map:transformers>
  +    <map:serializers default="html"/>
  +    <map:transformers default="xslt"/>
       <map:readers default="resource"/>
       <map:matchers default="wildcard"/>
       <map:selectors default="browser"/>
  @@ -47,43 +19,36 @@
                                <map:redirect-to uri="welcome"/>
                        </map:match>
   
  -     <!-- the welcome page -->
  -                     <map:match pattern="welcome">
  -                             <map:generate src="docs/welcome.xml"/>
  -                             <map:transform src="stylesheets/simple-page2html.xsl"/>
  -                             <map:serialize type="html"/>                           
                                 
  -                     </map:match>
  -     
  -     <!-- the tests -->
  -                     <map:match pattern="test*">
  -                             <map:generate src="docs/test{1}.xml"/>
  -                             <map:transform type="cinclude"/> <!-- only here for 
test4 -->
  -                             <map:transform type="filewriter"/> <!-- invoke the 
filewriter -->
  -                             <map:transform src="stylesheets/simple-page2html.xsl">
  -                                     <map:parameter name="view-source" 
value="docs/test{1}.xml"/>
  -                             </map:transform>
  -                             <map:serialize type="html"/>                           
                                 
  +<!-- start EDITING PIPELINES -->
  +<!-- We mount the Editor SiteMap into the same base as this SiteMap, so the Editor 
can reach this SiteMap's files -->
  +
  +                     <!-- slash-edit pipeline -->
  +                     <!-- edit/, edit/new, edit/get/*, edit/put/* -->
  +                     <map:match pattern="edit**">
  +                             <map:mount uri-prefix="edit" src="editor.xmap" 
check-reload="yes"/>
                        </map:match>
   
  -     <!-- the results -->
  -                     <map:match pattern="result*">
  -                             <map:generate src="docs/result{1}.xml"/>
  -                             <map:transform src="stylesheets/simple-page2html.xsl">
  -                                     <map:parameter name="view-source" 
value="docs/result{1}.xml"/>
  -                             </map:transform>
  -                             <map:serialize type="html"/>                           
                                 
  +                     <!-- test/result pipeline -->
  +                     <!-- /test/*, /result/*, result/*/* -->
  +                     <map:match pattern="*/**">
  +                             <map:mount uri-prefix="" src="test.xmap" 
check-reload="yes"/>
                        </map:match>
   
  -     <!-- the result of test3 -->
  -                     <map:match pattern="**result*">
  -                             <map:generate src="docs/{1}result{2}.xml"/>
  -                             <map:transform src="stylesheets/simple-page2html.xsl">
  -                                     <map:parameter name="view-source" 
value="docs/{1}result{2}.xml"/>
  -                             </map:transform>
  +<!-- end EDITING PIPELINES -->
  +
  +     <!-- view page -->
  +                     <map:match pattern="**">
  +                             <map:generate src="docs/{1}.xml"/>
  +                             <map:transform src="stylesheets/simple-page2html.xsl"/>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  -             </map:pipeline>
   
  +                     <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>
   
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/editor.xmap
  
  Index: editor.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html">
      
        <!-- You can define your own Serializer for FileWritingTransformer to use-->
      
                        <map:serializer
                                name="my-xml-serializer"
                                mime-type="text/xml" logger="sitemap.serializer.myxml"
                                src="org.apache.cocoon.serialization.XMLSerializer"
                        >
                                <!--<doctype-system>urn:hrc:doc</doctype-system>-->
                                <encoding>utf-8</encoding>
                                <omit-xml-declaration>no</omit-xml-declaration>
                                <indent>2</indent>
                        </map:serializer>
                        
      </map:serializers>
      <map:transformers default="xslt">
      
        <!-- Define 'filewriter' as the name for FileWritingTransformer -->
        <!-- You can set up the default Serialiser here -->
        <!-- You can also set it in the invocation tag below -->
        <!-- or place serializer="serializer-name" in the xfwt:write tag -->
        <!-- if you leave it out altogether, 'xml' is used -->
      
        <map:transformer name="filewriter" logger="sitemap.transformer.tofile"
                                
src="org.apache.cocoon.transformation.FileWritingTransformer" label="xfwt">
                                <serializer>my-xml-serializer</serializer>
                        </map:transformer>
                        
      </map:transformers>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
    </map:components>
  
        <map:views>
                <map:view name="content" from-label="content">
                        <map:serialize type="xml"/>
                </map:view>     
                <map:view name="xfwt" from-label="xfwt">
                        <map:serialize type="xml"/>
                </map:view>     
        </map:views>
  
    <map:pipelines>
  
                <map:pipeline internal-only="true">
  
                        <!-- internal pipelines, so aggregation can be used with these 
components -->
  
        <!-- directory listing, limited to the contents of your project's 'docs' 
folder -->
                        <map:match pattern="dir/**">
                                <map:generate type="directory" src="docs/{1}"/>        
                                 <!-- enforce the use of 'docs'-->
                                <map:serialize type="xml"/>                            
                                 
                        </map:match>
  
        <!-- parse form data -->
                        <map:match pattern="stream">
                                <map:generate type="stream">
                                        <map:parameter name="form-name" 
value="content"/>
                                </map:generate>
                                <map:serialize type="xml"/>                            
                                 
                        </map:match>
  
                </map:pipeline>
  
  
      <map:pipeline>
  
        <!-- the default page -->
                        <map:match pattern="">
                                <map:redirect-to uri="welcome"/>
                        </map:match>
                        <map:match pattern="/">
                                <map:redirect-to uri="welcome"/>
                        </map:match>
                        <map:match pattern="welcome">
                                <map:generate src="editor/docs/welcome.xml"/>
                                <map:transform 
src="editor/stylesheets/simple-page2html.xsl"/>
                                <map:serialize type="html"/>                           
         
                        </map:match>
  
        <!-- directory images -->
                        <map:match pattern="**image/*.gif">
                                <map:read src="editor/images/{2}.gif" 
mime-type="image/gif"/>
                        </map:match>
  
  
                        <!--
                        
                                The behaviour pipelines
                                
                                Beware of the slashes added to the 'target-dir' 
parameter.
                                The stylesheets expect to recieve directory paths with 
a slash at either end,
                                so the Sitemap (who removed then dure to matching 
technique) must replace them.
                                
                                This is not the case for the 'put' behaviour, the 
'target-dir' parameter 
                                arrived complete in a form field, it was not derived 
by the sitemap.
                                
                                Also be careful of the various places where use of the 
parent sitemap's 'docs' folder is enforced
                                
                        -->
  
        <!-- view your site's pages in the editor -->
                        <map:match pattern="view/**/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="docs/{1}/{2}"/>                 
                                                                                 <!-- 
enforce the use of 'docs'-->
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{2}"/>
                                        <map:parameter name="target-dir" 
value="/{1}/"/>
                                        <map:parameter name="behaviour" value="view"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- view your site's pages in the editor, from root -->
                        <map:match pattern="view/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="docs/{1}"/>                     
                                                                                       
          <!-- enforce the use of 'docs'-->
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{1}"/>
                                        <map:parameter name="target-dir" value="/"/>
                                        <map:parameter name="behaviour" value="view"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- the any directory -->
                        <map:match pattern="dir/**/">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="cocoon:/dir/{1}"/>
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-dir" 
value="/{1}/"/>
                                        <map:parameter name="behaviour" value="dir"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- the default directory -->
                        <map:match pattern="dir/">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="cocoon:/dir/"/>
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-dir" value="/"/>
                                        <map:parameter name="behaviour" value="dir"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- make a new page with a form -->
                        <map:match pattern="new/**/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="editor/docs/template.xml"/>
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{2}"/>
                                        <map:parameter name="target-dir" 
value="/{1}/"/>
                                        <map:parameter name="behaviour" value="new"/>
                                        <map:parameter name="form-name" 
value="content"/>
                                </map:transform>
                                <map:serialize type="html"/>
                        </map:match>
  
        <!-- make a new page with a form in the root -->
                        <map:match pattern="new/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="editor/docs/template.xml"/>
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{1}"/>
                                        <map:parameter name="target-dir" value="/"/>
                                        <map:parameter name="behaviour" value="new"/>
                                        <map:parameter name="form-name" 
value="content"/>
                                </map:transform>
                                <map:serialize type="html"/>
                        </map:match>
  
        <!-- the get a page as a form -->
                        <map:match pattern="get/**/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="docs/{1}/{2}"/>                 
                                                                                 <!-- 
enforce the use of 'docs'-->
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{2}"/>
                                        <map:parameter name="target-dir" 
value="/{1}/"/>
                                        <map:parameter name="behaviour" value="get"/>
                                        <map:parameter name="form-name" 
value="content"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- the get a page as a form from the root -->
                        <map:match pattern="get/*">
                                <map:aggregate element="root" label="content">
                                        <map:part src="editor/docs/editor.xml"/>
                                        <map:part src="docs/{1}"/>                     
                                                                                       
          <!-- enforce the use of 'docs'-->
                                </map:aggregate>
                                <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                        <map:parameter name="target-file" value="{1}"/>
                                        <map:parameter name="target-dir" value="/"/>
                                        <map:parameter name="behaviour" value="get"/>
                                        <map:parameter name="form-name" 
value="content"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- the post a page from a form -->
        <!-- unlike the other matchers, this one receives 'complete' paths ie. 
requires no addition of slashes -->
                        <map:match pattern="put">
                                <map:act type="request">
                                        <map:parameter name="parameters" value="true"/>
                                        <map:aggregate element="root" label="content">
                                                <map:part 
src="editor/docs/editor.xml"/>
                                                <map:part src="cocoon:/stream"/>
                                        </map:aggregate>
                                        <map:transform 
src="editor/stylesheets/stream2xfwt.xsl">
                                                <map:parameter name="target-file" 
value="{target-file}"/>
                                                <map:parameter name="target-dir" 
value="docs{target-dir}"/><!-- enforce saving in docs folder of main project. Do not 
put a slash after docs, the target-dir already has the correct ones -->
                                        </map:transform>
                                        <map:transform type="filewriter"/>
                                        <map:transform 
src="editor/stylesheets/editor-page2html.xsl">
                                                <map:parameter name="target-file" 
value="{target-file}"/>
                                                <map:parameter name="target-dir" 
value="{target-dir}"/>
                                                <map:parameter name="behaviour" 
value="put"/>
                                        </map:transform>
                                        <map:serialize type="html"/>
                                </map:act>                                             
 
                        </map:match>
  
                        <map:handle-errors>
                                <!--<map:transform 
src="context://stylesheets/system/error2html.xsl"/>
                                <map:serialize status-code="500"/>-->
                                <map:serialize type="xml" status-code="500"/>
                        </map:handle-errors>
                        <map:handle-errors type="404">
                                <map:transform 
src="context://stylesheets/system/error2html.xsl"/>
                                <map:serialize/>
                        </map:handle-errors>
                
                </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/test.xmap
  
  Index: test.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html">
      
        <!-- You can define your own Serializer for FileWritingTransformer to use-->
      
                        <map:serializer
                                name="my-xml-serializer"
                                mime-type="text/xml" logger="sitemap.serializer.myxml"
                                src="org.apache.cocoon.serialization.XMLSerializer"
                        >
                                <!--<doctype-system>urn:hrc:doc</doctype-system>-->
                                <encoding>utf-8</encoding>
                                <omit-xml-declaration>no</omit-xml-declaration>
                                <indent>2</indent>
                        </map:serializer>
                        
      </map:serializers>
      <map:transformers default="xslt">
      
        <!-- Define 'filewriter' as the name for FileWritingTransformer -->
        <!-- You can set up the default Serialiser here -->
        <!-- You can also set it in the invocation tag below -->
        <!-- or place serializer="serializer-name" in the xfwt:write tag -->
        <!-- if you leave it out altogether, 'xml' is used -->
      
        <map:transformer name="filewriter" logger="sitemap.transformer.tofile"
                                
src="org.apache.cocoon.transformation.FileWritingTransformer">
                                <serializer>my-xml-serializer</serializer>
                        </map:transformer>
                        
      </map:transformers>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
    </map:components>
  
    <map:pipelines>
  
      <map:pipeline>
  
        
     <!-- the tests -->
                        <map:match pattern="test/4">
                                <map:generate src="tests/test4.xml"/>
                                <map:transform type="cinclude"/>
                                <map:transform type="filewriter"/>
                                <map:transform src="stylesheets/simple-page2html.xsl">
                                        <map:parameter name="view-source" 
value="tests/test4.xml"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
                        <map:match pattern="test/5">
                                <map:generate src="tests/test5.xml"/>
                                <map:transform src="tests/make-page.xsl"/>
                                <!--<map:transform type="log">
                                        <map:parameter name="logfile" 
value="test1.log"/>
                                        <map:parameter name="append" value="no"/>
                                </map:transform>-->
                                <map:transform type="filewriter">
                                        <map:parameter name="serializer" value="xml"/> 
<!-- invoke the filewriter with 'xml' serializer -->
                                </map:transform> 
                                <map:transform src="stylesheets/simple-page2html.xsl">
                                        <map:parameter name="view-source" 
value="tests/test5.xml"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
                        <map:match pattern="test/*">
                                <map:generate src="tests/test{1}.xml"/>
                                <map:transform type="filewriter"/>
                                <map:transform src="stylesheets/simple-page2html.xsl">
                                        <map:parameter name="view-source" 
value="tests/test{1}.xml"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
   <!-- the results -->
                        <map:match pattern="result/*">
                                <map:generate src="tests/result{1}.xml"/>
                                <map:transform src="stylesheets/simple-page2html.xsl">
                                        <map:parameter name="view-source" 
value="tests/result{1}.xml"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
  
        <!-- the result of test3 -->
                        <map:match pattern="result/*/*">
                                <map:generate src="tests/{1}/result{2}.xml"/>
                                <map:transform src="stylesheets/simple-page2html.xsl">
                                        <map:parameter name="view-source" 
value="tests/{1}/result{2}.xml"/>
                                </map:transform>
                                <map:serialize type="html"/>                           
                                 
                        </map:match>
                </map:pipeline>
  
    </map:pipelines>
  </map:sitemap>
  
  <!-- end of file -->
  
  
  
  1.3       +10 -128   xml-cocoon2/src/scratchpad/webapp/mount/editor/docs/welcome.xml
  
  Index: welcome.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/scratchpad/webapp/mount/editor/docs/welcome.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- welcome.xml       16 Feb 2002 20:21:41 -0000      1.2
  +++ welcome.xml       22 Feb 2002 22:15:35 -0000      1.3
  @@ -1,132 +1,14 @@
   <?xml version="1.0" encoding="utf-8"?>
   
   <page>
  -     <title>FileWritingTransformer</title>
  -     <content>
  -
  -             
  -             <para>
  -                     Uses the tag <pre>&lt;xfwt:write src="path-to-file" 
[serializer="serializer-name"]/&gt;</pre> 
  -                     in the namespace 
xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";.
  -             </para>
  -                             
  -             <para>
  -                     The contents of this tag are Serialised to file when the 
document containing it is transformed by FileWritingTransformer.
  -             </para>
  -                             
  -             <para>
  -                     SiteMap:
  -             </para>
  -                             
  -             <para>
  -                     FileWritingTransformer is defined using XML like this:
  -             </para>
  -             
  -             <para>
  -<pre>
  -     &lt;map:transformer name="filewriter" logger="sitemap.transformer.filewriter"
  -             src="org.apache.cocoon.transformation.FileWritingTransformer"&gt;
  -             [&lt;serializer&gt;my-xml-serializer&lt;/serializer&gt;]
  -     &lt;/map:transformer&gt;
  -</pre>
  -             </para>
  -             
  -             <para>
  -                     The default Serializer, if none is specified is 'xml'.
  -                     You can specify the Serializer in 3 different places, 
  -                     SiteMap Definition, SiteMap Invocation and in the 'serializer 
attribute of the '&lt;xfwt:write/&gt;' Tag.
  -                     In the examples, something surrounded by [ and ] is optional.
  -             </para>                         
  -                             
  -             <para>
  -                     The Serializer you want to use has to be defined somewhere in 
the SiteMap hierarchy, 
  -                     if you need a special one, set it up how you set up any other 
Serializer.
  -             </para>
  -             
  -             <para>
  -<pre>
  -     &lt;map:serializer
  -             name="my-xml-serializer"
  -             mime-type="text/xml" logger="sitemap.serializer.myxml"
  -             src="org.apache.cocoon.serialization.XMLSerializer"
  -     &gt;
  -             &lt;encoding&gt;utf-8&lt;/encoding&gt;
  -             &lt;omit-xml-declaration&gt;no&lt;/omit-xml-declaration&gt;
  -     &lt;/map:serializer&gt;
  -</pre>
  -             </para>
  -             
  -             
  -             <para>
  -                     In the pipeline, you use XML like this to allow 
FileWritingTransformer to do it's job, 
  -                     again specifying the Serializer to use here is optional.
  -             </para>
  -             
  -             <para>
  -<pre>
  -     &lt;map:transform type="filewriter"&gt;
  -             [&lt;map:parameter name="serialiser" value="my-xml-serialiser"/&gt;]
  -     &lt;/map:transform&gt;
  -</pre>
  -             </para>
  -             
  -             <para>
  -                     Document:
  -             </para>
  -                             
  -             <para>
  -                     Something like this XML Fragment somewhere in the Document 
being processed, 
  -                     will result in an XML file being written at the location 
specified, 
  -                     with the <page/> tag as the Document Root.
  -             </para>
  -                             
  -             <para>
  -<pre>
  -     &lt;xfwt:write src="docs/result1.xml" [serializer="my-xml-serializer"]&gt;
  -             &lt;page&gt;
  -                     &lt;title&gt;FileWritingTransformer Test Result 1&lt;/title&gt;
  -                     &lt;content&gt;
  -                             &lt;para&gt;Congratulations!&lt;/para&gt;
  -                     &lt;/content&gt;
  -             &lt;/page&gt;
  -     &lt;/xfwt:write&gt;
  -</pre>
  -             </para>
  -                             
  -             <para>
  -                     This XMLFragment (or your equivalent) could have got into the 
stream by any means available to the Cocoon2 SiteMap.
  -                     Generation, Transformation, Aggregation, Inclusion etc.
  -                     Again, the serializer attribute is optional.
  -             </para>
  -                             
  -             <para>
  -                     Tests: Please run these tests and report any problems.
  -             </para>
  -             <para>
  -                     Test 1: <a href="test1">Test 1</a>: the basic test, makes <a 
href="result1">Result 1</a>.
  -             </para>
  -             <para>
  -                     Test 2: <a href="test2">Test 2</a>: the namespace test, makes 
<a href="result2">Result 2</a>, with the XLink namespace used inside.
  -             </para>
  -             <para>
  -                     Test 3: <a href="test3">Test 3</a>: the new folder test, makes 
<a href="newfolder/result3">Result 3</a>, in a new folder.
  -             </para>
  -             <para>
  -                     Test 4: <a href="test4">Test 4</a>: the XInclude test, makes 
<a href="result4">Result 4</a>, having XIncluded the content earlier in the pipeline.
  -             </para>
  -             <para>
  -                     Test 5: <a href="test5">Test 5</a>: the XSLT test, a <a 
href="../../view-source?filename=mount/editor/stylesheets/make-page.xsl">StyleSheet</a>
 makes <a href="result5">Result 5</a>, from parts of <a href="test5">Test 5</a>.
  -             </para>
  -                             
  -                             
  -             <para>
  -                     Known Problems:
  -             </para>
  -             <para>
  -                     You get double NS declarations if the same NS exists in the 
Generated and XIncluded document.
  -             </para>
  -             <para>
  -                     The NS declaration for xfwt is always copied to the output 
file.
  -             </para>
  -     </content>
  + <title>Experimental File Editing Pipelines</title>
  + <content>
  +  <para>Please try the <a href="tests">tests</a>
  +</para>
  +  <para>Please try out the demo file editor <a href="edit/">&lt;slash-edit/&gt;</a>
  +</para>
  +  <para>This suite uses the <a href="xfwt">FileWritingTransformer</a>
  +</para>
  +  
  + </content>
   </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/docs/tests.xml
  
  Index: tests.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page>
   <title>FileWritingTransformer Tests</title>
   <content>
    <para>
        Tests: Please run these tests and report any problems.
    </para>
    <para>
        Test 1: <a href="test/1">Test 1</a>: the basic test, makes <a 
href="result/1">Result 1</a>.
    </para>
    <para>
        Test 2: <a href="test/2">Test 2</a>: the namespace test, makes <a 
href="result/2">Result 2</a>, with the XLink namespace used inside.
    </para>
    <para>
    Test 3: <a href="test/3">Test 3</a>: the new folder test, makes <a 
href="result/newfolder/3">Result 3</a>, in a new folder.
    </para>
    <para>
        Test 4: <a href="test/4">Test 4</a>: the XInclude test, makes <a 
href="result/4">Result 4</a>, having XIncluded the content earlier in the pipeline.
    </para>
    <para>
        Test 5: <a href="test/5">Test 5</a>: the XSLT test, a <a 
href="../../view-source?filename=mount/editor/stylesheets/make-page.xsl">StyleSheet</a>
 makes <a href="result/5">Result 5</a>, from parts of <a href="test/5">Test 5</a>.
    </para>
   </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/docs/xfwt.xml
  
  Index: xfwt.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page>
   <title>FileWritingTransformer</title>
   <content>
  
    <para>Please try the <a href="tests">tests</a></para>
    
    <para>
     Uses the tag <pre>&lt;xfwt:write src="path-to-file" 
[serializer="serializer-name"]/&gt;</pre> 
     in the namespace xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";.
    </para>
      
    <para>
     The contents of this tag are Serialised to file when the document containing it 
is transformed by FileWritingTransformer.
    </para>
      
    <para>
     SiteMap:
    </para>
      
    <para>
     FileWritingTransformer is defined using XML like this:
    </para>
    
    <para>
  <pre>
   &lt;map:transformer name="filewriter" logger="sitemap.transformer.filewriter"
    src="org.apache.cocoon.transformation.FileWritingTransformer"&gt;
    [&lt;serializer&gt;my-xml-serializer&lt;/serializer&gt;]
   &lt;/map:transformer&gt;
  </pre>
    </para>
    
    <para>
     The default Serializer, if none is specified is 'xml'.
     You can specify the Serializer in 3 different places, 
     SiteMap Definition, SiteMap Invocation and in the 'serializer attribute of the 
'&lt;xfwt:write/&gt;' Tag.
     In the examples, something surrounded by [ and ] is optional.
    </para>    
      
    <para>
     The Serializer you want to use has to be defined somewhere in the SiteMap 
hierarchy, 
     if you need a special one, set it up how you set up any other Serializer.
    </para>
    
    <para>
  <pre>
   &lt;map:serializer
    name="my-xml-serializer"
    mime-type="text/xml" logger="sitemap.serializer.myxml"
    src="org.apache.cocoon.serialization.XMLSerializer"
   &gt;
    &lt;encoding&gt;utf-8&lt;/encoding&gt;
    &lt;omit-xml-declaration&gt;no&lt;/omit-xml-declaration&gt;
   &lt;/map:serializer&gt;
  </pre>
    </para>
    
    
    <para>
     In the pipeline, you use XML like this to allow FileWritingTransformer to do it's 
job, 
     again specifying the Serializer to use here is optional.
    </para>
    
    <para>
  <pre>
   &lt;map:transform type="filewriter"&gt;
    [&lt;map:parameter name="serialiser" value="my-xml-serialiser"/&gt;]
   &lt;/map:transform&gt;
  </pre>
    </para>
    
    <para>
     Document:
    </para>
      
    <para>
     Something like this XML Fragment somewhere in the Document being processed, 
     will result in an XML file being written at the location specified, 
     with the <page/> tag as the Document Root.
    </para>
      
    <para>
  <pre>
   &lt;xfwt:write src="docs/result1.xml" [serializer="my-xml-serializer"]&gt;
    &lt;page&gt;
     &lt;title&gt;FileWritingTransformer Test Result 1&lt;/title&gt;
     &lt;content&gt;
      &lt;para&gt;Congratulations!&lt;/para&gt;
     &lt;/content&gt;
    &lt;/page&gt;
   &lt;/xfwt:write&gt;
  </pre>
    </para>
      
    <para>
     This XMLFragment (or your equivalent) could have got into the stream by any means 
available to the Cocoon2 SiteMap.
     Generation, Transformation, Aggregation, Inclusion etc.
     Again, the serializer attribute is optional.
    </para>
      
      
    <para>
     Known Problems:
    </para>
  
    <para>If you have an error while editing an existing file, the file will probably 
be trashed by the process.</para>
  
  
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/docs/editor.xml
  
  Index: editor.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <editor title="&lt;slash-edit/&gt;">
  
  <!-- Use this file to modify the text the editor displays -->
  <!-- if you want to change the names of the 'behaviours' make the same changes in 
the editor.xmap! -->
  
  <!-- Various display strings -->
        <title behaviour="new">Make a new Page</title>
        <title behaviour="get">Edit a Page</title>
        <title behaviour="put">Save Results</title>
        <title behaviour="view">View a Page</title>
        <title behaviour="dir">Directory Listing</title>
        
        <notify behaviour="new">Making a new File at</notify>
        <notify behaviour="get">Editing the File at</notify>
        <notify behaviour="put">Results of saving a file at</notify>
        <notify behaviour="view">Viewing the File at</notify>
        <notify behaviour="dir">Directory Listing of</notify>
  
        <notes behaviour="new">Please edit the XML, then click the 'Make New File' 
button below</notes>
        <notes behaviour="get">Please edit the XML, then click the 'Save My Changes' 
button below</notes>
        <notes behaviour="put">Thanks for using &lt;slash-edit/&gt;</notes>
        <notes behaviour="view">This is the editor-view of your file, internal links 
are not likely to work correctly.</notes>
        <notes behaviour="dir">Please choose a file to view</notes>
  
  <!-- The commands -->
        <command behaviour="new" tip="Make a new File" icon="new.gif">new</command>
        <command behaviour="get" tip="Edit this File" icon="get.gif">get</command>
        <command behaviour="put">put</command>
        <command behaviour="view" tip="View this File" icon="view.gif">view</command>
        <command behaviour="dir" tip="View Directory listing" 
icon="dir.gif">dir</command>
  
  <!-- text for form buttons -->        
        <button behaviour="new">Make New File</button>
        <button behaviour="get">Save My Changes</button>
  
  <!-- the tools available to each behaviour -->
        <tools behaviour="new">
                <tool command="dir"/>
                <tool command="new"/>
        </tools>
        <tools behaviour="get">
                <tool command="dir"/>
                <tool command="new"/>
                <tool command="view"/>
        </tools>
        <tools behaviour="put">
                <tool command="dir"/>
                <tool command="new"/>
                <tool command="get"/>
                <tool command="view"/>
        </tools>
        <tools behaviour="view">
                <tool command="dir"/>
                <tool command="new"/>
                <tool command="get"/>
        </tools>
        <tools behaviour="dir">
                <tool command="new"/>
        </tools>
  
  <!-- what to call the parent directory link -->
        <parent-dir tip="View Parent Directory listing">..</parent-dir>
  </editor>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/docs/template.xml
  
  Index: template.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <page>
   <title> - please write your title here - </title>
   <content>
    <para> - you can put in any number of paragraphs - </para>
   </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/images/dir.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/images/file.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/images/get.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/images/new.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/images/view.gif
  
        <<Binary file>>
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/stylesheets/editor-components.xsl
  
  Index: editor-components.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";
   xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";>
  
  
  
  <!-- your form for editing content -->
        <xsl:template match="page" mode="form">
                <form method="post">
                        <xsl:attribute name="action"><xsl:value-of 
select="$command-base"/><xsl:value-of select="$config/command[@behaviour = 
'put']/text()"/></xsl:attribute>
                        <table border="0" cellspacing="0" cellpadding="5" width="100%">
                                <tr>
                                        <td colspan="2"><textarea name="{$form-name}" 
rows="20" cols="80" xml:space="preserve" onchange="changed=true;"><xsl:apply-templates 
select="."/></textarea></td>
                                </tr>
                                <tr>
                                        <td valign="middle">
                                                <span class="caption">Save as:</span> 
<input type="text" name="target-file" value="{$newfile}" size="40" title="Note: to 
make a new directory, prepend the filename with a directory path"/>
                                        </td>
                                        <td align="right">
                                                <input type="hidden" name="target-dir" 
value="{$target-dir}"/>
                                                <input type="submit" 
value="{$config/button[@behaviour = $behaviour]}"/>
                                        </td>
                                </tr>
                        </table>                                                
                </form> 
    </xsl:template>
  
  <!-- supply mode="view" templates for your project's document elements, used only in 
view-mode -->
  
        <xsl:template match="page" mode="view">
                <div class="page"><xsl:apply-templates mode="view"/></div>             
 
    </xsl:template>
  
        <xsl:template match="content" mode="view">
                <div class="content"><xsl:apply-templates mode="view"/></div>
    </xsl:template>
    
        <xsl:template match="title" mode="view">
                <h2><xsl:apply-templates/></h2>
    </xsl:template>
    
        <xsl:template match="para" mode="view">
                <p><xsl:apply-templates/></p>
    </xsl:template>
  
  <!-- output the tools for this page -->
        <xsl:template match="tools">
                <xsl:for-each select="tool">
                        <xsl:variable name="com" select="@command"/>
                        <xsl:variable name="command" 
select="$config/command[@behaviour = $com]"/>
                        <td width="20">
                                <a title="{$command/@tip}">
                                        <xsl:attribute name="href">
                                                <xsl:if test="$is-form = 
'true'"><xsl:text>javascript:exit('</xsl:text></xsl:if>
                                                <xsl:choose>
                                                        <xsl:when test="$com = 
'dir'"><xsl:value-of select="$command-base"/><xsl:value-of 
select="$command/text()"/><xsl:value-of select="$target-dir"/></xsl:when>
                                                        <xsl:otherwise><xsl:value-of 
select="$command-base"/><xsl:value-of select="$command/text()"/><xsl:value-of 
select="$target-path"/></xsl:otherwise>
                                                </xsl:choose>
                                                <xsl:if test="$is-form = 
'true'"><xsl:text>');</xsl:text></xsl:if>
                                        </xsl:attribute>
                                        <img src="{concat('image/',$command/@icon)}" 
border="0"/>
                                </a>
                        </td>
                </xsl:for-each>
        </xsl:template>
  
  <!-- Displays the directory listing -->
    <xsl:template match="dir:directory">
     <table border="0" cellspacing="0" cellpadding="5" width="100%" bgcolor="white">
                 <tr>
                        <td width="20">
                         <a href="../" title="{$config/parent-dir/@tip}">
          <img src="{concat('image/',$config/command[@behaviour = 'dir']/@icon)}" 
border="0"/>
         </a>
        </td>
                        <td colspan="2">
                         <a href="../" 
title="{$config/parent-dir/@tip}"><b><xsl:value-of 
select="$config/parent-dir/text()"/></b></a>
                        </td>
                        <td><xsl:value-of select="@date"/></td>
                 </tr>
                 <xsl:apply-templates/>
     </table>
    </xsl:template>
  
  <!-- Displays sub-directories -->
    <xsl:template match="dir:directory/dir:directory">
     <tr>
      <td></td>
      <td width="20" align="right">
       <a href="{@name}/" title="{$config/command[@behaviour = 'dir']/@tip}">
        <img src="{concat('image/',$config/command[@behaviour = 'dir']/@icon)}" 
border="0"/>
       </a>
      </td>
      <td>
       <a href="{@name}/" title="{$config/command[@behaviour = 
'dir']/@tip}"><xsl:value-of select="@name"/></a>
      </td>
      <td>
       <xsl:value-of select="@date"/>
      </td>
     </tr>
    </xsl:template>
  
  <!-- Displays files in the directory listing -->
    <xsl:template match="dir:file">
     <tr>
      <td></td>
      <td width="20" align="right">
       <a title="{$config/command[@behaviour = 'view']/@tip}">
        <xsl:attribute name="href"><xsl:value-of select="$command-base"/><xsl:value-of 
select="$config/command[@behaviour = 'view']/text()"/><xsl:value-of 
select="$target-path"/><xsl:value-of select="@name"/></xsl:attribute>
        <img src="{concat('image/',$config/command[@behaviour = 'view']/@icon)}" 
border="0"/>
       </a>
      </td>
      <td width="60%">
       <a title="{$config/command[@behaviour = 'view']/@tip}">
        <xsl:attribute name="href"><xsl:value-of select="$command-base"/><xsl:value-of 
select="$config/command[@behaviour = 'view']/text()"/><xsl:value-of 
select="$target-path"/><xsl:value-of select="@name"/></xsl:attribute>
        <xsl:value-of select="@name"/>
       </a>
      </td>
      <td>
       <xsl:value-of select="@date"/>
      </td>
     </tr>
    </xsl:template>
   
  <!-- outputs the response from FileWritingTransformer -->
    <xsl:template match="xfwt:write">
                <table border="0" cellspacing="0" cellpadding="5" width="100%">
                        <tr>
                                <td class="caption">Result</td>
                                <td class="result">
                                        <span class="{@result}">
                                                <xsl:value-of select="@result"/>
                                        </span>
                                </td>
                        </tr>
                        <xsl:if test="@result = 'failed'">
                                <tr>
                                        <td class="caption">Error</td>
                                        <td class="result">
                                                <span class="{@result}">
                                                        <xsl:value-of select="text()"/>
                                                </span>
                                        </td>
                                </tr>                                   
                        </xsl:if>
                        <tr>
                                <td class="caption">Source</td>
                                <td class="result">
                                        <xsl:value-of select="@src"/>
                                </td>
                        </tr>
                        <tr>
                                <td class="caption">Action</td>
                                <td class="result">
                                        <xsl:choose>
                                                <xsl:when test="@action = 'new'">New 
file created</xsl:when>
                                                <xsl:otherwise>Existing file 
overwritten</xsl:otherwise>
                                        </xsl:choose>
                                </td>
                        </tr>
                        <tr>
                                <td class="caption">Serializer</td>
                                <td class="result">
                                        <xsl:value-of select="@serializer"/>
                                </td>
                        </tr>
                </table>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/stylesheets/editor-page2html.xsl
  
  Index: editor-page2html.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";
   xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";>
  
        <!-- 
                This is the main Editor Stylesheet
                It adapts itself to the particular command being sent in the 
'behaviour' parameter.
                It uses information stored in 'editor/docs/editor.xml' to work out the 
commands, static strings etc.
        -->
  
        <xsl:include href="editor-utils.xsl"/>                                         
                 <!-- utility templates and variables -->
        <xsl:include href="editor-components.xsl"/>                                    
         <!-- special display templates -->
  
        <xsl:template match="root">
     <html>
     <head>
      <title><xsl:value-of select="$config/@title"/> - <xsl:value-of 
select="$config/title[@behaviour = $behaviour]"/> - <xsl:value-of 
select="title"/></title>
      <xsl:if test="$is-form = 'true'">
                        <script lang="JavaScript"><![CDATA[
                                <!--
                                var changed = false;
                                function exit(to){
                                        if (changed == true) {
                                                if (confirm("Are you sure you want to 
loose your changes?")) {
                                                        document.location.href = to;
                                                }
                                        } else {
                                                document.location.href = to;
                                        }
                                        //return false;
                                }//-->]]>
                        </script>
      </xsl:if>
      
      <style><![CDATA[
     <!--
                a{text-decoration:none}
                a:hover{text-decoration:underline}
        body{font-family : sans-serif,Arial,Tahoma;color:black;background-color : 
white;} 
                        form{font-size:12px;background:#0086B2}
                        .notify{font-size:15px;}
                        
.notes{font-size:12px;font-weight:bold;color:white;background:#0086B2}
                        .result{font-size:12px;color:black}
                        .failure{font-size:12px;font-weight:bold;color:red}
                        .success{font-size:12px;color:black}
                        .caption{font-size:12px;font-weight:bold;color:black;}
                        textarea{font-size:12px;font-family : geneva,arial,sans-serif;}
     //-->]]>
      </style>
      </head>
      <body> <center>
       <h1>&#160;<xsl:value-of select="$config/@title"/> - site editor demo</h1>
       <table border="0" cellspacing="1" cellpadding="0" bgcolor="#0086B2" width="90%">
        <tr>
         <td>
                                <table border="0" cellspacing="0" cellpadding="5" 
width="100%" bgcolor="white">
                                        <tr>
                                                <td class="notify"><b><xsl:value-of 
select="$config/notify[@behaviour = $behaviour]"/>:</b>&#160;<xsl:value-of 
select="$target-path"/></td>
                                                <xsl:apply-templates 
select="$config/tools[@behaviour = $behaviour]"/>
                                        </tr>
                                </table>
         </td>
        </tr>
        <tr>
         <td bgcolor="white">
          <xsl:choose>
                                        <xsl:when test="$behaviour = 'new' or 
$behaviour = 'get'"><xsl:apply-templates select="page" mode="form"/></xsl:when>
                                        <xsl:when test="$behaviour = 
'put'"><xsl:apply-templates select="xfwt:write"/></xsl:when>
                                        <xsl:when test="$behaviour = 
'view'"><xsl:apply-templates select="page" mode="view"/></xsl:when>
                                        <xsl:when test="$behaviour = 
'dir'"><xsl:apply-templates select="dir:directory"/></xsl:when>
                                        <xsl:otherwise>Houston, we have a 
problem.</xsl:otherwise>
                                </xsl:choose>
         </td>
        </tr>
        <tr>
         <td>
                                <table border="0" cellspacing="0" cellpadding="5" 
width="100%" bgcolor="white">
                                        <tr>
                                                <td class="notes"><xsl:apply-templates 
select="$config/notes[@behaviour = $behaviour]"/></td>
                                        </tr>
                                </table>
         </td>
        </tr>
       </table>
       </center>
                <!--    debug
                        <table>
                                <tr>
                                        <td>target-file</td> <td><xsl:value-of 
select="$target-file"/></td>
                                </tr>
                                <tr>
                                        <td>target-dir</td> <td><xsl:value-of 
select="$target-dir"/></td>
                                </tr>
                                <tr>
                                        <td>behaviour</td> <td><xsl:value-of 
select="$behaviour"/></td>
                                </tr>
                                <tr>
                                        <td>form-name</td> <td><xsl:value-of 
select="$form-name"/></td>
                                </tr>
                        </table>  -->
                <!-- / debug  -->
                
                 <p align="center">
       <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>
    </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/editor/stylesheets/editor-utils.xsl
  
  Index: editor-utils.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  >
  
  <!-- standard SiteMap parameters -->
        <xsl:param name="target-file"/>
        <xsl:param name="target-dir"/>
        <xsl:param name="behaviour"/>
        <xsl:param name="form-name"/>
  
  <!-- the aggregated editor-config document -->
        <xsl:variable name="config" select="/root/editor"/>
  
  <!-- the relative base for commands -->
        <xsl:variable name="command-base">
         <xsl:if test="$behaviour != 'put'">
          <xsl:call-template name="find-base">
                 <xsl:with-param name="dir"><xsl:value-of 
select="$target-dir"/></xsl:with-param>
          </xsl:call-template>
         </xsl:if>
        </xsl:variable>
  
  <!-- Do we have a form on this page? -->
        <xsl:variable name="is-form">
                <xsl:choose>
                        <xsl:when test="$behaviour = 'get' or $behaviour = 
'new'">true</xsl:when>
                        <xsl:otherwise>false</xsl:otherwise>
                </xsl:choose>
        </xsl:variable>
        
  <!-- the full target path, including filename, not including 'docs' -->
    <xsl:variable name="target-path">
                <xsl:value-of select="$target-dir"/><xsl:value-of 
select="$target-file"/>
    </xsl:variable>
  
  <!-- what to give as the default name of a new file -->
        <xsl:variable name="newfile">
                <xsl:choose>
                        <xsl:when test="$target-file != ''"><xsl:value-of 
select="$target-file"/></xsl:when>
                        <xsl:otherwise>new.xml</xsl:otherwise>
                </xsl:choose>
        </xsl:variable>
  
  <!-- find the command base, relative to the current folder -->
        <xsl:template name="find-base">
                <xsl:param name="dir"/>
                <xsl:param name="prefix"></xsl:param>
                <xsl:choose>
                        <xsl:when test="$dir != ''">
                                <xsl:call-template name="find-base">
                                        <xsl:with-param name="dir"><xsl:value-of 
select="substring-after($dir,'/')"/></xsl:with-param>
                                        <xsl:with-param name="prefix"><xsl:value-of 
select="concat($prefix,'../')"/></xsl:with-param>
                                </xsl:call-template>
                        </xsl:when>
                        <xsl:otherwise><xsl:value-of select="$prefix"/></xsl:otherwise>
                </xsl:choose>
        </xsl:template>
  
  <!-- copy anything -->
    <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/scratchpad/webapp/mount/editor/editor/stylesheets/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";
        xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";
  >
  
  <!-- this stylesheet is currently only used to display the editor/edit/welcome page 
-->
  
    <xsl:template match="page">
     <html>
      <head>
       <title>
        <xsl:value-of select="title"/>
       </title>
       <style><![CDATA[
                 <!--
                                a{text-decoration:none}
                                a:hover{text-decoration:underline}
                                body{font-family : 
sans-serif,Arial,Tahoma;color:black;background-color : white;font-size:12px;} 
                                td{font-family : 
sans-serif,Arial,Tahoma;color:black;background-color : white;font-size:12px;} 
                 //-->]]>
      </style>
      </head>
      <body bgcolor="white">
                 <center>
       <h1>&#160;<xsl:value-of select="title"/> - site editor demo</h1>
       <table border="0" cellspacing="1" cellpadding="0" bgcolor="#0086B2" width="90%">
        <tr>
         <td>
                                <table border="0" cellspacing="0" cellpadding="5" 
width="100%" bgcolor="white">
                                        <tr>
                                                <td class="notify"><b>Welcome to 
&lt;slash-edit/&gt;</b></td>
                                                <td width="20">
                                                        <a title="View Directory 
listing" href="dir/"><img src="image/dir.gif" border="0"/></a>
                                                </td>
                                                <td width="20">
                                                        <a title="Make a new File" 
href="new/"><img src="image/new.gif" border="0"/></a>
                                                </td>
                                        </tr>
                                </table>
         </td>
        </tr>
        <tr>
         <td bgcolor="white">
          <xsl:apply-templates/>
         </td>
        </tr>
        <tr>
         <td>
                                <table border="0" cellspacing="0" cellpadding="5" 
width="100%" bgcolor="white">
                                        <tr>
                                                <td class="notes">Thanks for trying 
&lt;slash-edit/&gt;</td>
                                        </tr>
                                </table>
         </td>
        </tr>
       </table>
       </center>
       <p align="center">
       <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>
    </xsl:template>
  
    <xsl:template match="para">
     <p align="left">
      <xsl:apply-templates/>
     </p>
    </xsl:template>
  
    <xsl:template match="para/para">
        <blockquote>
                 <p align="left">
                        <xsl:apply-templates/>
                 </p>
      </blockquote>
    </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/scratchpad/webapp/mount/editor/editor/stylesheets/stream2xfwt.xsl
  
  Index: stream2xfwt.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";
   >
  
        <xsl:include href="editor-utils.xsl"/>
  
  <!-- 
        You have to get pretty tricky with your XSL here to make sure 
        your XML indentation written to file is how you like it
  -->  
  
  
  <xsl:template match="root">  
        <xsl:copy>
                <xsl:apply-templates/>
        </xsl:copy>
  </xsl:template> 
   
  <xsl:template match="page">
  <xfwt:write src="{$target-path}" xml:space="preserve">
  <page><xsl:copy-of select="@*"/>
   <title><xsl:value-of select="title[1]"/></title>
   <content><xsl:copy-of select="content/@*"/>
    <xsl:for-each select="content[1]/para"><para><xsl:copy-of 
select="@*"/><xsl:apply-templates/></para>
    </xsl:for-each>
   </content>
  </page>
  </xfwt:write>
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.3       +1 -1      
xml-cocoon2/src/scratchpad/webapp/mount/editor/stylesheets/simple-page2html.xsl
  
  Index: simple-page2html.xsl
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/webapp/mount/editor/stylesheets/simple-page2html.xsl,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- simple-page2html.xsl      16 Feb 2002 20:21:41 -0000      1.2
  +++ simple-page2html.xsl      22 Feb 2002 22:15:35 -0000      1.3
  @@ -25,7 +25,7 @@
                        <xsl:choose>
                                <xsl:when test="$view-source">
                                        <a>
  -                                             <xsl:attribute 
name="href">../../view-source?filename=mount/editor/<xsl:value-of 
select="$view-source"/></xsl:attribute>
  +                                             <xsl:attribute 
name="href">../../../view-source?filename=mount/editor/<xsl:value-of 
select="$view-source"/></xsl:attribute>
                                                <xsl:attribute 
name="target">xfwt</xsl:attribute>
                                                <xsl:apply-templates/>
                                        </a>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/include-me.xml
  
  Index: include-me.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page xmlns:xl="http://www.w3.org/1999/xlink";>
        <title>Include me in Test Result 4</title>
        <content>
                <para>This is an external file that is to be XIncluded by 'test4' to 
make a new document.</para>
                <para>This is an element in the <link xl:to="nowhere">XLink 
Namespace</link>.</para>
                <para>
                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed 
diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut 
wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis 
nisl ut aliquip ex ea commodo consequat. 
                </para><para>
                        Duis autem vel eum iriure dolor in hendrerit in vulputate 
velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero 
eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit 
augue duis dolore te feugait nulla facilisi. 
                </para><para>
                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed 
diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut 
wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis 
nisl ut aliquip ex ea commodo consequat. 
                </para><para>
                        Duis autem vel eum iriure dolor in hendrerit in vulputate 
velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero 
eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit 
augue duis dolore te feugait nulla facilisi. 
                </para><para>
                        Nam liber tempor cum soluta nobis eleifend option congue nihil 
imperdiet doming id quod mazim placerat facer possim assum. 
                </para>
        </content>
  </page>
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/make-page.xsl
  
  Index: make-page.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";
  >
  
    <xsl:template match="page">
        <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
  
    <xsl:template match="make-page">
        <xfwt:write src="tests/result5.xml" xml:space="preserve">
  <page xmlns:xl="http://www.w3.org/1999/xlink";>
        <title>Result from - <xsl:value-of select="/page/title"/></title>
        <content>
                <para>This file was assembled by XSLT from elements in <a 
href="../../view-source?filename=mount/editor/docs/test5.xml">test5</a></para>
                <para>Here are some paragraphs copied from there:
                        <import>
                                <xsl:for-each select="/page/content/para">
                                <xsl:copy><xsl:apply-templates/></xsl:copy>
                                </xsl:for-each>
                        </import>
                </para>
                <para>And <link xl:to="nowhere">here</link> is another fake XLink, for 
luck</para>
        </content>
  </page>
                </xfwt:write>
    </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/scratchpad/webapp/mount/editor/tests/test1.xml
  
  Index: test1.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";>
        <title>FileWritingTransformer Test Page 1</title>
        <content>
                <para><b>Test</b>: Basic</para>
                <para>This test should have written a file called result1.xml, in the 
same directory as this.</para>
                <para>The file's content should come from the xml below.</para>
                <para>The XML is:</para>
                <para>
                        <pre>
        &lt;xfwt:write src="tests/result1.xml"&gt;
                &lt;page&gt;
                        &lt;title&gt;FileWritingTransformer Test Result 1&lt;/title&gt;
                        &lt;content&gt;
                                &lt;para&gt;Congratulations!&lt;/para&gt;
                        &lt;/content&gt;
                &lt;/page&gt;
        &lt;/xfwt:write&gt;
                        </pre>
                </para>
        
  <xfwt:write src="tests/result1.xml">
  <page>
        <title>FileWritingTransformer Test Result 1</title>
        <content>
                <para>Congratulations!</para>
        </content>
  </page>
  </xfwt:write>
  
                <para>Have a <a href="../result/1">look!</a></para>
        </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/test2.xml
  
  Index: test2.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page 
        xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";
        
  >
        <title>FileWritingTransformer Test Page 2</title>
        <content>
                <para><b>Test</b>: Namespace</para>
                <para>This test should have written a file called result2.xml, in the 
same directory as this.</para>
                <para>The file's content should come from the xml below.</para>
                <para>The XML is:</para>
                <para>
                        <pre>
  &lt;xfwt:write src="tests/result2.xml"&gt;
        &lt;page xmlns:xl="http://www.w3.org/1999/xlink"&gt;
                &lt;title&gt;FileWritingTransformer Test Result 2&lt;/title&gt;
                &lt;content&gt;
                        &lt;para&gt;Congratulations!&lt;/para&gt;
                        &lt;para&gt;&lt;link xl:to="test2"&gt;I am in the XLink 
NameSpace&lt;/link&gt;&lt;/para&gt;
                &lt;/content&gt;
        &lt;/page&gt;
  &lt;/xfwt:write&gt;
                        </pre>
                </para>
        
                <para>The namespace is: http://www.w3.org/1999/xlink</para>
        
  <xfwt:write src="tests/result2.xml">
  <page xmlns:xl="http://www.w3.org/1999/xlink";>
        <title>FileWritingTransformer Test Result 2</title>
        <content>
                <para>Congratulations!</para>
                <para><link xl:to="test/2">I am in the XLink NameSpace</link></para>
        </content>
  </page>
  </xfwt:write>
  
                <para>Have a <a href="../result/2">look!</a></para>
        </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/test3.xml
  
  Index: test3.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page  page="blah"
  >
        <title>FileWritingTransformer Test Page 3!!!!!</title>
        <content>
                <para><b>Test</b>: New Folder Test</para>
                <para>This test should have written a file called result3.xml, in a 
directory that did not originally exist.</para>
                <para>The file's content should come from the xml below.</para>
                <para>The XML is:</para>
                <para>
                        <pre>
  &lt;xfwt:write src="tests/newfolder/result3.xml"&gt;
        &lt;page&gt;
                &lt;title&gt;FileWritingTransformer Test Result 3&lt;/title&gt;
                &lt;content&gt;
                        &lt;para&gt;Congratulations!&lt;/para&gt;
                &lt;/content&gt;
        &lt;/page&gt;
  &lt;/xfwt:write&gt;
                        </pre>
                </para>
                
  <xfwt:write src="tests/newfolder/result3.xml" 
xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";>
  <page>
        <title>FileWritingTransformer Test Result 3</title>
        <content>
                <para>Congratulations!</para>
        </content>
  </page>
  </xfwt:write>
  
                <para>Have a <a href="../result/newfolder/3">look!</a></para>
        </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/test4.xml
  
  Index: test4.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page 
        xmlns:xfwt="http://apache.org/cocoon/xfwt/1.0";
        xmlns:ci="http://apache.org/cocoon/include/1.0";
  >
        <title>FileWritingTransformer Test Page 4</title>
        <content>
                <para><b>Test</b>: XInclude Test</para>
                <para>This test should have written a file called result4.xml, with 
the contents coming from the file  <a 
href="../../../view-source?filename=mount/editor/tests/include-me.xml" 
target="xfwt">include-me.xml</a>.</para>
                <para>The file's content is setup from the xml below.</para>
                <para>The XML is:</para>
                <para>
                        <pre>
  &lt;xfwt:write src="tests/result4.xml"&gt;
        &lt;ci:include src="tests/include.xml"/&gt;
  &lt;/xfwt:write&gt;
                        </pre>
                </para>
                
  <xfwt:write src="tests/result4.xml">
  <ci:include src="tests/include-me.xml"/>
  </xfwt:write>
  
                <para>Have a <a href="../result/4">look!</a></para>
        </content>
  </page>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/editor/tests/test5.xml
  
  Index: test5.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  
  <page>
        <title>FileWritingTransformer Test Page 5</title>
        <content>
                <para><b>Test</b>: XSLT Test</para>
                <para>This test should have written a file called result5.xml, with 
the contents being generated by a <a 
href="../../../view-source?filename=mount/editor/tests/make-page.xsl" 
target="xfwt">StyleSheet</a>.</para>
                <para>This also tests setting the serializer from the invocation of 
FileWritingTransformer in the SiteMap.</para>
                <para>Anyway, the big issue here is that it is tricky to write XSL 
that gives you a clean XML indentation in your file. You can probably see how I have 
not quite got it right yet ;)</para>
                <para>The file's content is setup from the xml below.</para>
                <para>The XML is:</para>
                <para>
                        <pre>
                        &lt;make-page/&gt;
                        </pre>
                </para>
                <make-page/>
                <para>Have a <a href="../result/5">look!</a></para>
        </content>
  </page>
  
  
  

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