Validating SOAP response messages fails with E cvc-elt.1:

Having trouble installing Oxygen? Got a bug to report? Post it all here.
rpetruzz
Posts: 4
Joined: Mon Sep 05, 2005 4:48 pm

Validating SOAP response messages fails with E cvc-elt.1:

Post by rpetruzz »

Hi,

I'm trying to develop a set of code to use XSLT to transform SOAP responses from a WebSphere Application Server V5.1 into HTML so that we can look for data quality problems.

Using IBM's TCP/IP monitor I can capture the SOAP XML as it is returned to the client. When I try to validate the message in oXygen I get the following message:

SystemID: C:\OxygenProjects\WebServicesXML\XMLFiles\AuthorizationResponse.xml
Location: 2:234
Description: E cvc-elt.1: Cannot find the declaration of element 'soapenv:Envelope'.
URL: http://www.w3.org/TR/xmlschema-1/#cvc-elt

[b]Below is a sample of the overall message:[/b]
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getAuthorizationByVOResponse xmlns="http://webservices.authorization.oxhp.com">
<getAuthorizationByVOReturn>
<statusAction xsi:nil="true" xmlns="http://valueobjects.commons.oxhp.com" />
<statusError xmlns="http://valueobjects.commons.oxhp.com">NO_ERROR</statusError>
<statusMessage xmlns="http://valueobjects.commons.oxhp.com">No error.</statusMessage>
<statusTrace xsi:nil="true" xmlns="http://valueobjects.commons.oxhp.com" />
<lnkAuthorizationDetailResponseVO xmlns="http://valueobjects.authorization.oxhp.com">
</lnkAuthorizationDetailResponseVO>
</getAuthorizationByVOReturn>
</getAuthorizationByVOResponse>
</soapenv:Body>
</soapenv:Envelope>

The goal is to accept the TCP/IP trace output as sent by the server and then transform it for the end-user to examine for data inconsistencies.

Is there any solution to this error, [b]without[/b] modifying the SOAP output message???

Thanks,
Bob :D
Radu
Posts: 9420
Joined: Fri Jul 09, 2004 5:18 pm

Post by Radu »

Hi Bob

The problem is that the file you are trying to validate does not hava a reference to the schema used for validation.

There are actually 2 solutions to this problem:

1) Without modifying the SOAP response xml file. Open it in Oxygen, click the toolbar button called "External Validation" (near the Validation button),
then choose as a XML schema file the "envelope.xsd" file located in the Oxygen/frameworks/wsdl/xsd/ directory.

2) With modification to the XML file. Click the "Associate schema" toolbar button, choose the same schema as above, the click Validate.

Hope this helps,
Regards, Radu.
sorin_ristache
Posts: 4141
Joined: Fri Mar 28, 2003 2:12 pm

Post by sorin_ristache »

Hello,

There is a another simple solution: associate a default schema to all SOAP messages by adding a rule to the table available in Preferences - Editor - Tag Insight - Default:

- for Namespace: http://schemas.xmlsoap.org/soap/envelope/
- for Root local name: Envelope
- for File name: <ANY> (the default value)
- for Schema type: XML Schema
- for Schema URI: use the file open button to select a file envelope.xsd containing the SOAP Envelope schema.

Then just load any SOAP response file in <oXygen/> and press the Validate button. It works because the default Tag Insight schema is used also for validation.

Best regards,
Sorin
rpetruzz
Posts: 4
Joined: Mon Sep 05, 2005 4:48 pm

Post by rpetruzz »

Thank you Radu and sorin,

I had stumbled across the solution that Radu suggested. I browsed the Internet for the url and I found the schema that it referenced. I created my own soapenv.xsd and used an external reference to associate it with my SOAP message.

I haven't tried sorin's solution, but I will very soon. I'm working with output from seven different services, so these solutions are very much appreciated.

:D

Regards,
Bob
Post Reply