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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]