[
Lists Home |
Date Index |
Thread Index
]
On Sun, 6 Feb 2005 19:56:22 -0600, Kenneth Stephen
<marvin.the.paranoid@gmail.com> wrote:
>
>
> I dont understand how PI's can reduce
> portability. It seems to me that PI's are intended to achieve the
> opposite effect : if additional knowledge (than is visible to a basic
> XML processor) is visible to an XML application specific processor,
> then the PI serves as a signal to activate the application level
> processor. This doesnt change any the semantics of the data w.r.t.
> non-application specific data.
There are a couple of potential interop problems that PI's can open.
One is that applications can ignore PI's that they don't understand
(*processors* have to pass them on to an app, but apps may not round
trip them). Or at least this was true in SGML days; apps tended to
step on each others' PIs.
I don't remember specifically why they were forbidden in SOAP, but I
think it was to avoid the possibility of "secret handshakes" between a
service requester and provider that aren't described by the
schema/WSDL contract. One big use of PIs (again in SGML days, I
haven't touched them for some time!) was for an app to communicate
with itself or its partners some information that coudn't be put in
elements or attributes without violating the schema. That's convenient
for everyone, and not a problem if it is just describing some bit
application state that is irrelevant in the greater scheme of things,
but in Web services that could be mis-used in a way that inhibits
interop. For example, if a service implemented a formal service
contract but didn't understand a PI that the client used to specify
something important, it would not respond the same way as another
implementation of the same service contract did. SOAP nipped that
scenario in the bud by forbidding PIs altogether.
So, properly used a PI does not change the data semantics, but as with
everything else, XML Doesn't Care. and PIs give people rope with when
they have cheerfully hanged themselves. Of course, they also provide
plenty of rope to tie up loose ends, e.g. letting an instance offer
hints about what stylesheet to use to display it.
|