Re: SOAP spec Sec "5.4.2 Arrays" - namespace used in qualifying array elements in a SOAP sample is not correct

Affan Dar writes:

>> As I understand - 'xsd' cannot be used to qualify 
>> elements in an instance document. It should be 
>> SOAP-ENC:string instead of xsd:string.

I'm sorry, but your understanding is not correct.  Not only can types from 
the XML schema datatypes be used, there are common circumstances in which 
they should be.  First of all from the SOAP spec [1]:

"Throughout this document, the namespace prefix "xsi" is assumed to be 
associated with the URI "http://www.w3.org/1999/XMLSchema-instance" which 
is defined in the XML Schemas specification [11]. Similarly, the namespace 
prefix "xsd" is assumed to be associated with the URI 
"http://www.w3.org/1999/XMLSchema" which is defined in [10]."

As always in XML, you can use any prefix you like, it's the associated URI 
that matters.  I'll use the same convention here.


That said, if you want to tell me that something is an integer, the right 
way to do it is:

        <AGE xsi:type="xsd:integer">12</age>

The precise definition of the xsi:type attribute is found at [2], and a 
more informal introduction can be foundin the schema primer at [3]. 

As far as I know (I'm disconnected at the moment and can't easily check), 
SOAP-ENC:string is an element declaration, not a type.  Predefined 
elements such as SOAP-ENC:string are indeed useful in certain specific 
situations, such as in certain arrays, but there is nothing wrong with 
using xsi:type and the built in (or user defined, if you know that schemas 
are around) types.  Of course, if you use user-defined types, you may 
cause some challenges for certain dynamically typed non-schema-aware 
environements (certain script based implementations, for example).

Hope this is helpful.

[1] http://www.w3.org/TR/SOAP/#_Toc478383489
[2] http://www.w3.org/TR/xmlschema-1/
[3] http://www.w3.org/TR/xmlschema-0/


------------------------------------------------------------------------
Noah Mendelsohn                                    Voice: 1-617-693-4036
Lotus Development Corp.                            Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------------

Received on Thursday, 12 April 2001 16:57:00 UTC