  | |  | Xerces 2.x | Xerces 2.x 2003-02-12 - By sandygao@(protected)
1. src-import.3.1: ...
You provided 2 location hints for the namespace "http://foo/TruckTrace", one through xsi:schemaLocation with the value "TruckTrace.xsd"; one through <import>, with the value "TruckTraceSoap.xsd". The parser is free to pick whichever one. Xerces decides to use "TruckTrace.xsd". But this schema has target namespace "http://schemas.xmlsoap.org/soap/envelope/", which is why the error is reported.
To fix it, change xsi:schemaLocation so that the uri pairs match; or change the external schema location property to include locations for both namespaces. (This property has precedence over other location hints from the instance or the schema.)
2. cvc-elt.1: ...
Now there is no location hint for the namespace " http://schemas.xmlsoap.org/soap/envelope/", so the parser can't find a declaration for the root element.
HTH, Sandy Gao Software Developer, IBM Canada (1-905) 413-3255 sandygao@(protected)
"Th�bault, M�d�rick" <Mederick.Thebault@(protected) To: <xerces-j -user@(protected)> ferries.fr> cc: Subject: Xerces 2.x 02/12/2003 01:09 PM Please respond to xerces-j-user
Hello
Here are the schema that I try to use.
TruckTrace.xsd, TruckTraceSoap.xsd, TruckTraceRequest.xsd, TruckTraceResponse.xsd.
TruckTrace.xsd
<xs:schema targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:response="http://foo/TruckTrace" xmlns:request="http://foo/TruckTrace" elementFormDefault="qualified" attributeFormDefault="qualified"> <!-- <xs:import namespace="http://foo/TruckTrace" schemaLocation="TruckTraceRequest.xsd"/> <xs:import namespace=" http://foo/TruckTrace" schemaLocation="TruckTraceResponse.xsd"/> --> <xs:import namespace="http://foo/TruckTrace" schemaLocation="TruckTraceSoap.xsd"/> <xs:element name="Envelope"> <xs:complexType> <xs:sequence> <xs:element name="Header" type="SOAP-ENV:HeaderType" form="qualified" minOccurs="0"/> <xs:element name="Body" form="qualified">
<xs:complexType>
<xs:choice>
<xs:element ref="request:truckEnqui"/>
<xs:element ref="response:truckResponse"/>
<xs:element name="Fault" type="SOAP-ENV:FaultType"/>
</xs:choice>
</xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="encodingStyle" use="optional" fixed="http://schemas.xmlsoap.org/soap/encoding/"/> </xs:complexType> </xs:element> <xs:complexType name="HeaderType"> <xs:sequence> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="FaultType"> <xs:sequence> <xs:element name="faultcode" type ="xs:QName"/> <xs:element name="faultstring" type="xs:string"/> <xs:element name="faultfactor" type ="xs:anyURI" minOccurs="0"/> <xs:element name="detail" minOccurs ="0"> <xs:complexType> <xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>
TruckTraceSoap.xsd
<xs:schema targetNamespace="http://foo/TruckTrace" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:include schemaLocation="TruckTraceRequest.xsd"/> <xs:include schemaLocation="TruckTraceResponse.xsd"/> </xs:schema>
TruckTraceRequest.xsd
<xs:schema targetNamespace="http://foo/TruckTrace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://foo/TruckTrace" elementFormDefault="unqualified" attributeFormDefault="unqualified"> <xs:element name="truckEnqui" type="TruckEnquiType"/> ........................ </xs:schema>
Here is the value for my parser property "http://apache.org/xml/properties/schema/external-schemaLocation"
Object value = "http://schemas.xmlsoap.org/soap/envelope/ "+ directory +"TruckTrace.xsd";
When receiving request like the following, all is OK for my parser :
<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" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding"> <soap-env:Body> <ns0:truckEnqui xmlns:ns0="http://foo/TruckTrace">
<sClientAccountNo>F101012E</sClientAccountNo>
<dDepartureDate>2003-02-12T00:00:00</dDepartureDate>
<sSearchWithinFiveDays>Y</sSearchWithinFiveDays> <sRoute/> <sRegistrationNo/> </ns0:truckEnqui> </soap-env:Body> </soap-env:Envelope>
but maybe not according to W3C specs....
The request like the following is more annoying :
<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" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xsi:schemaLocation="http://foo/TruckTrace TruckTrace.xsd"> <soap-env:Body> <ns0:truckEnqui xmlns:ns0="http://foo/TruckTrace">
<sClientAccountNo>F101012E</sClientAccountNo>
<dDepartureDate>2003-02-12T00:00:00</dDepartureDate>
<sSearchWithinFiveDays>Y</sSearchWithinFiveDays> <sRoute/> <sRegistrationNo/> </ns0:truckEnqui> </soap-env:Body> </soap-env:Envelope>
because then we got this error :
src-import.3.1: The namespace attribute 'http://foo/TruckTrace' of an <import> element information item must be identical to the targetNamespace attribute 'http://schemas.xmlsoap.org/soap/envelope/' of the imported document.
And when changing the parser property to
Object value = "http://foo/TruckTrace "+ directory +"TruckTrace.xsd";
then I got
cvc-elt.1: Cannot find the declaration of element 'soap-env:Envelope'.
Am I wrong in the settings of the parser, Do I have to modify the request, Do the Schema are OK? I am a bit lost. Does something exist somewhere to help answering those questions a part W3C specs?
Thanx
Mederick
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|
 |