W3C home > Mailing lists > Public > public-forms@w3.org > November 2007

Re: Major problem with schema needs immediate attention.

From: John Boyer <boyerj@ca.ibm.com>
Date: Thu, 1 Nov 2007 17:11:46 -0700
To: ebruchez@orbeon.com
Cc: "Forms WG (new)" <public-forms@w3.org>, public-forms-request@w3.org
Message-ID: <OFDA5FA200.15ADC839-ON88257386.0082CE70-88257387.00013183@ca.ibm.com>
Hi Erik,

The use case for "strict when possible" is really straightforward. 

Schemas are coming from data architects, who expect that the process 
contents default *defined* in XML Schema 1.0 will be observed.  That 
default is strict.  In other words, when the data architect writes a 
schema, he expects strict unless *he* says otherwise.  He also expects, 
despite classification as optional to implement, that lax validation will 
occur within content once a strict validation failure occurs.

These expectations arise because the server side code that processes 
submitted schema instance results from forms expects to be able to invoke 
the schema validity check in default mode and will reject the input if the 
schema validation fails.  Within minutes of that happening, I will end up 
with a priority 1 crit sit demanding that we fix our xforms processor to 
not send data that fails schema validation, and I will be compelled to 
"fix it" despite any claims of lax validation appearing in the actual 1.1 
specification.  This will do more harm than good for xforms.

All prior versions of the spec do not say what kind of validation is 
performed, they simply reference XML Schema 1.0, which by my read means 
that strict processing is what occurs in the absence of a processContent 
declarations to the contrary in the schema.

In the wild, we have had some implementations that have dropped down to 
lax in obvious cases, like a type lib, that have arisen over time in 
practice.  Sadly, none of these implementation experiences landed in the 
spec, and the feature demand did not percolate up until your LC comment 
(i.e. nobody has taken the action item to fix the problem in years now). 
We have to address the LC comment, which could be done by deferring it or 
by doing something about it.  If we choose other than defer, we have to be 
sure that no big objections are going to happen, and removing the strict 
validation will assuredly cause that to happen.  Maybe fixing it the way 
we have been discussing it will also cause an objection, e.g. from Orbeon. 
 In that case, we're pretty much stuck with deferral.  Frankly, I'd rather 
defer and lose official, interoperable support of typelibs over going from 
strict to lax.

FWIW, I do like best the approach Leigh is taking because it's clear there 
are multiple ways to implement and it seems it can be overriden by XSLT 
2.0 style attributes later, so we're not getting boxed in now.  So the 
question would be whether you could live with it... :-)

Best regards,
John M. Boyer, Ph.D.
STSM: Lotus Forms Architect and Researcher
Chair, W3C Forms Working Group
Workplace, Portal and Collaboration Software
IBM Victoria Software Lab
E-Mail: boyerj@ca.ibm.com 

Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer





Erik Bruchez <ebruchez@orbeon.com> 
Sent by: public-forms-request@w3.org
11/01/2007 04:43 PM
Please respond to
ebruchez@orbeon.com


To
"Forms WG (new)" <public-forms@w3.org>
cc

Subject
Re: Major problem with schema needs immediate attention.







John,

 > I think it is not lax.

That's a shame ;-)

 > I think it is strict except that type libs are imported in a way
 > that makes them be applied in a lax way.

It very similar to lax in that it has similar recursive processing to
lax. It seems that the only difference between what you and Leigh are
proposing and lax is in the process of determining whether a type
exists or not.

You say that if the element or attribute is in a namespace of a schema
with top-level element or attribute definitions, then 1) a definition
must exist and 2) it needs to be strictly valid.

lax just says that only if a definition exists, then it needs to be
strictly valid.

 > If you say lax validation, and you have a schema for a namespace
 > that contains top-level element or attribute declarations, then
 > undeclared elements in that namespace will not be flagged as errors
 > because the mode is lax.

Right, as said in XSLT 2.0:

   "In practice this means that the element or attribute being
    validated must conform to its declaration if a top-level
    declaration is available. If no such declaration is available, then
    the element or attribute is not validated, but its attributes and
    children are validated, again with lax validation. "

 > This is not desirable.

I am not sure why this is not desirable. That seems to say that lax is
not desirable. But lax is supported in XML Schema 1.0 and in XSLT
2.0. Do people really complain that lax doesn't solve an actual
problem? Maybe they do, I don't know.

It seems likely that there are use cases both ways. For lax, I may
have an incomplete schema for a particular namespace, and want the
elements that I define to be used for validation, but not the ones I
have not yet defined. This is not completely unreasonable I think.

 > If the schema for a namespace contains top-level element or
 > attribute declarations, then that structural validation should
 > apply.  So if instance data contains elements in the namespace that
 > are undeclared by the schema, then a validation error needs to
 > occur.

May occur, if that's what you happen to desire. It really doesn't
*need* to occur.

 > We only want to switch to lax mode when the schema for a namespace
 > contains no top-level element or attribute definitions since in this
 > case one is guaranteed to always fail validation, but such a schema
 > is useful for providing a type lib that declares no structures.

Well again, that's a possibility, it's not the only one.

I am really not convinced that there is a compelling case for a
processing model different for lax at this point (XForms 1.1). lax has
the benefit of being fully defined in XML Schema and supported by XSLT
2.0. We can add "strict" in XForms 1.2/2.0, which will cover most
other useful use cases. Just for the love of reuse I would choose lax
rather than our own processing model if our model doesn't have
substantive benefits over lax.

Maybe we should get the input of external schema heads out there.

Finally, there is the argument from Leigh that existing
implementations seem to follow that proposal. How compelling is that
evidence for XForms implementations that are actually used and under
development?

-Erik

-- 
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/
Received on Friday, 2 November 2007 00:13:43 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 1 October 2013 22:06:46 UTC