<?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 (ant:ant)</title>
  <author email="dion@apache.org">Dion Gillard</author>
 </properties>

  <body>

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

    <section name="Description">
      <p>
        This tag represents all <a href="http://ant.apache.org/manual/anttaskslist.html">Ant tasks</a>, and 
        can create any <a href="http://ant.apache.org/">Ant</a> task, target or datatype dynamically from the
        tag name you use, e.g. &lt;copy&gt;
      </p>
      <p>
        Any tag <strong>not</strong> defined in the Jelly tag library for Ant, but defined to the Ant namespace,
        is assumed to be an Ant task, target or datatype. When Jelly tries to execute this unknown Ant tag, 
        it looks for a real Ant element to match the tag name, and if found, matches the tag's attributes 
        to the Ant element's attributes, as Ant would.
      </p>
    </section>

    <section name="Attributes">
      <p>As per the ant task, target or datatype you are using.</p>
    </section>
    
    <section name="Nested Elements">
      <p>As per the ant task, target or datatype you are using.</p>
    </section>

    <section name="Examples">
      <p>
        You never code this tag directly, instead you use it by defining the ant tag library namespace 
        and the using an Ant element. For example,
        to use the <a href="http://ant.apache.org/manual/CoreTasks/copy.html">Ant copy task</a> you would code something similar
        to this:
      </p>
      <source><![CDATA[
<jelly xmlns:ant="jelly:ant">
  <ant:copy file="myfile.txt" tofile="mycopy.txt"/>
<jelly>
]]></source>
    </section>
  </body>
</document>
