Re: XHTML+MathML schema test

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