[Bug 6226] Basic processors should not signal an error for validation = lax

http://www.w3.org/Bugs/Public/show_bug.cgi?id=6226


C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |cmsmcq@blackmesatech.com




--- Comment #2 from C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com>  2009-03-05 16:46:37 ---
[Speaking only for myself] I'm finding this a difficult design issue.

Pro:

1) It would indeed reduce the need for xsl:use-when, when writing
stylesheets that should exploit schema-awareness when present but
carry on regardless when invoked with a non-schema-aware processor.
Other things being equal, that's a good thing.  And there is a sense
in which the keyword "lax" is intended, precisely, to express the
desire that schema information should be used if present, but that its
absence should not cause an error (or an invalidity).  This case is
slightly different from the case of lax wildcards (schema information
vs. schema awareness), but there does seem to be an analogy.

2) If we imagine a schema-aware processor that loaded no schema
documents and worked from an empty schema, it feels reasonable to
expect that in validating documents it would behave like a
schema-oblivious processor.


Con: 

3) No schema-aware processor ever works with an empty schema: the
built-ins are always present (that's what it means to be built-ins).
So a schema-aware processor is never oblivious to invalid instances of
integer, or QName, or any of the other built-ins.

4) So (as noted in comment #1) following the suggestion made here
would lead to incompatible behavior between schema-aware and
-oblivious processors.


Against argument 4:

5) If the suggestion made in this bug report is NOT adopted, the
implicit advice is to use use-when to get the desired result.

If the stylesheet author follows this advice, the stylesheet will
have:

  <thing 
    xsl:use-when="system-property('xsl:is-schema-aware')='yes'
    xsl:validation="lax" 
    xsi:type="xs:integer"
  >93.7</thing>
  <thing 
    xsl:use-when="system-property('xsl:is-schema-aware')='no'
  >93.7</thing>

Here we still have the phenomenon that the schema-aware processor
throws an error, and the other processor doesn't.  And we have the
further discrepancy that one of them emits an xsi:type attribute and
the other doesn't.  

Is this an improvement?


Possible compromise:

Require basic processors to throw the error in question when and only
when xsi:type (etc.) name one of the XSD built-ins?  Or anything at
all in the XSD namespace?

I'm not sure about this; it might feel simpler just to do as suggested
in comment 0.


-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Thursday, 5 March 2009 16:46:46 UTC