MSXML application of substitution groups to locally defined eleme nts

(Re-sending with a corrected Subject line and inlined xsd and xml files).

As I understand it, substitution groups don't apply in the case of locally
bound elements.

So the complex type 

<xs:complexType name="OL">
        <xs:sequence>
 	  <xs:element name="Note" type="Note" minOccurs="0"
maxOccurs="unbounded" />
 	  <xs:element name="ShipNote" type="Note" minOccurs="0"
maxOccurs="unbounded" />
        </xs:sequence>
 </xs:complexType>

Wouldn't even be subject to the conversion to an equivalent choice group.

If, on the other hand, the complex type were defined as 

<xs:complexType name="OL">
        <xs:sequence>
 	  <xs:element ref="Note" minOccurs="0"  maxOccurs="unbounded" />
 	  <xs:element ref="ShipNote" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
 </xs:complexType>

then there would indeed be a problem - the first Note occurrence would
expand to the equivalent choice group,

<xs:complexType name="OL">
        <xs:sequence>
	<xs:choice>
 	  <xs:element ref="Note" minOccurs="0"  maxOccurs="unbounded" />
 	  <xs:element ref="ShipNote" minOccurs="0" maxOccurs="unbounded" />
	</xs:choice>
	<xs:element ref="ShipNote" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
 </xs:complexType>

Thus leading to the nondeterminism. 

But the case I'm dealing with should suffer from no such problem, since the
elements are locally bound.

I've CC'ed the Schema Dev list for confirmation of this.

Mark

----------------------------------------------------------------------------
----
 
Mark Feblowitz                                   [t] 617.715.7231
Frictionless Commerce Incorporated     [f] 617.495.0188 
XML Architect                                     [e]
mfeblowitz@frictionless.com
400 Technology Square, 9th Floor 
Cambridge, MA 02139 
www.frictionless.com  
 

 -----Original Message-----
From: 	Dare Obasanjo [mailto:dareo@microsoft.com] 
Sent:	Wednesday, March 13, 2002 1:33 AM
To:	Mark Feblowitz
Subject:	RE: Is anySimpleType a real type?

Slight correction...


> -----Original Message-----
> From: Dare Obasanjo 
> Sent: Tuesday, March 12, 2002 10:24 PM
> To: 'Mark Feblowitz'
> Subject: RE: Is anySimpleType a real type?
> 
> 
> On investigation, I believe that MSXML is not in error. 
> 
> Your complexType in question is defined as 
> 
> 	<xs:complexType name="OL">
>        <xs:sequence>
> 	  <xs:element name="Note" type="Note" minOccurs="0" 
> maxOccurs="unbounded" />
> 	  <xs:element name="ShipNote" type="Note" minOccurs="0" 
> maxOccurs="unbounded" />
> 	 </xs:sequence>
> 	</xs:complexType>
> 
> which after the substitionGroups are applied becomes 
> 
> 	<xs:complexType name="OL">
>        <xs:sequence>

>         <xs:choice>
> 	   <xs:element name="Note" type="Note" minOccurs="0" 
> maxOccurs="unbounded" />
> 	   <xs:element name="ShipNote" type="ShipNote" 
> minOccurs="0" maxOccurs="unbounded" />
> 	  </xs:choice>

The above should be 

	 <xs:choice minOccurs="0"  maxOccurs="unbounded">
 	   <xs:element name="Note" type="Note"  />
 	   <xs:element name="ShipNote" type="ShipNote" />
       </xs:choice>	

> 	  <xs:element name="ShipNote" type="Note" minOccurs="0" 
> maxOccurs="unbounded" />
> 	 </xs:sequence>
> 	</xs:complexType>	
> 
> Which to me is ambiguous once the user because upon seeing a 
> <ShipNote> the parser cannot tell if it is the <ShipNote> 
> that is part of the <xs:choice> content model or the 
> <ShipNote> that comes immediately after the <xs:choice>. 

> > -----Original Message-----
> > From: Mark Feblowitz [mailto:mfeblowitz@frictionless.com]
> > Sent: Tuesday, March 12, 2002 5:20 PM
> > To: Dare Obasanjo
> > Subject: RE: Is anySimpleType a real type?
> > 
> > 
> > Dare -
> > 
> > I've attached an xsd and an xml file demonstrating the
> > nondeterminism problem. 
> > 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="OL" type="OL"/>
	<xs:complexType name="OL">
		<xs:sequence>
			<xs:element name="Note" type="Note" minOccurs="0"
maxOccurs="unbounded"/>
			<xs:element name="ShipNote" type="Note"
minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ShipNote" type="ShipNote"
substitutionGroup="Note"/>
	<xs:complexType name="ShipNote">
		<xs:simpleContent>
			<xs:extension base="Note"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:element name="Note" type="Note"/>
	<xs:complexType name="Note">
		<xs:simpleContent>
			<xs:extension base="LingualString">
				<xs:attribute name="author"
type="xs:string"/>
				<xs:attribute name="entryDateTime"
type="DateTime"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="DateTime">
		<xs:restriction base="xs:dateTime">
			<xs:pattern
value="\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(Z|(\+|-)\d\d:\d\d)"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="LingualString">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="lang"
type="xs:language"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<OL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="MSXMLBug.xsd">
	<Note lang="en-us" author="String"
entryDateTime="2001-12-17T09:30:47-05:00">String</Note>
	<ShipNote lang="en-us" author="String"
entryDateTime="2001-12-17T09:30:47-05:00">String</ShipNote>
</OL>



> > Validating the file MSXMLBug.xml as-is results in a message 
> > about the schema being nondeterministic.
> > 
> > When I remove the substitutionGroup="Note" from the ShipNote
> > element, the validates completes without errors.
> > 
> > My best guess here is that the validator is treating the
> > local elements Note and ShipNote as global elements. With 
> > this being the case, the Note substitution group head could 
> > contain either a Note or a ShipNote element, leading to the 
> > nondeterminism.
> > 
> > My understanding of the Schema Rec is that local elements
> > cannot participate in substitution groups.
> > 
> > Is this a known MSXML bug?
> > 
> > Thanks for your help,
> > 
> > Mark
> > 
 

Received on Wednesday, 13 March 2002 11:01:16 UTC