<?xml version="1.0"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed 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.
-->

<document>

 <properties>
  <title>Jelly Tag Reference (taglib:tag)</title>
 </properties>

  <body>

    <section name="Home Page">
      <p>See 
        <a href="http://jakarta.apache.org/commons/jelly/libs/xxx/">http://jakarta.apache.org/commons/jelly/libs/xxx/</a>
      </p>
    </section>

    <section name="Description">
      <p>
        This tag ...
      </p>
    </section>
    
    <section name="Attributes">
      <table>
        <tr>
          <th>Name</th>
          <th>Description</th>
          <th>Required</th>
        </tr>
        <tr>
          <td>...</td>
          <td>...</td>
          <td>...</td>
        </tr>
      </table>
    </section>
    
    <section name="Nested Elements">
      <table>
        <tr>
          <th>Name</th>
          <th>Description</th>
          <th>Required</th>
        </tr>
        <tr>
          <td>...</td>
          <td>...</td>
          <td>...</td>
        </tr>
      </table>
    </section>

    <section name="Examples">
      <source><![CDATA[
...
      ]]></source>
    </section>
    
  </body>
</document>