Generates an DTD for Apache Ant buildfiles which contains information about all tasks currently known to Ant.
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. <fail> for example can be a
task or a nested child element of the <sound>
task. Don't consider the generated DTD something to rely upon.
Also note that the DTD generated by this task is incomplete, you can always add XML entities
using <taskdef>
or <typedef>.
See here for a way to get around this problem.
This task doesn't know about required attributes, all will be listed
as #IMPLIED.
Since Ant 1.7 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 org.apache.tools.ant.taskdefs.AntStructure.StructurePrinter
and <typedef> your class and use the new type as a nested element of this
task—see the example below.
| Attribute | Description | Required |
|---|---|---|
| output | file to write the DTD to. | Yes |
<antstructure output="project.dtd"/>
Emitting your own structure instead of a DTD
First you need to implement the interface
package org.example;
import org.apache.tools.ant.taskdefs.AntStructure;
public class MyPrinter implements AntStructure.StructurePrinter {
...
}
and then use it via typedef
<typedef name="myprinter" classname="org.example.MyPrinter"/> <antstructure output="project.my"> <myprinter/> </antstructure>
Your own StructurePrinter can accept attributes and nested elements just like any other Ant type or task.