- From: Stan Devitt <jsdevitt@stratumtek.ca>
- Date: Wed, 19 Feb 2003 10:38:48 -0500 (EST)
- To: www-html-editor@w3.org
- Cc: jsdevitt@stratumtek.com
We have encountered a validation error when attempting
to validate various XTHML+MathML examples.
This reveals a problem in the modular xhtml schema we
were using, as well as a bug in XSV. (Hopefully this
problem is already fixed in the official schema but
in any event shows a bug in XSV. )
In attempting to investigate schema modularization in
conjunction for XHTML+MathML, we have come across
a problem with the schema in
xhtml/opt/xhtml-base-1.xsd
This schema is redefining the head.content group
to include a base element.
The XSV validator reports that the schema passes.
XMLSpy 5 release 3 correctly complains about there is
an attempt to create a circular definition of a group.
The problem occurs in the redefinition of the group head.content.
<xs:redefine schemaLocation="../req/core/xhtml-struct-1.xsd">
<xs:group name="head.content">
<xs:sequence>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice>
<xs:sequence>
<xs:element ref="title"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:sequence minOccurs="0">
<xs:element ref="base"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
<xs:sequence>
<xs:element ref="base"/>
problem --> <xs:group ref="head.content"/> <!-- circular reference -->
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:group>
</xs:redefine>
The goal of the definition is apparently to include the base
element optionally before or after the title. On replacing the above
redefinition by
<xs:redefine schemaLocation="../req/core/xhtml-struct-1.xsd">
<xs:group name="head.content">
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="1"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="base" minOccurs="1"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="base" minOccurs="1"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="1"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="title" minOccurs="1"/>
<xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:group>
</xs:redefine>
validates with XSV and XMLSpy 5.
It also allows our simple xhtml + mathml examples to validate.
Thanks in advance for looking into this matter.
Stan Devitt.
jsdevitt@stratumtek.com
Invited Expert
MathML Working Group
PS. We also encountered a second problem with XSV when we accidently
redefined head.content in such a way that it was not a superset or subset
of the original definition. XSV incorrectly reported that it was
not a "restriction", when in fact it should have been complaining about
subset/superset problems. This may simply be a poorly worded error
message.
Received on Wednesday, 19 February 2003 10:27:07 UTC