|
- <!--
- 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.
- -->
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <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>Attribute</th>
- <th>Description</th>
- <th>Required</th>
- </tr>
- <tr>
- <td>output</td>
- <td>file to write the DTD to.</td>
- <td>Yes</td>
- </tr>
- </table>
- <h3>Examples</h3>
- <pre><antstructure output="project.dtd"/></pre>
-
- <p><strong>Emitting your own structure instead of a DTD</strong></p>
-
- <p>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 StructurePrinter can accept attributes and nested elements just like any other Ant type
- or task.</p>
-
- </body>
- </html>
|