Re: Question about "Element Declarations Consistent" constraint

I believe the answer is that the second example is ok,
i.e. anonymous types are "the same" if structurally equivalent.

A couple of clarifications are probably needed - please see below.

Jerome Simeon wrote:
> 
> Consider the following:
> 
> <<
> Constraint on Schemas: Element Declarations Consistent
> 
>   If the {particles} contains, either directly, indirectly (that is,
> within the {particles} of a contained model group, recursively) or
> implicitly two or more element declaration particles with the same
> {name} and {target namespace}, all their {type definition}s must be
> the same.
> >>

If we squint, we can see that {type definition} is in curly brackets,
and means the {type definition} property of an element declaration
component.  So we are comparing abstract components, which involves

1) modelling by value

There is no mention of reference or identity concepts in the component 
model, and I think we are supposed to read the following from the start
of chapter 3 literally: "the root is a schema, and every other vertex
is a schema component or a literal ... and every labelled edge a 
property."   This might be stressed, e.g. "...is the value of a schema 
component (not a reference to a schema component) or ...".

2) comparison

Here the intro to chapter 3 says "Equality of components for the 
purposes of this specification is always addressed at the level of 
names ...", which unfortunately overlooks anonymous types.

The intent for anonymous components was presumably to use property-by-
property equality testing, since there is no concept of identity for
them.  However, this may need additional clarification to avoid false
negatives, i.e. there may be properties that are not specified in
exactly the same way, but which we wish to consider as equal for
structural equivalence purposes.  This would be analogous to lexical v.
value comparison of simple values, althought here of course it's not a 
lexical but a component modelling issue.

> 
> What does the phrase "must be the same" mean?
> 
> Pretty clearly, the following should be ok.
> 
>        <sequence>
>          <element name="a" type="x"/>
>          <element name="a" type="x"/>
>        </sequence>
> 
> But is this ok, or not ok?
> 
>        <sequence>
>          <element name="a">
>            <type>
>              <element name="b" type="x"/>
>            </type>
>          </element>
>          <element name="a">
>            <type>
>              <element name="b" type="x"/>
>            </type>
>          </element>
>        </sequence>
> 
> -- Jerome Simeon and Philip Wadler

Hope this helps.

  David

Received on Friday, 11 August 2000 15:21:42 UTC