Doc references are based on formal/03-05-02.
In a Schema that is produced by the XML Schema Production
rules, enforcement of multiplicities is incompatible with
the use of proxies.
According to 1.10.1, page 1-21, "Elements act as a union,
where they are either a definition or a proxy. Proxies use
the LinkAttribs attribute group to define the link, and
contain no nested elements."
However, if the org.omg.xmi.enforceMinimumMultiplicity is
true, then the generated schema does not allow the complex-
Type's content to be empty, and so proxies cannot exist in
an XML document.
As a simple fix, the 4b:ClassContents could be wrapped into
an additional choice element, as in
<xsd:choice minOccurs="0">
<xsd:sequence>
4b:ClassContents
</xsd:sequence>
</xsd:choice>
This would allow the element to be empty. However, in this
form, an XML document that contained both link attributes
and contents would still validate.
A stronger solution would be to make a choice between a
link element and contents, by removing the LinkAttribs from
the ObjectAttribs attribute group and by, in rule set 4,
defining something along the lines of
<xsd:choice>
<xsd:sequence>
4b:ClassContents
</xsd:sequence>
<xsd:element name="href" type="xsd:string">
<xsd:element name="idref" type="IDREF">
</xsd:choice>
This way, an element in a validating document could only be
either a proxy or not.
As a side note to this issue, there are obviously unpleasant
side effects when org.omg.xmi.enforceMinimumMultiplicity is
true and org.omg.xmi.element is false. org.omg.xmi.enforce-
MinimumMultiplicity=true should have the same effect as
if org.omg.xmi.element=true and org.omg.xmi.attribute=false.