<html>

<head>
<title>XMLValidate Task</title>
<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
</head>

<body>

<h2><a name="xmlvalidate">XMLValidate</a></h2>
<h3>Description</h3>

<p>This task checks xml files are valid (or only well formed). The
task uses the SAX2 parser implementation provided by JAXP by default
(probably the one that is used by Ant itself), but one can specify any
SAX1/2 parser if needed.</p>

<p>This task supports the use of nested
  <li/><a href="../CoreTypes/xmlcatalog.html"><tt>&lt;xmlcatalog&gt;</tt></a> elements 
  <li/><tt>&lt;dtd&gt;</tt> elements which are used to resolve DTDs and entities.
  <li/><tt>&lt;attribute&gt;</tt> elements which are used to set features on the parser. These can be any number of <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description">http://xml.org/sax/features/</a> or other features that your parser may support.
</p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">file</td>
    <td valign="top">the file(s) you want to check. (optionally can use an embedded fileset)</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">lenient</td>
    <td valign="top">
      if true, only check the xml document is well formed
        (ignored if the specified parser is as SAX1 parser)
    </td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">classname</td>
    <td valign="top">the parser to use.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr>
    <td valign="top">classpathref</td>
    <td valign="top">where to find the parser class. Optionally can use an embedded classpath element.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr>
    <td valign="top">failonerror</td>
    <td valign="top">fails on a error if set to true (defaults to true).</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr>
    <td valign="top">warn</td>
    <td valign="top">log parser warn events.</td>
    <td align="center" valign="top">No</td>
  </tr>
</table>

<h3><a name="nested">Nested Elements</a></h3>
<h4>dtd</h4>
&lt;dtd&gt; is used to specify different locations for DTD resolution.
<table border="1" cellpadding="2" cellspacing="0">
<tr>
  <td width="12%" valign="top"><b>Attribute</b></td>
  <td width="78%" valign="top"><b>Description</b></td>
  <td width="10%" valign="top"><b>Required</b></td>
</tr>
  <tr>
    <td valign="top">publicId</td>
    <td valign="top">Public ID of the DTD to resolve</td>
    <td align="center" valign="top">Yes</td>
  </tr>
  <tr>
    <td valign="top">location</td>
    <td valign="top">Location of the DTD to use, which can be a file,
    a resource, or a URL</td>
    <td align="center" valign="top">Yes</td>
  </tr>
</table>
<h4>xmlcatalog</h4>
<p>The <a href="../CoreTypes/xmlcatalog.html">xmlcatalog</a>
element is used to perform Entity resolution.</p>
<h4>attribute</h4>
<p>The attribute element is used to set SAX Parser features.
There can an arbitrary amount of attribute set as defined here:
 <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description">http://xml.org/sax/features/</a>
A feature essentialy changes the mode of the parser.
&lt;attribute&gt; an attribute is used to set specific features on the parser. 
<table border="1" cellpadding="2" cellspacing="0">
<tr>
  <td width="12%" valign="top"><b>Attribute</b></td>
  <td width="78%" valign="top"><b>Description</b></td>
  <td width="10%" valign="top"><b>Required</b></td>
</tr>
  <tr>
    <td valign="top">name</td>
    <td valign="top">The name of the feature</td>
    <td align="center" valign="top">Yes</td>
  </tr>
  <tr>
    <td valign="top">value</td>
    <td valign="top">The boolean value of the feature</td>
    <td align="center" valign="top">Yes</td>
  </tr>
</table>
</p>


<h3>Examples</h3>
<pre>
&lt;xmlvalidate file="toto.xml"/&gt;
</pre>
Validate toto.xml
<pre>
&lt;xmlvalidate failonerror="no" lenient="yes" warn="yes"
             classname="org.apache.xerces.parsers.SAXParser"&gt;
             classpath="lib/xerces.jar"&gt;
  &lt;fileset dir="src" includes="style/*.xsl"/&gt;
&lt;/xmlvalidate&gt;
</pre>
Validate all .xsl files in src/style, but only warn if there is an error, rather than
halt the build.
<pre>

&lt;xmlvalidate file="struts-config.xml" warn="false"&gt;
  &lt;dtd publicId="-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
       location="struts-config_1_0.dtd"/&gt;
&lt;/xmlvalidate&gt;
</pre>

Validate a struts configuration, using a local copy of the DTD. 
<pre> 
&lt;xmlvalidate failonerror="no"&gt;
  &lt;fileset dir="${project.dir}" includes="**/*.xml"/&gt;
  &lt;xmlcatalog refid="mycatalog"/&gt;
&lt;/xmlvalidate&gt;
</pre>

Scan all XML files in the project, using a predefined catalog to map URIs to local files.
<pre>
&lt;xmlvalidate failonerror="no"&gt;
  &lt;fileset dir="${project.dir}" includes="**/*.xml"/&gt;
  &lt;xmlcatalog&gt;
       &lt;dtd
         publicId=&quot;-//ArielPartners//DTD XML Article V1.0//EN&quot;
         location=&quot;com/arielpartners/knowledgebase/dtd/article.dtd&quot;/&gt;
  &lt;/xmlcatalog&gt;
&lt;/xmlvalidate&gt;
</pre>
Scan all XML files in the project, using the catalog defined inline.

<pre>
&lt;xmlvalidate failonerror="yes" lenient="no" warn="yes"&gt;
  &lt;fileset dir="xml" includes="**/*.xml"/&gt;
  &lt;attribute name="http://xml.org/sax/features/validation" value="true"/&gt;
  &lt;attribute name="http://apache.org/xml/features/validation/schema"  value="true"/&gt;
&lt;/xmlvalidate&gt;
</pre>
Validate all .xml files in xml directory with the parser configured to perform schema validation. Note: The parser must support the <pre>http://apache.org/xml/features/validation/schema</pre> feature. 
<br>
<hr>
<p align="center">Copyright &copy; 2001-2002 Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>

