- From: Jonathan Marsh <jmarsh@microsoft.com>
- Date: Wed, 15 Jun 2005 12:57:25 -0700
- To: <paul.downey@bt.com>, <dorchard@bea.com>
- Cc: <www-ws-desc@w3.org>
Would this be a valid schema that accommodates both the original and the
extended structure?
<xs:complexType>
<xs:sequence>
<xs:element name="first"/>
<xs:element name="last" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="role" type="xs:token" use="optional"
default="primary"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
> -----Original Message-----
> From: paul.downey@bt.com [mailto:paul.downey@bt.com]
> Sent: Wednesday, June 15, 2005 12:44 PM
> To: Jonathan Marsh; Jonathan Marsh; dorchard@bea.com
> Cc: www-ws-desc@w3.org
> Subject: RE: LC124: Ignore Unknowns, some proposed text
>
> Jonathan wrote:
>
> > Isn't one of the advantages of Henry's mechanism is that it the
> > results
> > are predictable and therefore interoperable? For instance, given a
> > schema for the structure:
> >
> > <name>
> > <first/>
> > <last/>
> > </name>
> >
> > And a message instance of:
> >
> > <name>
> > <first/>
> > <last/>
> > <last role="alternate-spelling"/>
> > </name>
> >
> > Henry's algorithm should predictably trim one (the last I think)
> > <last/>
> > element. I can imagine a reasonable algorithm that trims the first.
>
> That's a good point and does nicely expose a hole in my text.
>
> There's an anticipation (on my part) that the additional content will
> be sent as a result of a backwards compatible change in the schema.
>
> In this example, the v2 schema that accepts and processes both
> the v1 and v2 messages, but with the optional additional 'last'
> in the middle would have to look something like:
>
> <xs:complexType name="nameType">
> <xs:sequence>
> <xs:element name="first" />
> <xs:element name="last" minOccurs="0" />
> <xs:element name="last" />
> </xs:sequence>
> </xs:complexType>
>
> or:
>
> <xs:complexType name="nameType">
> <xs:sequence>
> <xs:element name="first" />
> <xs:any />
> <xs:element name="last" />
> </xs:sequence>
> </xs:complexType>
>
> or:
>
> <xs:complexType name="nameType">
> <xs:all>
> <xs:element name="first" />
> <xs:element name="last" maxOccurs="2" />
> </xs:sequence>
> </xs:all>
>
> I suspect writing a v2 schema in which the unexpected
> element appears ahead of the expected element with the same name
> is not possible in XML Schema 1.0 without breaking UPA.
> All of the above are invalid Schema 1.0 examples.
>
> > Which actually brings forth another question: The schema is
> primarily
> > used for code generation, and for mapping the data to that code.
> > Given
> > the above example, which <last/> will be mapped to code? Especially
> > if the following is also allowed:
> >
> > <name>
> > <first/>
> > <last role="alternate-spelling"/>
> > <last/>
> > </name>
> >
>
> Once again, I can't see how to write the v2 schema for this example,
> apart
> from making role optional (and ignored) on the v1 'last' element and
> having
> the second 'last' being optional.
>
> > Do we need Henry's algorithm in play for extracting data from the
> > message, as well as for the optional validation step? That would
> > introduce a mandatory validation step in all messages, which could
> be
> > undesirable.
>
> That would be undesirable, hence my wanting to prescribe how unknowns
> can be easily ignored by a 'ignoreUnknowns' aware processor.
>
> I am wondering how much would have to be added to my proposed
> text to become precise, and would that precision just become another
> way of wording Henry's technique.
>
> One way forward could be to add a line requiring there to be a
> compatible
> schema which represents both the v1 and v2 messages. I'll think some
> more
> on this ahead of tomorrow's call.
>
> Paul
Received on Wednesday, 15 June 2005 19:57:51 UTC