W3C home > Mailing lists > Public > xml-dist-app@w3.org > April 2002

Proposal for dealing with root

From: Martin Gudgin <martin.gudgin@btconnect.com>
Date: Tue, 23 Apr 2002 10:08:50 +0100
Message-ID: <009301c1eaa6$7c4238f0$b47ba8c0@zerogravitas>
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

In either case, the root attribute is unnecessary as each case can be
determined by inspection.


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' >
  <h:MyHeader xmlns:h='http://example.org/headers' >
   <h:Data s:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
     <h:e ref='id1' />
  <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>

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.

Received on Tuesday, 23 April 2002 05:08:50 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 22:01:19 UTC