<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" "../../dtd/document-v10.dtd">

<!--
  <![CDATA[ CVS Version: $Id$ 
  ]]>
-->

<document>
  <header>
    <title>RegexpURIDefaultsMatcher in Cocoon</title>
    <version>0.9</version>
    <type>Technical document</type>
    <authors>
      <person name="Bernhard Huber" email="huber.at.apache.org"/>
    </authors>
    <abstract>This document describes the RegexpURIDefaultsMatcher of Cocoon.</abstract>
  </header>
  <body>
    <s1 title="RegexpURIDefaultsMatcher">
      <table>
        <tr>
          <td>NAME</td><td>template</td>
        </tr>
        <tr>
          <td>WHAT</td><td>The <code>RegexpURIDefaultsMatcher</code> component is used 
            to serve data in a sitemap pipeline.
          </td>
        </tr>
        <tr>
          <td>TYPE</td><td>Matcher, Sitemap Component</td>
        </tr>
        <tr>
          <!-- choose Core, the block name, or Scratchpad 
            depending on where RegexpURIDefaultsMatcher sources live
          -->
          <td>BLOCK</td><td>Core/Block-Name/Scratchpad</td>
        </tr>
        <tr>
          <td>CLASS</td><td>org.apache.cocoon.matching.RegexpURIDefaultsMatcher</td>
        </tr>
        <!-- uncomment folling tr iff RegexpURIDefaultsMatcher is deprecated -->
        <!--tr>
          <td>DEPRECATED</td><td>Cocoon 2.0, 2.1</td>
        </tr-->
        <tr>
          <td>SINCE</td><td>Cocoon X.Y</td>
        </tr>
        <tr>
          <td>CACHEABLE</td><td>not applicable</td>
        </tr>
      </table>
    </s1>
    <s1 title="Description">
      <p>
        A general description of RegexpURIDefaultsMatcher
      </p>
    </s1>
    <s1 title="Usage">
      <p>
        A usage scenario of RegexpURIDefaultsMatcher
      </p>
      <s2 title="Sitemap pipeline examples">
        <p></p>
        <source><![CDATA[
<map:pipelines>
  <map:pipeline>
    <map:match pattern="page-*.html">
      <map:generator 
        src="{1}"
      >
        <!-- option sitemap parameters -->
      </map:generator>
    </map:match>
  </map:pipeline>
  ...
        ]]></source>
      </s2>
      
      <s2 title="Sitemap component configuration example">
        <p></p>
        <source><![CDATA[
<map:matchers...
  <map:matcher name="template" 
    src="org.apache.cocoon.matching.RegexpURIDefaultsMatcher"
    logger="sitemap.matcher.template" 
  />
    <!-- optional matcher configuration -->
    ...
  </map:matcher>
...
]]></source>
      </s2>
      <s2 title="Configuration">
        <p>
          Explain the sitemap matcher configuration, options when declaring template matcher
        </p>
      </s2>
      <s2 title="Setup">
        <p>
          Explain the sitemap matcher setup, ie options when using template matcher
        </p>
      </s2>
      <s2 title="Effect on Object Model and Sitemap Parameters">
        <p>
        
        </p>
      </s2>
    </s1>
    <s1 title="Bugs/Caveats">
      <p>
        <!-- Describe limitation, bugs of RegexpURIDefaultsMatcher --> 
      </p>
    </s1>
    <s1 title="History">
      <p>
        MM-DD-YY: initial creation
      </p>
    </s1>
    <s1 title="See also">
      <p>
        <!-- Links to related components pages. -->
        A general documentation about matchers is available at
        <link href="../concepts/matchers_selectors.html">Matchers and Selectors</link>.
      </p>
    </s1>
  </body>
</document>

