ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Loughran <ste...@apache.org>
Subject Re: Ant, Xerces 2.8.0, and XInclude
Date Wed, 08 Mar 2006 09:19:12 GMT
Dan Sanderson wrote:
> Hi all -
> 
> I have two questions regarding Ant, Xerces 2, and XInclude.  I'm using 
> Ant 1.6.5, and have upgraded its xercesImpl.jar and xml-apis.jar to 
> Xerces 2.8.0.
> 
> The first question is regarding XmlValidate.  My understanding is that I 
> can turn on the XInclude feature with an <attribute> in the 
> <xmlvalidate> task:
> 
>  <attribute name="http://apache.org/xml/features/xinclude" value="true" />
> 
> When I try to validate, however, it fails on the <include> elements, as 
> if XInclude were not working.
> 
> My first guess was that I wasn't turning on the feature correctly, but I 
> noticed this in the Xerces 2 FAQ:  "If the validation feature is turned 
> on then DTD validation will be performed on each source document (to the 
> XInclude processor) against their respective DTDs."
> 
> My Ant target for validation:
> 
>   <target
>       name="validate-xerces"
>       >
>     <java classname="org.apache.xerces.impl.Version" />
>     <xmlvalidate
>     failonerror="yes"
>     warn="yes"
>     lenient="no">
>       <attribute name="http://apache.org/xml/features/xinclude" 
> value="true" />
>       <xmlcatalog>
>     <catalogpath>
>       <pathelement location="../schemas/docbook-4.4/catalog.xml"/>
>     </catalogpath>
>       </xmlcatalog>
>       <fileset
>       dir="${book.dir}"
>       includes="${book.file}" />
>     </xmlvalidate>
>   </target>
> 
> Is my task defined correctly to turn on XInclude?  Is Xerces refusing to 
> do XInclude prior to DTD validation as a normal behavior?  What is the 
> correct way for me to perform DTD validation with a document that uses 
> XInclude?  (Must my DTD explicitly accommodate XInclude?)
> 
> 
> My second question is regarding the Xslt task.  I would like to turn on 
> the same Xerces feature for the purposes of XSLT processing (with 
> Xalan). I'm not clear on how to do this.  I tried:
> 
>   <target
>       name="xslt-xerces"
>       description="test XSLT with Xerces XInclude"
>       >
>     <java classname="org.apache.xerces.impl.Version" />
>     <xslt
>     in="${book.dir}/${book.file}"
>     out="${temp.dir}/test-xsl-out.txt"
>     style="test.xsl"
>     >
>       <factory>
>     <attribute name="http://apache.org/xml/features/xinclude" 
> value="true" />
>       </factory>
>     </xslt>
>   </target>
> 
> but got:
> 
> BUILD FAILED
> /workplace/sandersd/Projects/NewAWSDocTools/AWSDocTools/tools/TEMP/build.xml:89: 
> java.lang.IllegalArgumentException: Not supported: 
> http://apache.org/xml/features/xinclude
> 
> What is the correct way to turn on XInclude with Xerces with the Xslt task?
> 
> 
> Thanks for any assistance you can provide!  Let me know if I should post 
> more complete examples.
> 

I think you are pushing the envelope with what the xml tasks do, so 
there is no guarantee that things will work as expected.

Do make sure that you are using xalan for <xslt>, and not anything built 
into the JVM; there is a processor attribute in <Xslt> for that; the 
classname attribute in <xmlvalidate>.

Other than that, you are probably on your own, though patches to fix 
things are welcome. Know that Ant1.7's version of xmlvalidate was 
tweaked to create a new parser for every file on a bulk validate, as the 
one parser-many-files process didnt work for XSD validation.

-steve

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message