Okay ... I now know how to do Schema validation with JAXP:

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPDOM9.html

.... but another problem that I have which I mentioned above is:

Error: URI=null Line=6: cvc-elt.1: Cannot find the declaration of element 'SOAP-ENV:Envelope'.

... and "SOAP-ENV:Envelope" is the root element. Is this an error from the DTD validation?

How can I turn off DTD validation but allow Schema validation?
Here is a portion of the SOAP message:


<?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xsi:noNamespaceSchemaLocation="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-0";> <SOAP-ENV:Header> <TransactionID>123</TransactionID> </SOAP-ENV:Header> <SOAP-ENV:Body> .... snip ..... </SOAP-ENV:Body> </SOAP-ENV:Envelope>


Jesus M. Salvo Jr. wrote:



I am not sure though how to turn on Schema validation without using DTD validation. So here are some questions:

1) If Schema validation is turned on, and the XML Schema source is specified by an HTTP URL, is the parser supposed to fetch ( HTTP GET ) the schema from the specified URL?

2) [ Schema validation via JAXP ]
According to:
http://xml.apache.org/~edwingo/jaxp-ri-1.2.0-fcs/docs/samples.html#Schema
( referenced from: http://java.sun.com/xml/jaxp/faq.html#XMLSchema )

private static final String MM7_NS_URI = "http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-0";;


private static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";;
private static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";;
private static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";;



DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware( true ); factory.setValidating( true ); factory.setAttribute( JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA ); factory.setAttribute( JAXP_SCHEMA_SOURCE, new URL( MM7_NS_URI ));

.. but when I did that, and answer to my question [1] is true, I cannot see ( by running a sniffer on my local box ) any HTTP requests to the specified URL of the schema(s) ... not even fetching the SOAP XML schema.

( no errors are returned by the parser )

Is:

DocumentBuilderFactory.setValidating( true ) equivalent to
DOMParser.setFeature( "http://xml.org/sax/features/validation";, true ) ?

What is the equivalent of
DOMParser.setFeature( "http://apache.org/xml/features/validation/schema";, true ) and
DOMParser.setFeature( "http://apache.org/xml/features/validation/schema-full-checking";, true ) via JAXP?



3) However, if I directly do this ( not via JAXP but via Xerces 2.2 directly ):


DOMParser parser = new DOMParser();
parser.setFeature( "http://xml.org/sax/features/validation";, true );
parser.setFeature( "http://apache.org/xml/features/validation/schema";, true );
parser.setFeature( "http://apache.org/xml/features/validation/schema-full-checking";, true );


... then I do get validation ... but it was reporting a DTD validation error:

[Error] :2:178: cvc-elt.1: Cannot find the declaration of element 'SOAP-ENV:Envelope'.

... but I only want Schema validation


Any ideas?




--
Jesus M. Salvo Jr.
Mobile Internet Group Pty Ltd
(formerly Softgame International Pty Ltd)
M: +61 409 126699
T: +61 2 94604777
F: +61 2 94603677

PGP Public key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xC0BA5348



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to