cziegeler    01/10/18 06:22:58

  Modified:    documentation sitemap.xmap
               documentation/xdocs/userdocs/matchers matchers.xml
               src/org/apache/cocoon Main.java
  Log:
  Applied documentation patches.
  Submitted by: Gianugo Rabellino [[EMAIL PROTECTED]]
  
  Revision  Changes    Path
  1.21      +4 -0      xml-cocoon2/documentation/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/documentation/sitemap.xmap,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- sitemap.xmap      2001/10/12 13:45:30     1.20
  +++ sitemap.xmap      2001/10/18 13:22:58     1.21
  @@ -123,6 +123,10 @@
       <map:read src="xdocs/{1}.txt" mime-type="text"/>
      </map:match>
   
  +   <map:match pattern="**resources/script.js">
  +     <map:read src="stylesheets/script-cli.js" mime-type="application/javascript"/>
  +   </map:match>
  +
      <map:match pattern="**resources/**.js">
        <map:read src="stylesheets/{2}.js" mime-type="application/javascript"/>
      </map:match>
  
  
  
  1.2       +141 -12   xml-cocoon2/documentation/xdocs/userdocs/matchers/matchers.xml
  
  Index: matchers.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/documentation/xdocs/userdocs/matchers/matchers.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- matchers.xml      2001/10/16 14:41:04     1.1
  +++ matchers.xml      2001/10/18 13:22:58     1.2
  @@ -9,25 +9,154 @@
                <type>Technical document</type>
                <authors>
                        <person name="Carsten Ziegeler" email="[EMAIL PROTECTED]"/>
  +                     <person name="Gianugo Rabellino" email="[EMAIL PROTECTED]"/>
                 </authors>
  -              <abstract>This document describes all available matchers of 
@doctitle@.</abstract>
  +              <abstract>This document describes all available matchers of 
@docname@.</abstract>
        </header>
        <body>
  -             <s1 title="Goal">
  -                     <p>This document lists all available matchers of @doctitle@ and
  -                     describes their purpose.</p>
  +              <s1 title="Goal">
  +                     <p>
  +      This document lists all available matchers of @docname@ and
  +      describes their purpose.
  +      </p>
                 </s1>
                 <s1 title="Overview">
  -                     <p>Forthcoming...
  -                   </p>
  +                     <p>
  +      Matchers are a core component of @docname@. These powerful sitemap
  +      components allow @docname@ to associate a pure
  +      "virtual" URI space to a given set of instructions that describe
  +      how to generate, transform and present the requested resource(s) to
  +      the client.
  +      </p>
  +      <p>
  +      @docname@ is driven by the client request. A request typically
  +      contains a URI, some parameters, cookies, and much more. The 
  +      request, along with the @docname@ environment, is the entry 
  +      point to decide what will be the sitemap instructions to be 
  +      used. The mechanism to decide what will be the instruction 
  +      driving the @docname@ process for a given request
  +      is based on matching a request element against a pattern given
  +      as a matcher's parameter. If the match operation is successful
  +      processing starts.
  +      </p>
  +      <p>
  +      As an example, consider the following sitemap snippet:
  +      </p>
  +<source>
  +<![CDATA[
  +<map:match pattern="body-faq.xml">
  +  <map:generate src="xdocs/faq.xml"/>
  +  <map:transform src="stylesheets/faq2document.xsl"/>
  +  <map:transform src="stylesheets/document2html.xsl"/>
  +  <map:serialize/>
  +</map:match>
  +
  +<map:match pattern="body-**.xml">
  +  <map:generate src="xdocs/{1}.xml"/>
  +  <map:transform src="stylesheets/document2html.xsl"/>
  +  <map:serialize/>
  +</map:match>
  +]]>   
  +</source>
  +      <p>
  +      Here the two sitemap entries are mapped to different virtual URIs using
  +      the default matcher (based on a wildcard intepretation of the request
  +      URI) in a different way: the first one 
  +      uses an exact match ("body-faq.xml"), meaning that only a Request URI
  +      that exactly matches the string will result in a successful match. The
  +      second one uses a wildcard pattern, meaning that every request 
  +      starting with  "body-" and ending with ".xml" will satisfy the matcher's
  +      requirement: thus requesting a resource such as "book-cocoon.xml" 
  +      would turn out in the sitemap matching the request and starting
  +      the second pipeline.
  +      </p>
                 </s1>
  -              <s1 title="The Matchers in @doctitle@">
  -                     <p>Forthcoming...
  -                   </p>
  -<!--                 <ul>
  -                             <li><link href="xslt-transformer.html">XSLT 
Transformer</link> (The default transformer)</li>
  +     <s1 title="Order">
  +       <p>
  +       It's important to understand that @docname@ is based on a "first match"
  +       approach. The request is matched against the different "map:match"
  +       entries in the order in which they are specified in the sitemap: as soon
  +       as a match is successful the pipeline is chosen and started. This means
  +       that more specific patterns must appear before generic ones: in the 
  +       example above if the two pipelines were in a different order a request
  +       for "body-faq.xml" would never work properly, since the generic 
  +       "book-**.xml" pattern would be matched first (this is a well known 
  +       concept especially in router and firewall configurations). 
  +       </p>
  +     </s1>
  +     <s1 title="Tokenization">
  +       <p>
  +       Another important feature of matchers is tokenization. Every "variable"
  +       part of the pattern being matched will be kept in memory by Cocoon for 
  +       further reuse and will be available in the next sitemap instructions 
  +       as a numbered argument. This means that, using once again the previous 
  +       example, when a request URI such as "body-index.xml" comes in and the 
  +       second pipeline is choosen, the string that matches the "**" wildcard,
  +       containing the value "index", is available in the sitemap as a parameter 
  +       identified by {1}. This string can be used as the parameter for the 
  +       generator which will evaluate the symbol resolving it to the string 
  +       "index" and look for a file named "xdocs/index.html".  
  +       </p>
  +     </s1>
  +     <s1 title="Wildcard and regular expressions">
  +       <p>
  +       Most of @docname@ matchers are built using two different techniques:
  +       regular expressions and wildcards.
  +       Regular expressions (or regexps) are a well known and powerful 
  +       system for pattern matching: learning to master them it's outside 
  +       the scope of this document, but there is a lot of documentation 
  +       available on the web regarding this topic.
  +       </p>
  +       <p>
  +       While being so powerful, regexps can just be overkill for most of 
  +       typical @docname@ use cases where only simple matching operations
  +       have to be performed. This is why @docname@ offers a simplified
  +       pattern matching system based on a small set of very simple rules:
  +       </p>
  +       <ul>
  +        <li>
  +        An asterisk ('*') matches zero or more of  characters
  +        up to the occurrence of a '/' character (which is intended as
  +        a path separator). If a string such as /cocoon/docs/index.html is
  +        matched against the pattern '/*/*.index.html' the match is <i>not</i>
  +        succesful: the first asterisk would match only up to the first path
  +        separator, resulting in the "cocoon" string. Using this technique
  +        a correct pattern would be '/*/*/*.html'.
  +        </li>
  +        <li>
  +        A string made of two asterisks ('**') matches zero or more 
  +        characters, this time including the path separator (the character
  +        '/'). Using the the example above the string would be matched by
  +        the /**/*.html' pattern: the double asterisk would match also the
  +        path separator and would resolve in the "cocoon/docs" string.
  +        </li>
  +        <li>
  +        As with regexps the backslash character ('\') is used as an 
  +        escape sequence. The string '\*' will match an actual asterisk
  +        while a double backslash ('\\') will match the character '\'. A
  +        pattern such as "**/a-\*-is-born.html" would match only strings
  +        such as "documents/movies/a-*-is-born.html" or 
  +        'a/very/long/path/a-*-is-born.html'. It would <i>not</i> match
  +        a string such as 'docs/a-star-is-born.html'.
  +        </li>
  +       </ul>
  +     </s1>
  +              <s1 title="The Matchers in @docname@">
  +       <ul>
  +                              <li><b>WildCard URI matcher </b>(The default 
matcher): matches the URI against a wildcard pattern</li>
  +                              <li><b>Regexp URI matcher:</b> 
  +         matches the URI against a fully blown regular expression</li>
  +                              <li><b>Request parameter 
  +         matcher:</b> matches a request parameters given as a pattern. If
  +         the parameter exists, its value is available for later substitution
  +         </li>
  +                              <li><b>Wildcard request parameter matcher:</b> 
matches a wildcard 
  +         given as a pattern against the <b>value</b> of the configured 
  +         parameter
  +         </li>
  +                              <li><b>Wildcard session parameter matcher</b>: same 
as the 
  +         request parameter, but it matches a session parameter</li>
                        </ul>
  --->
                </s1>
        </body>
   </document>
  
  
  
  1.25      +3 -1      xml-cocoon2/src/org/apache/cocoon/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Main.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Main.java 2001/10/16 13:04:57     1.24
  +++ Main.java 2001/10/18 13:22:58     1.25
  @@ -1,3 +1,4 @@
  +
   /*****************************************************************************
    * Copyright (C) The Apache Software Foundation. All rights reserved.        *
    * ------------------------------------------------------------------------- *
  @@ -35,7 +36,7 @@
    * Command line entry point.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.24 $ $Date: 2001/10/16 13:04:57 $
  + * @version CVS $Revision: 1.25 $ $Date: 2001/10/18 13:22:58 $
    */
   
   public class Main {
  @@ -600,6 +601,7 @@
           if (uri.charAt(uri.length() - 1) == '/') uri += Constants.INDEX_URI;
           uri = uri.replace('"', '\'');
           uri = uri.replace('?', '_');
  +        uri = uri.replace(':', '_');
           log.debug(uri);
           return uri;
       }
  
  
  

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