This happens, because <sequence>
imposes a specific order.
I think what might solve your problem, is to use an additional xsd:choice element.
If you write it like
<sequence>
<choice maxOccurs="unbounded">
<element name="circle">
<complexType>
<attribute name="r" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
<element name="ellipse">
<complexType>
<attribute name="rx" type="int" />
<attribute name="ry" type="int" />
<attribute name="cx" type="int" />
<attribute name="cy" type="int" />
<attribute name="style" type="string" />
<attribute name="id" type="string" />
<attribute name="isLocked" type="boolean" />
</complexType>
</element>
</choice>
</sequence>
that would allow for multiple circle OR ellipse elements in any order.