Entity workaround for extending an enumerated list via redefine

I need to define an attribute

<xs:attribute name="innerclose" use="optional">
  <xs:simpleType>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="universal"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

and later extend the enumerated type to include

<xs:enumeration value="existential"/>

via <redefine>.

Now, I realize that extending an enumerated list with <redefine> isn't
possible. But digging through the mailing list archives, I see that a
work-around involving entities was mentioned back in 2003 (and later
confirmed by Henry Thompson):
http://lists.w3.org/Archives/Public/xmlschema-dev/2003Jun/0074.html

My question is this: can this work-around be modified to work with redefine?
In http://www.ruleml.org/0.89/xsd/modules/connective_module.xsd, I added a
general entity declaration (which is initially empty) to the top of the
schema,
as well as a reference to the entity (called innerclose-universal) where the
enumeration needs to be extended:

<!DOCTYPE xs:schema [
<!ENTITY innerclose-universal ''>
]>

...

<xs:attribute name="innerclose" use="optional">
  <xs:simpleType>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="universal"/>
      &innerclose-universal;
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

Now in the redefining schema (http://www.ruleml.org/0.89/xsd/folog.xsd), I
try
to overwrite the value of the empty entity with an additional enumeration:

<!DOCTYPE xs:schema [
<!ENTITY innerclose-universal '<xs:enumeration value="existential"/>'>
]>

However, this doesn't seem to work with either Saxon-SA 8.3	or the
current XSV (results
below), e.g. when trying to validate
http://www.ruleml.org/0.89/exa/folog.ruleml.
Is this a matter of not being able to overwrite general entities?  (If so,
there must
be another way to accomplish this.)  It doesn't appear as though the entity
is being
expanded by the XML parser before the validation is taking place.

Am I missing something?

Thanks,

David

***

Saxon:

Validation error on line 10 column 32 of
http://www.ruleml.org/0.89/exa/folog.ruleml: 
Invalid value {existential}. Value "existential" violates the enumeration
facet
"universal" of the type of attribute innerclose

XSV:

<invalid char="2" code="cvc-attribute.1.2" line="10"
 resource="http://www.ruleml.org/0.89/exa/folog.ruleml">attribute type
 check failed for {None}:innerclose: existential not in enumeration
[universal]
</invalid>

Received on Friday, 4 March 2005 17:24:13 UTC