Processing model

The message exchange model says (below is from our
editor's draft):

  A XMLP/SOAP application receiving a XMLP/SOAP message
  MUST process that message by performing the following
  actions in the order listed below:
    1 - Identify all blocks of the XMLP/SOAP message intended
      for that application (see section 4.2.2)
    2 - Verify that all mandatory blocks identified in step 1
      are supported by the application for this message (see
      section 4.2.3) and process them accordingly. If this is
      not the case then discard the message (see section 4.4).
      The processor MAY ignore optional blocks identified in
      step 1 without affecting the outcome of the processing.
    3 - If the XMLP/SOAP application is not the ultimate
      destination of the message then remove all blocks
      identified in step 1 before forwarding the message.

There are a couple of things that I wanted to get people's
opinion on:
 - this doesn't (nor does any other part of the spec)
   say anything about a SOAP/XMLP processor validating
   the message.  Or is it assumed that if it doesn't
   match the schema it MUST fault?  Is a processor
   noncompliant if it doesn't fault?
 - Taking a very literalist approach, the above list
   could be taken to imply that a SOAP/XMLP processor
   needs to scan the entire message in order to identify
   all of the blocks intended for it before can process
   any of them.  Is this truly the intent?  If so is
   a streaming based SOAP/XMLP processor that reads and
   processes the message blocks as they come rather in than
   doing a complete identification process first (as
   #1 suggests) wrong?
   I want to believe that an implementation can perform
   steps 1,2 and 3 on each block individually rather
   than having to preform step 1 on the entire message,
   then step 2 on the entire message and finally step 3,
   but it isn't clear.  Perhaps some clarification is
   needed in the spec?

-Dug

Received on Friday, 18 May 2001 22:11:51 UTC