Turning off DTD validation but allow Schema validation ( was Re:
Schema valida 2003-01-09 - By Jesus M. Salvo Jr.
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: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|