[Bug 16874] New: Change in meaning of final="#all" on elements between 1.0 and 1.1

https://www.w3.org/Bugs/Public/show_bug.cgi?id=16874

           Summary: Change in meaning of final="#all" on elements between
                    1.0 and 1.1
           Product: XML Schema
           Version: 1.1 only
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Structures: XSD Part 1
        AssignedTo: David_E3@VERIFONE.com
        ReportedBy: pwalmsley@datypic.com
         QAContact: www-xml-schema-comments@w3.org
                CC: cmsmcq@blackmesatech.com


In version 1.0, there was the following paragraph (in section 3.3.1): 

"An empty {substitution group exclusions} allows a declaration to be nominated
as the {substitution group affiliation} of other element declarations having
the same {type definition} or types derived therefrom. The explicit values of
{substitution group exclusions} rule out element declarations having types
which are extensions or restrictions respectively of {type definition}. If both
values are specified, then the declaration may not be nominated as the
{substitution group affiliation} of any other declaration."

The last sentence of this paragraph says that if final="#all", or
final="restriction extension", then the declaration may not be the head of a
substitution group, period.

In version 1.1, the equivalent paragraph is:

"An empty {substitution group exclusions} allows a declaration to be named in
the {substitution group affiliations} of other element declarations having the
same declared {type definition} or some type ·derived· therefrom. The explicit
values of {substitution group exclusions}, extension or restriction, rule out
element declarations having types whose derivation from {type definition}
involves any extension steps, or restriction steps, respectively. "

The last sentence has been removed, so it seems to mean that if final="#all" or
final="restriction extension", the members cannot have types that are derived
by restriction or extension from the head, but it is perfectly OK to have
members that have the exact same type as the head.

I can see why such a change would be made; it doesn't make sense to have
"restriction extension" mean anything more than just the union of what
"restriction" and "extension" would mean individually.  But this change is
backward-incompatible and doesn't appear to be listed in Appendix G, so I
wanted to confirm that it was intentional.  If so, it should be added to
Appendix G.

Also, I am surprised to not find a more formal definition of what the "final"
attribute means for elements. Section 3.3.6.1 says "subject to the blocking
keywords in M.{substitution group exclusions}" but I don't see where it
describes exactly what those keywords mean, except in the paragraph quoted
above, which is somewhat informal.

By contrast, for example, {disallowed substitutions} has a paragraph informally
describing it, but also has a clause in section 3.3.6.3 formally saying what it
means if it contains the keyword "substitution".

-- 
Configure bugmail: https://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 Friday, 27 April 2012 15:03:00 UTC