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 |
Basic usage
<antstructure output="project.dtd"/>
Emit 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.