<?xml version="1.0"?>
<!--
  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.
-->

<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://commons.apache.org/jelly/libs/ant/">http://commons.apache.org/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>
