Support #2192
closedCannot get DTD validation to work with com.saxonica.Validate and CatalogResolver
0%
Description
Hi,
Hopefully I am just overlooking something simple, but I have not been able to get Saxon to validate an instance XML against a DTD. I have broken down the problem into a simple example. We are using the Apache Catalog Resolver, which is working perfectly fine with Saxon transforms and schema-based validation of instance XMLs, but I cannot get it to work with a DTD.
In my attached test case the files are as follows:
doSaxonValidate: shell script to run a validation using com.saxonica.Validate
CatalogManager.properties: Apache Catalog Manager Properties file for specifying catalog location
catalog.xml: my bare bones catalog to locate the dtd
instance.xml: my simple example instance XML file
xml-resolver.jar: Apache XML resolver jar (version 1.2)
dtd/simple.dtd: my simple dtd used to validate the instance XML
To run the test:
-
Expand the attached tar.gz into a directory
-
Edit the doSaxonValidate script. Modify the SAXON_JAR variable to contain the location to your Saxon-EE jar and license. We put our Saxon license in a jar file, and add the jar to the classpath, your situation may vary.
-
Run: ./doSaxonValidate instance.xml -t
This is the output that I get:
[pubsdm1:@pubsjsdev1:/home/pubsdm1/jrm29/saxonValidate
$ doSaxonValidate instance.xml -t
Parse catalog: file:/home/pubsdm1/jrm29/saxonValidate/catalog.xml
Loading catalog: file:/home/pubsdm1/jrm29/saxonValidate/catalog.xml
Default BASE: file:/home/pubsdm1/jrm29/saxonValidate/catalog.xml
override: yes
OVERRIDE: yes
public: -//MYORG//DTD SIMPLE DTD//EN
dtd/simple.dtd
PUBLIC: -//MYORG//DTD SIMPLE DTD//EN
file:/home/pubsdm1/jrm29/saxonValidate/dtd/simple.dtd
Saxon-EE 9.5.1.7J from Saxonica
Java version 1.6.0_27-rev
Using license serial number V002327
Schema checking successful. Time: 20 milliseconds
Using parser org.apache.xml.resolver.tools.ResolvingXMLReader
Processing file:/home/pubsdm1/jrm29/saxonValidate/instance.xml
resolveSystem(file:/home/pubsdm1/jrm29/saxonValidate/simple.dtd)
resolvePublic(-//MYORG//DTD SIMPLE DTD//EN,file:/home/pubsdm1/jrm29/saxonValidate/simple.dtd)
Resolved public: -//MYORG//DTD SIMPLE DTD//EN
file:/home/pubsdm1/jrm29/saxonValidate/dtd/simple.dtd
Validation error on line 3 column 10 of instance.xml:
XSD99999: Cannot validate <myroot>: no element declaration available
See http://www.w3.org/TR/xmlschema11-1/#cvc-elt clause 1
Validating /myroot[1]
Validation error on line 3 column 10 of instance.xml:
XSD99999: One or more validation errors were reported
Validation unsuccessful
Note that the Catalog resolver successfully resolved the simple.dtd file, but Saxon cannot locate it.
I tried this same validation using oXygen and Saxon-EE by configuring oXygen to use my example catalog.xml and it worked fine.
I will be happy to assist in any troubleshooting and answer any questions you have. Thank you.
Files
Please register to edit this issue