- From: Martin Gudgin <martin.gudgin@btconnect.com>
- Date: Tue, 23 Apr 2002 10:08:50 +0100
- To: "XML Protocol Discussion" <xml-dist-app@w3.org>
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.'
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 05:08:50 UTC