Web Services Guide : Troubleshooting : An Element with a ref attribute referring to another namespace was serialized incorrectly in the SOAP Envelope
An Element with a ref attribute referring to another namespace was serialized incorrectly in the SOAP Envelope
Problem
Before VA Smalltalk version 8.0, a schema element which contained a ref attribute to a type in another namespace was not serialized with the correct prefix in the Soap request envelope.
Consider the following excerpt from a schema:
<xs:schema xmlns:thisNamespace ="http://thisnnamespace.net/"
xmlns:cust ="http://customer.net/"
targetNamespace="http://thisnnamespace.net/" >
<xs:import namespace="http://customer.net/" schemaLocation="C:\theSchemaLocationl"/>
<xs:element name="StatementRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="cust:Customer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Prior to V8.0, the SOAP serialization would produce the following in a request envelope:
 
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:thisNamespace ="http://thisnnamespace.net/"
xmlns:cust ="http://customer.net/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<thisNamespace:StatementRequest>
<thisNamespace:Customer>
<cust:Name>Bob Smith</cust:Name>
<cust:acctNumber>02789</cust:acctNumber>
</thisNamespace:Customer>
</thisNamespace:StatementRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Solution
In VA Smalltalk Version 8.0, the code has been modified to result in the request envelope:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:thisNamespace ="http://thisnnamespace.net/"
xmlns:cust ="http://customer.net/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<thisNamespace:StatementRequest>
<cust:Customer>
<cust:Name>Bob Smith</cust:Name>
<cust:acctNumber>02789</cust:acctNumber>
</cust:Customer>
</thisNamespace:StatementRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 
Action:
Since the Customer complex type is imported from the "http://customer.net/" namespace, the prefix for cust: should be used to qualify it.
Last modified date: 07/05/2018