- From: David Orchard <dorchard@bea.com>
- Date: Fri, 13 Feb 2004 12:06:01 -0800
- To: <www-ws-desc@w3.org>
Hi all, Here's proposed text to send to the XML Schema WG on issue of versioning. Please let me know when you can. I'd prefer to send this before the wsd wg telcon on thursday. Dear Schema WG, On behalf of the WSDL WG I'm conveying a use case for versioning and question about a solution and the intentions for Schema 1.1. In discussions on Providing Compatible Schema Evolution [1], the broad question of extensibility and versioning as a whole was examined. And there are tricky problems and difficult choices for solutions. Another important question to ask is what is the minimum necessary for success in versioning? If one assumes that we do not need to insert elements in arbitrary places, just at the end, and retaining compatibility, then there may be a simpler solution that XML Schema 1.1 could do. Let us take a simple name example through two iterations. The first iteration adds an optional "middle" name at the end of the name. The second option adds an optional "suffix" at the end of the extended name. This looks like: <name> <first>Dave</first> <last>Orchard</last> </name> <name> <first>Dave</first> <last>Orchard</last> <middle>Bryce</middle> </name> <name> <first>Dave</first> <last>Orchard</last> <middle>Bryce</middle> <suffix>II</suffix> </name> We want these 3 of these documents to be valid against the 3 schemas. It seems that the simplest change would be to have a "low priority" wildcard as mentioned in previous discussions. The schemas using this would be something like: <xs:complexType name="nameType"> <xs:sequence> <xs:element name="first" type="xs:string" /> <xs:element name="last" type="xs:string" minOccurs="0"/> <xs:any namespace="##any"/> </xs:sequence> </xs:complexType> <xs:complexType name="nameType"> <xs:sequence> <xs:element name="first" type="xs:string" /> <xs:element name="last" type="xs:string" minOccurs="0"/> <xs:element name="middle" type="xs:string" minOccurs="0"/> <xs:any namespace="##any"/> </xs:sequence> </xs:complexType> <xs:complexType name="nameType"> <xs:sequence> <xs:element name="first" type="xs:string" /> <xs:element name="last" type="xs:string" minOccurs="0"/> <xs:element name="middle" type="xs:string" minOccurs="0"/> <xs:element name="suffix" type="xs:string" minOccurs="0"/> <xs:any namespace="##any"/> </xs:sequence> </xs:complexType> It seems that a low priority wildcard is sufficient to enable an explicit extensibility point that allows backwards and forwards compatible evolution through multiple versions with extension at the end of the type definition and extension in the same namespace. This isn't the fullest solution, as it does not allow for default extensibility, nor extensibility in between elements. But this appears significantly improved over current capabilities. I'm not able to track the intricacies of the discussion, but it appears that the Schema group is talking about this in the context of RQ-135, with a proposal at [2], another proposal about 2nd class wildcards at [3], and a fair amount of follow on discussion. Again, I can't follow through the intricacies of the discussion of the ilk of subsumption of lexical spaces versus value spaces for redefinition, and why a validator needs to look up the tree for subsumption. We are interested in determining whether the Schema WG sees: this use case as important for Schema 1.1, whether this use case will be solved in Schema 1.1, if low priority wildcards are a solution to this problem, and if low-priority wildcards will be the Schema 1.1 solution. On behalf of the WSDL WG, Dave Orchard [1] http://www.pacificspirit.com/Authoring/Compatibility/ProvidingCompatibleSche maEvolution.html [2] http://lists.w3.org/Archives/Member/w3c-xml-schema-ig/2004Feb/0028.html [3] http://lists.w3.org/Archives/Member/w3c-xml-schema-ig/2004Feb/0035.html
Received on Friday, 13 February 2004 15:05:27 UTC