- From: Martin Gudgin <marting@develop.com>
- Date: Wed, 10 Apr 2002 17:40:51 +0100
- To: "XML Protocol Discussion" <xml-dist-app@w3.org>
At the last telcon I took an action item to summarize the two perspectives
on issue 194[1].
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The questions:
Q1: Where in the envelope is the encodingStyle attribute allowed?
Q2: Does the encodingStyle attribute apply to the element it appears on
*AND* descendants or *JUST* descendants?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The status quo:
A1: the encodingStyle is allowed on any element in the envelope.
A2: The encodingStyle applies to the element it appears on and descendants.
Note: The prose[2] and the schema[3] actually conflict. The schema does not
allow encoding style on Envelope or Header elements.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The proposals:
P1: Retain the status quo
P2: For Q1 - Disallow encodingStyle on Envelope and Header. For Q2 - keep
status quo.
P3: For Q1 - Disallow encodingStyle on Envelope, Header and Body. For Q2 -
keep status quo.
P4: For Q1 - Disallow encodingStyle on Envelope and Header. For Q2 - state
that the encodingStyle attribute only applies to the descendants of the
element it appears on.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The pros and cons:
P1: Pros: Requires little change to the spec ( schema changes to match
prose )
    Cons: encodingStyle does not make sense on the Envelope. Also doesn't
make sense on Header ( Header itself is not encoded according to an encoding
style, although the content may be ). Doesn't really make sense on Body (
Body itself is not encoded according to an encoding style, although the
content may be )
P2: Pros: Requires little change to the spec ( prose changes to match
schema )
    Cons: encodingStyle doesn't really make sense on Body ( Body itself is
not encoded according to an encoding style, although the content may be )
P3: Pros: Makes Envelope, Header and Body consistent.
    Cons: Requires change to both prose and schema.
P4: Pros: encodingStyle would make sense on Body.
    Cons: Changes scope of encodingStyle attribute. Raises question of what
the encoding style is for top-level element of a header block.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Examples:
P1:
<s:Envelope xmlns:s='http://www.w3.org/2001/12/soap-envelope'
            xmlns:m='http://example.org/headers'
            soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
  <s:Header >
    <m:First>
       I'm some data in a terminal node
    </m:First>
    <m:Second>
      <m:Data>
        Data
      </m:Data>
      <m:MoreData>
        More data
      </m:MoreData>
    </m:Second>
    <m:Third soap:encodingStyle='' >
      <m:Data value='data' />
      <m:MoreData value='more data' />
    </m:Third>
  </s:Header>
  <s:Body >
    <r:MyRequest xmlns:r='http://example.org/webservices/mystuff' >
      <r:Terminal>
        I'm data in a terminal
      </r:Terminal>
      <r:NonTerminal>
        <edge>Data</edge>
        <otheredge>More data</otheredge>
      </r:NonTerminal>
      <r:Blob soap:encodingStyle=''>
        <parent data='hello'>
          <child value='data' />
          <child value='data' />
          <child value='data' />
          <child value='data' />
        </parent>
      </r:Blob>
    </r:MyRequest>
  </s:Body>
</s:Envelope>
Observations: Implies that Envelope, Header and Body are structs. What does
it mean to have an outbound edge ( Third or Blob ) marked with a different
encodingStyle?
P2:
<s:Envelope xmlns:s='http://www.w3.org/2001/12/soap-envelope'
            xmlns:m='http://example.org/headers' >
  <s:Header>
    <m:First soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
       I'm some data in a terminal node
    </m:First>
    <m:Second soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding' >
      <m:Data>
        Data
      </m:Data>
      <m:MoreData>
        More data
      </m:MoreData>
    </m:Second>
    <m:Third>
      <m:Data value='data' />
      <m:MoreData value='more data' />
    </m:Third>
  </s:Header>
  <s:Body soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
    <r:MyRequest xmlns:r='http://example.org/webservices/mystuff' >
      <r:Terminal>
        I'm data in a terminal
      </r:Terminal>
      <r:NonTerminal>
        <edge>Data</edge>
        <otheredge>More data</otheredge>
      </r:NonTerminal>
      <r:Blob soap:encodingStyle=''>
        <parent data='hello'>
          <child value='data' />
          <child value='data' />
          <child value='data' />
          <child value='data' />
        </parent>
      </r:Blob>
    </r:MyRequest>
  </s:Body>
</s:Envelope>
Observations: Implies Body is a struct. Could be solved by moving attribute
down onto MyRequest. What does it mean to have an outbound edge ( Blob )
marked with a different encodingStyle?
P3:
<s:Envelope xmlns:s='http://www.w3.org/2001/12/soap-envelope'
            xmlns:m='http://example.org/headers' >
  <s:Header>
    <m:First soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding' >
       I'm some data in a terminal node
    </m:First>
    <m:Second soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding' >
      <m:Data>
        Data
      </m:Data>
      <m:MoreData>
        More data
      </m:MoreData>
    </m:Second>
    <m:Third >
      <m:Data value='data' />
      <m:MoreData value='more data' />
    </m:Third>
  </s:Header>
  <s:Body>
    <r:MyRequest xmlns:r='http://example.org/webservices/mystuff'
soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
      <r:Terminal>
        I'm data in a terminal
      </r:Terminal>
      <r:NonTerminal>
        <edge>Data</edge>
        <otheredge>More data</otheredge>
      </r:NonTerminal>
      <r:Blob soap:encodingStyle=''>
        <data data='hello'>
          <child value='data' />
          <child value='data' />
          <child value='data' />
          <child value='data' />
        </data>
      </r:Blob>
    </r:MyRequest>
  </s:Body>
</s:Envelope>
Observations: What does it mean to have an outbound edge ( Blob ) marked
with a different encodingStyle? Could move attribute down onto 'data'
element but then if this element is being described using a schema that
schema has to allow the encodingStyle attribute in order for validation to
succeed.
P4:
<s:Envelope xmlns:s='http://www.w3.org/2001/12/soap-envelope'
            xmlns:m='http://example.org/headers' >
  <s:Header>
    <m:First soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
       I'm some data in a terminal node
    </m:First>
    <m:Second soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'
>
      <m:Data>
        Data
      </m:Data>
      <m:MoreData>
        More data
      </m:MoreData>
    </m:Second>
    <m:Third >
      <m:Data value='data' />
      <m:MoreData value='more data' />
    </m:Third>
  </s:Header>
  <s:Body soap:encodingStyle='http://www.w3.org/2001/12/soap-encoding'>
    <r:MyRequest xmlns:r='http://example.org/webservices/mystuff' >
      <r:Terminal>
        I'm data in a terminal
      </r:Terminal>
      <r:NonTerminal>
        <edge>Data</edge>
        <otheredge>More data</otheredge>
      </r:NonTerminal>
      <r:Blob soap:encodingStyle=''>
        <parent data='hello'>
          <child value='data' />
          <child value='data' />
          <child value='data' />
          <child value='data' />
        </parent>
      </r:Blob>
    </r:MyRequest>
  </s:Body>
</s:Envelope>
Observations: This works for Body, MyRequest is the struct. Blob is an
outbound edge ( encoding style is still soap-encoding ). Content of Blob has
no encoding style. This doesn't work so well for header blocks. What is the
encoding style of First and Second?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Right now I'd prefer P3, but I know that Henrik and I have been back and
forth over this several times and seem to go round in circles between P2 and
P4 :-(
Gudge
[1] http://www.w3.org/2000/xp/Group/xmlp-issues.html#x194
Received on Wednesday, 10 April 2002 12:39:26 UTC