Re: Redefinition of group, who's correct

It has to be said that xs:redefine is underspecified in some respects. 
However, for this case the rule is fairly clear:

Attribute group definitions and model group definitions must be 
supersets or subsets of their original definitions, either by including 
exactly one reference to themselves or by containing only (possibly 
restricted) components which appear in a corresponding way in their 
<redefine>d selves.

In other words, a redefined group must be either a restriction or an 
extension of the original. Or more precisely,

6 Within the [children], for each <group> the appropriate case among the 
following must be true:
6.1 If it has a <group> among its contents at some level the ·actual 
value· of whose ref [attribute] is the same as the ·actual value· of its 
own name attribute plus target namespace, then all of the following must 
be true:
6.1.1 It must have exactly one such group.
6.1.2 The ·actual value· of both that group's minOccurs and maxOccurs 
[attribute] must be 1 (or ·absent·).
6.2 If it has no such self-reference, then all of the following must be 
true:
6.2.1 The ·actual value· of its own name attribute plus target namespace 
must successfully ·resolve· to a model group definition in I.
6.2.2 The {model group} of the model group definition which corresponds 
to it per XML Representation of Model Group Definition Schema Components 
(§3.7.2) must be a ·valid restriction· of the {model group} of that 
model group definition in I, as defined in Particle Valid (Restriction) 
(§3.9.6).

This example clearly satisfies 6.1.

In my view, however, it is unwise to rely heavily on xs:redefine. 
Schemas that use xs:redefine don't compose well with each other: when 
you combine a schema that uses xs:redefine with another schema, the 
meaning of the definitions in the second schema can change as a 
side-effect.

Michael Kay
Saxonica


On 20/03/2013 20:34, info@xml4pharma.com wrote:
> XMLSpy has a totally different interpretation of the schema 1.0 spec 
> concerning xs:redefine.
> See e.g 
> http://lists.w3.org/Archives/Public/xmlschema-dev/2004Dec/0048.html
> I have a had contact with Altova (the developers of XMLSpy) several 
> times and their answer is something like "we are right and the rest of 
> the world is wrong ..."
> The CDISC standards make a lot usage of xs:redefine, reason the issue 
> came up in our working group.
> So we wrote a "white paper" for the FDA stating that XMLSpy is not a 
> suitable tool for validating CDISC-XML documents.
> With best regards,
> Jozef Aerts
> XML4Pharma
>
> > Michael Kay <mike@saxonica.com> hat am 20. März 2013 um 20:05 
> geschrieben:
> >
> >
> > Since oXygen allows a choice of schema processors, it would be 
> useful to
> > say which one you selected (or to try more than one).
> >
> > It would also be useful to tell us what XMLSpy says is wrong - what is
> > the error message?
> >
> > Michael Kay
> > Saxonica
> >
> > On 20/03/2013 17:56, Pierre Attar wrote:
> > > Hi,
> > >
> > > I have a problem using group redefinitions and validating both with
> > > XMLSpy (who complains) and Oxygen (who validates).
> > > My question : who is correct ? Where a I wrong ?
> > >
> > > Note: my schema are a lot more complex but I try to make a sample 
> (non
> > > realistic) in order to isolate my question.
> > >
> > > Here is the situation :
> > >
> > > base.xsd declares a group called essai :
> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > xmlns="http://modeles.fr/modeles/reference"
> > > targetNamespace="http://modeles.fr/modeles/reference"
> > > elementFormDefault="qualified" attributeFormDefault="unqualified">
> > > <xs:element name="ENTER_NAME_OF_ROOT_ELEMENT_HERE">
> > > <xs:annotation>
> > > <xs:documentation>Comment describing your root
> > > element</xs:documentation>
> > > </xs:annotation>
> > > </xs:element>
> > > <xs:group name="essai">
> > > <xs:choice/>
> > > </xs:group>
> > > </xs:schema>
> > >
> > >
> > > other.xsd only includes base.xsd
> > >
> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > xmlns="http://modeles.fr/modeles/reference"
> > > targetNamespace="http://modeles.fr/modeles/reference"
> > > elementFormDefault="qualified" attributeFormDefault="unqualified">
> > > <xs:include schemaLocation="base.xsd"/>
> > > </xs:schema>
> > >
> > >
> > > And now, redefine .xsd both redefine base.xsd and includes other.xsd
> > >
> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > xmlns="http://modeles.fr/modeles/reference"
> > > targetNamespace="http://modeles.fr/modeles/reference"
> > > elementFormDefault="qualified" attributeFormDefault="unqualified">
> > > <xs:redefine schemaLocation="base.xsd">
> > > <xs:group name="essai">
> > > <xs:choice>
> > > <xs:group ref="essai"/>
> > > <xs:element name="test"/>
> > > </xs:choice>
> > > </xs:group>
> > > </xs:redefine>
> > > <xs:include schemaLocation="other.xsd"/>
> > > </xs:schema>
> > >
> > >
> > > At this time, XML spy complains but not oxygen 14.2. If I remove the
> > > include, no problem found.
> > >
> > > Any ideas ?
> > >
> > > Pierre
> > >
> > >
> > >
> >
> >

Received on Wednesday, 20 March 2013 21:59:35 UTC