- From: Jacek Kopecky <jacek@systinet.com>
- Date: Tue, 12 Feb 2002 11:03:42 +0100 (CET)
- To: Andrew Layman <andrewl@microsoft.com>
- cc: XMLDISTAPP <xml-dist-app@w3.org>
Andrew, I agree completely with your "[in] many cases, the semantic intent is shown more clearly by, and interoperability would be better served by [...]". The main problem causing clash between our Encoding and XML Schema is the referencing model, not structs nor arrays. The reasons for our referencing model is not that everybody must use it or even that everybody should use it. One of the reasons is that in many other cases, the implementation of the task at hand would be better served by using tools which help you automate serializing and deserializing of the linked graph structures already present in your applications because you don't want to serialize your data into a "nicer" XML tree and reconstruct the proper links on the receiver. In some cases, even with new applications, it is impossible to reconstruct the proper links because the links themselves convey useful information. In such cases, the links can either be encoded on the application level, like the following tree of structs probably perfectly describable by an XML Schema schema <aStructure> <firstMember> <value>42</value> <id>anApplicationID1</id> </firstMember> <secondMember> <ref>anApplicationID1</ref> </secondMember> </aStructure> or it can be done at the XML level, for example by using a pair of ID and IDREF typed attributes. SOAP Encoding is an attempt to standardize this pair of attributes. Again - Don't Use Where Inappropriate! 8-) Best regards, Jacek Kopecky Senior Architect, Systinet (formerly Idoox) http://www.systinet.com/ On Fri, 8 Feb 2002, Andrew Layman wrote: > Regarding the wire format representation of a linked list, the > appropriate form depends a lot on the semantic level you want to convey > and on assumptions about the compatibility of the data models on each > end of the exchange. For example, I would expect that many cases, the > semantic intent is shown more clearly by, and interoperability would be > better served by > > <PurchaseOrder> > <shipTo> > <name>Alice Smith</name> > <street>123 Maple Street</street> > <city>Mill Valley</city> > <state>CA</state> > <zip>90952</zip> > </shipTo> > <Items> > <Item> > <productName>Lawnmower, model BUZZ-1</productName> > <quantity>1</quantity> > <price>148.95</price> > </Item> > <Item> > <productName>Baby Monitor, model SNOOZE-2</productName> > <quantity>1</quantity> > <price>39.98</price> > </Item> > <Item> > <productName>Fiesta Lights</productName> > <quantity>144</quantity> > <price>1.50</price> > </Item> > </Items> > </PurchaseOrder> > > than by something along the lines of > > <Item id='i1'> > <productName>Lawnmower, model BUZZ-1</productName> > <quantity>1</quantity> > <price>148.95</price> > </Item> > <Item id='i2'> > <productName>Baby Monitor, model SNOOZE-2</productName> > <quantity>1</quantity> > <price>39.98</price> > </Item> > <Item id='i3'> > <productName>Fiesta Lights</productName> > <quantity>144</quantity> > <price>1.50</price> > </Item> > <Node id='i5'> > <value idref='i1'/> > <back xsi:nil='true'/> > <forth idref='i6'/> > </Node> > <Node id='i6'> > <value idref='i2'/> > <back idref='i6'/> > <forth idref='i7'/> > </Node> > <Node id='i7'> > <value idref='i3'/> > <back idref='i6'/> > <forth xsi:nil='true'/> > </Node> > <Items id='i4'> > <e id='i5'/> > <e id='i6'/> > <e id='i7'/> > </Items> > <PurchaseOrder> > <shipTo> > <name>Alice Smith</name> > <street>123 Maple Street</street> > <city>Mill Valley</city> > <state>CA</state> > <zip>90952</zip> > </shipTo> > <items idref='i4'/> > </PurchaseOrder> > > > -----Original Message----- > From: Jacek Kopecky [mailto:jacek@systinet.com] > Sent: Friday, February 08, 2002 7:21 AM > To: Tim Ewald > Cc: 'XMLDISTAPP' > Subject: RE: Issue with soap-rpc:result > > Tim, > I respectfully disagree with your message below. > Let's imagine a double-linked list structure described below > with a simple c-style code (this actually describes a more > general structure which may be used to represent a double linked > list): > > struct node { > int value; > node *back; > node *forth; > } > >
Received on Tuesday, 12 February 2002 05:03:45 UTC