Re: [Priority Feedback] More issues with <redefine/>

At 2000-12-19 13:50, Asirv wrote:
>YES, 'including modified component definitions' is a powerful feature. But,
>it raises several issues. These are subtle and critical issues. I will
>attempt to describe them as clearly as possible. If they are not clear,
>please ask me questions.
>
>[1] NAMESPACE COERCION
>
>During namespace coercion, the targetNamespace of this example's
>corresponding schema information item (SII) is the targetNamespace of
>redefining SII. If this latter targetNamespace is present (namespace
>coercion happens), wild card components, A and B, produce undesired (or
>catastrophic) results. Because, these components were processed before
>redefinition.

Where does the spec require a particular sequence of processing?

>[2] IMPACT on ANONYMOUS TYPE DEF's {content type} whose BASE DEFINITIONS
>were redefined
>
>This can be best illustrated using an example. Sir, please pardon me if the
>syntax is incorrect.
>
>v1.xsd:

Looks correct to me.  I did have to change a line or two to make
it validate, but that's because I used explicit namespace prefixes
for clarity.

>v2.xsd:
>  <xs:redefine schemaLocation="v1.xsd">
>   <xs:complexType name="personName">
>    <xs:complexContent>
>     <xs:extension base="personName">
>      <xs:sequence>
>       <xs:element name="generation" minOccurs="0"/>
>      </xs:sequence>
>     </xs:extension>
>    </xs:complexContent>
>   </xs:complexType>
>  </xs:redefine>
>
>  <xs:element name="author" type="personName"/>
>
>In the above example, before redefinition, addressee declaration component
>has the following content,
>
><!ELEMENT addressee (title?, forename*, surname)>
>
>First, Part 1 does not say what happens to the anonymous complex type of
>addressee declaration component after redefinition.

It seems to me to be pretty clear about what happens.

>Intuitively, I would
>expect it to be,
>
><!ELEMENT addressee (title?, forename*, generation?, surname)>

Yes.

>Second, it is impossible (using the given mapping rules) to construct the
>above declaration component after redefinition. Because, the addresee
>declaration component, its anonymous complex type and {content type} were
>computed before redefinition.

What do you mean?  Where in the spec does it say that the complex type
of addressee is "computed before redefinition"?  If it does say this, I
believe it's an editorial error, because the entire point of the
redefinition-in-place construct (both the proposal we adopted and
the counter-proposal we didn't adopt) was to have the result be as
you describe above:  generation gets inserted between forename and
surname.

C. M. Sperberg-McQueen

Received on Wednesday, 27 December 2000 14:02:00 UTC