[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Suggested guidelines for using local types. (was Re: Enlightenment via avoiding the T-word)
- From: "Fuchs, Matthew" <matthew.fuchs@commerceone.com>
- To: francis@redrice.com
- Date: Thu, 06 Sep 2001 08:03:33 -0700
Francis,
The "conceit" of XML Schema is that Schema processing happens on the infoset
of the well-formed document parse. Therefore, all namespace details have
been settled before XSDL starts its business. As such, XSDL is basically
concerned with qualified and unqualified - not prefixed or unprefixed. But
your post reemphasizes the point that it's the instance author's job to make
his/her intent clear.
Matthew
> -----Original Message-----
> From: Francis Norton [mailto:francis@redrice.com]
> Sent: Saturday, September 01, 2001 5:03 AM
> To: Fuchs, Matthew
> Cc: 'Rick Jelliffe'; xml-dev@lists.xml.org
> Subject: Re: Suggested guidelines for using local types. (was Re:
> Enlightenment via avoiding the T-word)
>
>
> "Fuchs, Matthew" wrote:
> >
> > In other words, if one follows the best practice of:
> > 1) always using a targetNamespace for your schema
> > 2) always making local names unqualified
> > 3) writing your XSLT scripts as I've suggested
> > then your scipts will be robust in the face of added local
> names or global
> > names, all with the current generation of software and
> without needing
> > access to the PSVI.
> >
> But these quidelines need to make some reference to the difference
> between unprefixed and unqualified elements (the big
> difference between
> elements and attributes which is inexplicably unaddressed in the XML
> Schema spec).
>
> Say I have a SOAP wrapper round a qualified global element Q which in
> turn contains an unqualified local element u
>
> Now consider the following two messages:
>
> message [1]:
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> <SOAP-ENV:Body>
> <m:Q xmlns:m="Some-URI">
> <U>DIS</U>
> </m:Q>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> message [2]:
> <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
> <Body>
> <m:Q xmlns:m="Some-URI">
> <U>DIS</U>
> </m:Q>
> </Body>
> </Envelope>
>
> Now are these equivalent messages? No, according to the namespace
> recommendation (and XSLT) they're different - the inner element "U" is
> in no namespace in the first case, and in the SOAP namespace in the
> second case. What happens if I schema-validate the global element Q? I
> trust, for the sake of consistency, that the second Q will be
> rejected,
> even though it is textually identical to the first, and even
> though the
> outer wrapper is identical in terms of, say, XSLT processsing.
>
> The solution - as someone else pointed out, sorry I can't find the
> posting - is to reset the default declaration on each global element
> with unqualified locals, eg
>
> <m:Q xmlns:m="Some-URI" xmlns="">
> <U>DIS</U>
> </m:Q>
>
> which can now be used safely in either context.
>
> I know that namespace-aware processing tools should help prevent the
> situation arising, but I really think that this issue should be
> mentioned in any best practice discussion of local namespaces.
>
> Francis.
>