redefining or restricting children of a predefined element

Any help with the following will be greatly apreciated.

I would like to change the emphasis child of web to not contain an instance of
web itself. This is the sort of recursion I want to avoid. I've looked at
redefine and restriction but seem to be missing something. I do not want to
define a new emphasis element within web as it is already defined and want to do
the restriction within web itself (<xs:element ref="emphasis" /> and used
throughout the schema).


Here is a copy of the elements in question without the include statements. The
child model is much bigger, children have been removed for brevity :) 

<xs:element name="web" id="web">
  <xs:complexType mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="emphasis" />
      <xs:element ref="imageInline" />
      <xs:element ref="strong" />
    </xs:choice>
    <xs:attributeGroup ref="attributeStandardInlineGroup" />
    <xs:attribute name="uri" type="xs:anyURI" use="optional" />
    <xs:attribute ref="target" use="optional" />
  </xs:complexType>
</xs:element>

<xs:element name="emphasis" id="emphasis">
  <xs:complexType mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="email" />
      <xs:element ref="strong" />
      <xs:element ref="web" />
    </xs:choice>
    <xs:attributeGroup ref="attributeInlineGroup" />
  </xs:complexType>
</xs:element>

Marijan (Mario) Madunic

Received on Monday, 20 August 2007 21:17:54 UTC