stevel 2005/02/23 04:51:07 Modified: src/main/org/apache/tools/ant/taskdefs/optional SchemaValidate.java docs/manual/OptionalTasks schemavalidate.html Log: Worked out how to validate XSD files themselves. Changes to task made, and the examples of the task now show how to do this. Revision Changes Path 1.4 +12 -3 ant/src/main/org/apache/tools/ant/taskdefs/optional/SchemaValidate.java Index: SchemaValidate.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/SchemaValidate.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SchemaValidate.java 22 Feb 2005 17:45:40 -0000 1.3 +++ SchemaValidate.java 23 Feb 2005 12:51:07 -0000 1.4 @@ -56,6 +56,8 @@ /** full checking of a schema */ private boolean fullChecking=true; + private boolean disableDTD=false; + /** * default URL for nonamespace schemas */ @@ -179,6 +181,14 @@ } /** + * flag to disable DTD support. + * @param disableDTD + */ + public void setDisableDTD(boolean disableDTD) { + this.disableDTD = disableDTD; + } + + /** * init the parser : load the parser class, and set features if necessary It * is only after this that the reader is valid * @@ -186,7 +196,6 @@ */ protected void initValidator() { super.initValidator(); - XMLReader xmlReader = getXmlReader(); //validate the parser type if(isSax1Parser()) { throw new BuildException(ERROR_SAX_1); @@ -204,8 +213,8 @@ //enable schema checking setFeature(XmlConstants.FEATURE_XSD_FULL_VALIDATION,fullChecking); - //turn off DTDs - setFeatureIfSupported(XmlConstants.FEATURE_DISALLOW_DTD,true); + //turn off DTDs if desired + setFeatureIfSupported(XmlConstants.FEATURE_DISALLOW_DTD,disableDTD); //schema declarations go in next addSchemaLocations(); } 1.3 +62 -104 ant/docs/manual/OptionalTasks/schemavalidate.html Index: schemavalidate.html =================================================================== RCS file: /home/cvs/ant/docs/manual/OptionalTasks/schemavalidate.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- schemavalidate.html 22 Feb 2005 16:04:20 -0000 1.2 +++ schemavalidate.html 23 Feb 2005 12:51:07 -0000 1.3 @@ -15,8 +15,8 @@ <li>The parser is created validating and namespace aware </li> <li>Validation is turned on.</li> -<li>and Schema validation is turned on.</li> -<li>Any default schema supplied is used as the no-namespace schema +<li>Schema validation is turned on.</li> +<li>Any no-namespace schema URL or file supplied is used as the no-namespace schema <li>All nested schema declarations are turned into the list of namespace-url bindings for schema lookup. </ol> @@ -50,35 +50,34 @@ <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> + <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">defaultSchemaFile</td> - <td valign="top"> - filename of a no-namespace XSD file to provide the - schema for no-namespace XML content. - </td> - <td valign="top" align="center">No</td> + <td valign="top">classpathref</td> + <td valign="top">where to find the parser class. + Optionally can use an embedded <tt><classpath></tt> element.</td> + <td align="center" valign="top">No</td> </tr> <tr> - <td valign="top">noNamespaceURL</td> + <td valign="top">disableDTD</td> <td valign="top"> - URL of a no-namespace XSD file to provide the - schema for no-namespace XML content. + Flag to disable DTD support. DTD support is needed to + validate XSD files themselves, amongst others. </td> - <td valign="top" align="center">No</td> + <td valign="top" align="center">No - default false</td> </tr> <tr> - <td valign="top">noNamespaceFile</td> - <td valign="top"> - filename of a no-namespace XSD file to provide the - schema for no-namespace XML content. - </td> + <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">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">fullchecking</td> <td valign="top"> @@ -86,6 +85,7 @@ </td> <td valign="top" align="center">No - default true</td> </tr> + <tr> <td valign="top">lenient</td> <td valign="top"> @@ -94,20 +94,20 @@ <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 <tt><classpath></tt> element.</td> - <td align="center" valign="top">No</td> + <td valign="top">noNamespaceFile</td> + <td valign="top"> + filename of a no-namespace XSD file to provide the + schema for no-namespace XML content. + </td> + <td valign="top" align="center">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> + <td valign="top">noNamespaceURL</td> + <td valign="top"> + URL of a no-namespace XSD file to provide the + schema for no-namespace XML content. + </td> + <td valign="top" align="center">No</td> </tr> <tr> <td valign="top">warn</td> @@ -227,79 +227,37 @@ <h3>Examples</h3> <pre> -<xmlvalidate file="toto.xml"/> -</pre> -Validate toto.xml -<pre> -<xmlvalidate failonerror="no" lenient="yes" warn="yes" - classname="org.apache.xerces.parsers.SAXParser"> - classpath="lib/xerces.jar"> - <fileset dir="src" includes="style/*.xsl"/> -</xmlvalidate> -</pre> -Validate all .xsl files in src/style, but only warn if there is an error, rather than -halt the build. -<pre> - -<xmlvalidate file="struts-config.xml" warn="false"> - <dtd publicId="-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" - location="struts-config_1_0.dtd"/> -</xmlvalidate> -</pre> - -Validate a struts configuration, using a local copy of the DTD. -<pre> -<xmlvalidate failonerror="no"> - <fileset dir="${project.dir}" includes="**/*.xml"/> - <xmlcatalog refid="mycatalog"/> -</xmlvalidate> -</pre> - -Scan all XML files in the project, using a predefined catalog to map URIs to local files. -<pre> -<xmlvalidate failonerror="no"> - <fileset dir="${project.dir}" includes="**/*.xml"/> - <xmlcatalog> - <dtd - publicId="-//ArielPartners//DTD XML Article V1.0//EN" - location="com/arielpartners/knowledgebase/dtd/article.dtd"/> - </xmlcatalog> -</xmlvalidate> -</pre> -Scan all XML files in the project, using the catalog defined inline. - + <schemavalidate + noNamespaceFile="document.xsd" + file="xml/endpiece.xml"> + </schemavalidate> +</pre> +Validate a document against an XML schema. The document does not declare +any schema itself, which is why the <tt>noNamespaceFile</tt> is needed. +<pre> + <presetdef name="validate-soap"> + <schemavalidate > + <schema namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing" + file="${soap.dir}/ws-addressing.xsd" /> + <schema namespace="http://www.w3.org/2003/05/soap-envelope" + file="${soap.dir}/soap12.xsd" /> + <schema namespace="http://schemas.xmlsoap.org/wsdl/" + file="${soap.dir}/wsdl.xsd" /> + <schema namespace="http://www.w3.org/2001/XMLSchema" + file="${soap.dir}/XMLSchema.xsd" /> + </schemavalidate> + </presetdef> +</pre> +Declare a new preset task, <tt><validate-soap></tt>, that validates +XSD and WSDL documents against the relevant specifications. +To validate XSD documents, you also need XMLSchema.dtd and datatypes.dtd in +the same directory as XMLSchema.xsd, or pointed to via the catalog. All +these files can be fetched from <a href="http://www.w3.org/2001/XMLSchema"> +the W3C</a>. <pre> -<xmlvalidate failonerror="yes" lenient="no" warn="yes"> - <fileset dir="xml" includes="**/*.xml"/> - <attribute name="http://xml.org/sax/features/validation" value="true"/> - <attribute name="http://apache.org/xml/features/validation/schema" value="true"/> - <attribute name="http://xml.org/sax/features/namespaces" value="true"/> -</xmlvalidate> + <validate-soap file="xml/test.xsd"/> </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> -<pre> -<!-- Converts path to URL format --> -<pathconvert dirsep="/" property="xsd.file"> -<path> - <pathelement location="xml/doc.xsd"/> -</path> -</pathconvert> - -<xmlvalidate file="xml/endpiece-noSchema.xml" lenient="false" - failonerror="true" warn="true"> - <attribute name="http://apache.org/xml/features/validation/schema" - value="true"/> - <attribute name="http://xml.org/sax/features/namespaces" value="true"/> - <property - name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" - value="${xsd.file}"/> -</xmlvalidate> -</pre> -<br> -Validate the file xml/endpiece-noSchema.xml against the schema xml/doc.xsd. +Use the preset task defined above to validate an XML Schema document. <br> <hr> <p align="center">Copyright © 2001-2002,2004-2005 The Apache Software Foundation. All rights
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]