Excuse me, but if you set the parser so it does DTD _and_ schema
validation, then the document must be both DTD-valid and schema valid?
Is this really a configuration people want?
Bob Foster
Michael Glavassevich wrote:
Hello Dies,
When you set the schemaLanguage property to
http://www.w3.org/2001/XMLSchema only schema validation is performed. If
you want to configure Xerces so that it performs DTD validation if the
document has a DTD and/or schema validation if a schema grammar is
specified, try setting the validation [1], schema validation [2] and
dynamic validation [3] features to true.
[1] http://xml.apache.org/xerces2-j/features.html#validation
[2] http://xml.apache.org/xerces2-j/features.html#validation.schema
[3] http://xml.apache.org/xerces2-j/features.html#validation.dynamic
Dies Koper <[EMAIL PROTECTED]> wrote on 08/03/2005 09:26:38 PM:
Hello all,
I am trying to parse xml files, that are either DTD or schema based.
I expected the parser to automatically determine whether the files are
DTD or schema based when it parses them and validate them accordingly,
but I can't get it to work.
It validates my DTD based file fine, I then need to set the
"http://java.sun.com/xml/jaxp/properties/schemaLanguage" attribute to
"http://www.w3.org/2001/XMLSchema" to be able to read the schema based
file, that also works fine. But with this attribute set I cannot read
the DTD based file anymore, it gives the following error:
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of
element 'ejb-jar'.
I set up the parser as follows:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating( true );
factory.setNamespaceAware(true);
String JAXP_SCHEMA_LANGUAGE =
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";
String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
DocumentBuilder builder = factory.newDocumentBuilder();
(xercesImpl.jar 2.7.1 and xml-apis.jar are in JDK14\JRE\lib\ext)
The xml files look like:
[DTD based]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
...
[schema based]
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
...
The culprit seems to be the setting of the attribute: with it schema
based files work and DTD based files not, without it the other way
around.
How should I change my code to be able to parse and validate both?
Thanks,
Dies
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]