5231Re: xml protocols and transport bindings
- Feb 3, 2002
> Null/nil handing is not compatible depending on what version ofThis is true. For a list of some others, check out Sam Ruby's essay
on the subject:
I tend to agree with Sam, though -- things like Null vs. empty are
almost meaningless in many languages (like Perl for example), so
trying to get interop while counting on behavior of these is risky.
And I personally think it is a bit unfair to expect instant interop
with these particular high-risk categories -- the behavior of
null/nil, empty, IsDefined, etc. can vary wildly depending on the
platform and language. Even things like signed/unsigned and boolean
have rather different implementations depending on platform. Even
on the same platform (for example, use C# to call into interop C++
that calls Oracle stored procedure) you will get many different
interpretations of what null means.
And even if you go to XSD spec, you find that xsi:nil behavior is
completely different depending on whether you have an element or an
attribute (at least in the case of xsd:default). So it is in fact
impossible to even round-trip pure XML faithfully that uses explicit
null, in certain cases.
Not to say this is not an interop problem, but just that these
problems are well-known and common, so I don't think it is
necessarily an indictment of SOAP to say that "nil behavior is
flaky". Nil is messy everywhere.
But anyway, I get your point -- as long as you stick to simple
strings, numbers, and arrays, things are pretty good (and current
version toolkits; the namespace issues like in Apache vs. MS have
been fixed AFAIK). But like you say, the null (especially) and some
other cases are not very good. And I think another risky one at
this point is passing "document" content (basically injecting a
whole XML document as the payload). The support for this is not
- << Previous post in topic Next post in topic >>