- From: Jacek Kopecky <jacek@systinet.com>
- Date: Tue, 23 Apr 2002 13:53:46 +0200 (CEST)
- To: Martin Gudgin <martin.gudgin@btconnect.com>
- cc: XML Protocol Discussion <xml-dist-app@w3.org>
Gudge, generally I like it, with just one remark inline.
Jacek Kopecky
Senior Architect, Systinet (formerly Idoox)
http://www.systinet.com/
On Tue, 23 Apr 2002, Martin Gudgin wrote:
> This is a proposal for dealing with the notion of root ( and hence the root
> attribute ) in our spec.
>
> The current data model and encoding rules do not talk about 'independent
> elements' AKA 'top-level multirefs'. The implication is that nodes with
> multiple inbound edges are always serialized in-line.
>
> If independent elements do not exist then there are two possible scenarios
> regarding the root;
>
> 1. The graph has no root
>
> 2. Each root of the graph is encoded as the outermost element of a
> serialization.
>
> In either case, the root attribute is unnecessary as each case can be
> determined by inspection.
>
> Proposal;
>
> a) Leave the root attribute out of the spec ( it is not in the current
> editors copy ). Close the current 'todo' on the editors to 'add the notion
> of root to the data model' by stating;
>
> 'A graph node that has no inbound edges is a root of the graph.'
What we needed is not a graph root but a serialization root. You
define the former, I don't know at the moment how one could
easily define the latter. Consider the following case:
<env:Body>
<m:foo encodingStyle="{soap-encoding}" id="id1">
<m:value>42</m:value>
<m:next ref="id1"/>
</m:foo>
</env:Body>
It's a circular graph and the serialization root is not a graph
root (this graph has no root).
I'd propose that if we don't come up with a definition of a
seriailzation root (as I cannot at the moment), we can just skip
this as I don't feel a strong need for this definition anyway.
Below, I think you also mean to talk about serialization roots as
opposed to graph roots.
> b) Ensure that the language in the encoding section mandates that all nodes
> are serialized in-line, including nodes with multiple inbound edges ( if we
> feel the language is not strong enough already ).
>
> Note: I've said 'a root/serialization' instead of 'the root/serialization'
> to leave in the possibility of having multiple roots to a graph. This may
> arise where there are references in a Header block to nodes in the Body ( or
> vice versa, or references in one Header block to another ). e.g.
>
> <s:Envelope xmlns:s='http://www.w3.org/2001/12/soap-envelope' >
> <s:Header>
> <h:MyHeader xmlns:h='http://example.org/headers' >
> <h:Data s:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
> <h:d>Quux</h:d>
> <h:e ref='id1' />
> </h:Data>
> </h:MyHeader>
> </s:Header>
> <s:Body>
> <r:Request xmlns:r='http://example.org/requests' >
> <r:Data s:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
> <r:a id='id1'>Foo</r:a>
> <r:b>Bar</r:b>
> <r:c>Baz</r:c>
> </r:Data>
> </r:Request>
> </s:Body>
> </s:Envelope>
>
>
> Which gives us the following graph;
>
>
> -------- ---------
> | | Edge d | |
> | |---------->| Quux |
> | | | |
> -------- ---------
> |
> | ----------
> | Edge e |id1 |
> ------------->| Bar |
> | |
> ----------
> ^
> Edge a |
> ------------------
> |
> |
> ------- --------
> | | Edge b | |
> | |----------->| Bar |
> | | | |
> ------- --------
>
> Where the two empty boxes are both roots of the graph ( and are represented
> in the XML by the two Data elements.
>
> Gudge
>
Received on Tuesday, 23 April 2002 08:10:07 UTC