Summary of Issue 194 - encodingStyle

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