This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 2625 - Clause 3.3 of Derivation Valid (Restriction, Simple) unclear
Summary: Clause 3.3 of Derivation Valid (Restriction, Simple) unclear
Status: RESOLVED FIXED
Alias: None
Product: XML Schema
Classification: Unclassified
Component: Structures: XSD Part 1 (show other bugs)
Version: 1.1 only
Hardware: PC Linux
: P4 normal
Target Milestone: ---
Assignee: C. M. Sperberg-McQueen
QA Contact: XML Schema comments list
URL:
Whiteboard: important, work (editorial production...
Keywords: resolved
Depends on:
Blocks:
 
Reported: 2005-12-30 23:02 UTC by C. M. Sperberg-McQueen
Modified: 2006-09-24 16:22 UTC (History)
0 users

See Also:


Attachments

Description C. M. Sperberg-McQueen 2005-12-30 23:02:40 UTC
The Schema Component Constraint: Derivation Valid (Restriction,
Simple) in section 3.14.6 of Structures was modified in September to
require among other things that

  3.3 No member of {member type definitions} has the same {name}
      and {target namespace} as the containing Simple Type Definition
      itself.

What is the meaning of "containing" in this rule?

The term 'containing' is used in several ways in Structures.  In the
usual way, something can be contained in a set, or in a list.  XML
elements (and attributes, too) are contained by their parent elements.
In more schema-specific usage, local components are said to be
contained by the component to which they are local.

Could "containing Simple Type Definition" mean the <simpleType>
element which contains the declaration of another simple type?  I
can't see how: this is a constraint on components, not on XML.

Could "containing Simple Type Definition" mean the simple type to
which a particular other simple type is local?  If so, what does the
constraint mean or do?

I do not understand what constraint this clause imposes.  

If we take 'containing Simple Type Definition' to mean the simple type
definition being constrained, the one whose {member type definitions}
is referred to (I see no parallels for this usage, but I am out of
other candidate interpretations), then clause 3.3 seems to be trying
to ensure that no union is a member of itself.

But that is already accomplished in the status quo by clause 3.1,
which requires that the members not be unions.  (The WG has decided to
eliminate that constraint, but the proposal to add 3.3 wasn't
presented as a way of doing so.)  

Clause 3.3 also seems to apply only to named (i.e. top-level) types,
and not to local types.  In schemas derived from schema documents, I
suppose it suffices to prevent cycles involving named types, because
the XML syntax won't allow us to construct any other kind of
membership cycles.  But in born-binary schemas, we have no such
guarantee.  And this is a constraint on components, not on XML.

I apologize for not having raised this question when we were
considering the proposal to add this clause.  But I think this clause
urgently requires clarification.
Comment 1 C. M. Sperberg-McQueen 2006-09-24 15:27:14 UTC
The changes made in January 2006 in connection with unions with
other unions as their member types, included the deletion of the
relevant item and the insertion of a constraint saying that it
must be the case that

  The Simple Type Definition is not a member of its own 
  transitive membership.

with that, this item can be marked closed.  As the originator,
I am able to confirm that I am satisfied with this resolution.

While checking this issue, however, I discovered that the version
of the spec showing diffs against 1.0 omits the text of the
clause in question, but does not omit its number.  There appears
to be a problem in (a) the diff markup in the XML source, or
(b) the diff group disposition files used to produce the spec,
or (c) the diff-group processing stylesheet, or (d) more than
one of the above.  The editors need to fix those, and I'll leave
this item marked 'resolved' instead of 'closed' until it's clear
that the problem has been successfully fixed.