| <!DOCTYPE html> |
| <!-- |
| 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 |
| |
| https://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. |
| --> |
| <html lang="en"> |
| |
| <head> |
| <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> |
| <title>AntStructure Task</title> |
| </head> |
| |
| <body> |
| |
| <h2 id="antstructure">AntStructure</h2> |
| <h3>Description</h3> |
| |
| <p>Generates an DTD for Apache Ant buildfiles which contains information about all tasks currently |
| known to Ant.</p> |
| |
| <p>Actually the DTD will not be a real DTD for buildfiles since Ant's usage of XML cannot be |
| captured with a DTD. Several elements in Ant can have different attribute lists depending on the |
| element that contains them. <a href="fail.html"><code><fail></code></a> for example can be a |
| task or a nested child element of the <a href="../Tasks/sound.html"><code><sound></code></a> |
| task. Don't consider the generated DTD something to rely upon.</p> |
| |
| <p>Also note that the DTD generated by this task is incomplete, you can always add XML entities |
| using <a href="taskdef.html"><code><taskdef></code></a> |
| or <a href="typedef.html"><code><typedef></code></a>. |
| See <a href="https://web.archive.org/web/20071231061243/http://www.sdv.fr/pages/casa/html/ant-dtd.en.html" |
| target="_top">here</a> for a way to get around this problem.</p> |
| <p>This task doesn't know about required attributes, all will be listed |
| as <code>#IMPLIED</code>.</p> |
| |
| <p><em>Since Ant 1.7</em> custom structure printers can be used instead of the one that emits a DTD. |
| In order to plug in your own structure, you have to implement the |
| interface <code class="code">org.apache.tools.ant.taskdefs.AntStructure.StructurePrinter</code> |
| and <code><typedef></code> your class and use the new type as a nested element of this |
| task—see the example below. |
| |
| <h3>Parameters</h3> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>output</td> |
| <td>file to write the DTD to.</td> |
| <td>Yes</td> |
| </tr> |
| </table> |
| <h3>Examples</h3> |
| <p>Basic usage</p> |
| |
| <pre><antstructure output="project.dtd"/></pre> |
| |
| <p>Emit your own structure instead of a DTD: first you need to implement the interface</p> |
| |
| <pre> |
| package org.example; |
| import org.apache.tools.ant.taskdefs.AntStructure; |
| public class MyPrinter implements AntStructure.StructurePrinter { |
| ... |
| }</pre> |
| |
| <p>and then use it via typedef</p> |
| |
| <pre> |
| <typedef name="myprinter" classname="org.example.MyPrinter"/> |
| <antstructure output="project.my"> |
| <myprinter/> |
| </antstructure></pre> |
| |
| <p>Your own <code class="code">StructurePrinter</code> can accept attributes and nested elements |
| just like any other Ant type or task.</p> |
| |
| </body> |
| </html> |