W3C home > Mailing lists > Public > www-ws-desc@w3.org > July 2005

RE: LC124

From: <paul.downey@bt.com>
Date: Mon, 11 Jul 2005 14:54:08 +0100
Message-ID: <2B7789AAED12954AAD214AEAC13ACCEF2709E4BE@i2km02-ukbr.domain1.systemhost.net>
To: <mlong@mvsquared.net>, <"peter.hendry@capeclear.com">
Cc: <www-ws-desc@w3.org>

Matt

I think saying validation "is not a requirement for any SOAP processor and certainly
not WSDL" is a bit strong. 

Validation is a part of the proposal since preserving the ability to validate messages 
does provide a proof of the correctness of the ignoreUnknows mechanism. 

I certainly do not wish to preclude processors from perfoming validation, and believe
such validation should be possible by an independent 'observer', as outlined here:
http://lists.w3.org/Archives/Public/www-ws-desc/2005Jun/0012.html

Paul



-----Original Message-----
From:	Matt Long [mailto:mlong@mvsquared.net]
Sent:	Mon 7/11/2005 8:45 AM
To:	Downey,PS,Paul,CXMA C; "peter.hendry@capeclear.com"
Cc:	www-ws-desc@w3.org
Subject:	RE: LC124

Hi Paul,

<Some_thoughts_from_the_field/>

These extensibility pattens are certainly useful in their own context.  However, they appear predicated on the fact that processor will what to perform a schema validation against the context.  This is not a requirement for any SOAP processor and certainly not WSDL.  It would be more appropriate (in imo) that the correct deserialization of the message is the primary goal.  Therefore, when extensibility is the a major concern across multiple business boundaries I have been using a Info Set representation of the message context at a high level.  This enables either the sender of receiver to build server | client to correctly deserialize the message and ignore the out-of-context-elements.  Understand, that the schema deployed across multiple nodes may in fact be very different, but each complies with the Xml Info Set representation.  If the receiver of the message wishes to validate the message against a schema, then the receiver can validate the wire Xml by creating a schema based on 

(1) required (non-optional) elements in the Info Set
(2) receiver's concrete extensibility elements
(3) <xs:any> extensibility elements (which implies 'ignore', i.e., not in receiver's context)

Notice, that I'm stating the the receiver is validating against a schema created by the receiver, not the sender.  This is because the message must be deserialized in the receiver's context, not the sender's.

This approach elievates the N*(N-1) issue when referencing x-node WSDLs, i.e., when 'n' nodes transmit and consume the same required information and each extends the message context independently and differently.  I do not think that extensibility patterns referenced address this issue (at least I think it's an issue).

Consider a node set A,B,C,D where each communicate the same core message, but each extend each it differently.  The number of required references to schema becomes 12, i.e., 4*(3-1).  One can only imagine the 'nasty-ness' (not to mention cost) of this when communicating the same core context (which MAY be extended by any node) across many nodes in a many-to-many node model.

I've addressed not a one-to-one scalable extensibility model, rather a many-to-many scalable extensibility model, which I think is the actual issue here.  

In summary,

(1) Schema validation is not required, but may be accomplished.
(2) Correct deserialization is required.
(3) Extensibility is accomplished in a many-to-many node relationship.


--
Matt Long
MV Squared Technologies
mlong@mvsquared.net
901-848-2640




	--------- Original Message --------
	From: paul.downey@bt.com
	To: "peter.hendry@capeclear.com" <peter.hendry@capeclear.com>
	Cc: www-ws-desc@w3.org
	Subject: RE: LC124
	Date: 11/07/05 03:17
	
	
	
	Pete,
	
	I don't quite follow your example. The additional values added in the v2
	schema are mandatory, so the schema would fail to validate a v1 message and wouldn't
	be backwards compatible with a client sending messages constructed using the 
	original schema.
	
	So the usual case in this kind of evolution is that the additional elements are marked 
	with minOccurs="0", and putting minOccurs="0" ahead of the "slurping vortex of the
	greedy xs:any wildcard"* violates UPA.
	
	This issue has been outlined in a number of papers, articles and conference 
	presentations, including one from our own Dave Orchard:
	http://www.xml.com/pub/a/2003/12/03/versioning.html
	
	by Dare Obsanjo, who offered a 'wrapper pattern' work-round:
	http://www.xml.com/pub/a/2004/07/21/design.html
	
	and I too dined out on this problem with a presentation:
	http://whatfettle.com/2004/09/XMLOpen/
	
	Even with Dare's suggestion, if all that was required was to add this magic 
	to the end of each and every sequence, and "some tool was generating the
	schemas" or those tools and everyone, in particular publishers of schemas
	for vertical standards, used this incantation already, then I'd agree,
	there wouldn't be an issue!
	
	LC124 isn't a request for syntactic sugar. Rather, that it isn't possible to write 
	compatible schemas to describe the simple evolution outlined by your example.
	
	Paul
	
	* more or less how Doug Purdy described it at the Schema Workshop
	
	
	
	-----Original Message-----
	From: Pete Hendry [mailto:peter.hendry@capeclear.com]
	Sent: Fri 7/8/2005 10:03 AM
	To: Downey,PS,Paul,CXMA C
	Cc: www-ws-desc@w3.org
	Subject: Re: LC124
	
	Ok. Another question. Why can't standard schema extensibility be used if a schema designer wants to be able to add elements in future?
	
	<complexType name="X">
	<sequence>
	<element name="name" type="string"/>
	<any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
	</sequence>
	<anyAttribute namespace="##targetNamespace" processContents="lax"/>
	</complexType>
	
	and then the new version of the type define other elements explicitely
	
	<complexType name="X">
	<sequence>
	<element name="name" type="string"/>
	<element name="id" type="string"/>
	<element name="age" type="int"/>
	<any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
	</sequence>
	<anyAttribute namespace="##targetNamespace" processContents="lax"/>
	</complexType>
	
	Then if a client using the original schema gets back a message containing
	
	<...>
	<name>Pete</name>
	<id>1234</id>
	<age>21</age>
	</...>
	
	it will at least still validate against the schema.
	
	It is obviously a bit of work to add this to each type but the expectation is that some tool is generating the schema so this is not a problem.
	
	Pete
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	



________________________________________________
Message sent using UebiMiau 2.7.2
Received on Monday, 11 July 2005 13:54:19 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:36 GMT