In order to represent shapes like a "donut", or more generic a polygon with holes, "ShapeType" definition could be extended as follows:
<xsd:complexType name="ShapeType">
xsd:annotation
xsd:documentationDescribes the bounding shape of a block, if it is not rectangular.</xsd:documentation>
</xsd:annotation>
xsd:choice
<xsd:element name="Polygon" type="PolygonType"/>
<xsd:element name="Ellipse" type="EllipseType"/>
<xsd:element name="Circle" type="CircleType"/>
<xsd:element name="MultiPolygon" type="MultiPolygonType"/>
</xsd:choice>
</xsd:complexType>
......
<xsd:complexType name="MultiPolygonType">
xsd:annotation
xsd:documentationA multi polygon shape used to represent polygons with holes ("donut-like" shapes)</xsd:documentation>
</xsd:annotation>
xsd:sequence
<xsd:element name="Polygon"
type="PolygonType"
minOccurs="2"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
In order to represent shapes like a "donut", or more generic a polygon with holes, "ShapeType" definition could be extended as follows:
<xsd:complexType name="ShapeType">
xsd:annotation
xsd:documentationDescribes the bounding shape of a block, if it is not rectangular.</xsd:documentation>
</xsd:annotation>
xsd:choice
<xsd:element name="Polygon" type="PolygonType"/>
<xsd:element name="Ellipse" type="EllipseType"/>
<xsd:element name="Circle" type="CircleType"/>
<xsd:element name="MultiPolygon" type="MultiPolygonType"/>
</xsd:choice>
</xsd:complexType>
......
<xsd:complexType name="MultiPolygonType">
xsd:annotation
xsd:documentationA multi polygon shape used to represent polygons with holes ("donut-like" shapes)</xsd:documentation>
</xsd:annotation>
xsd:sequence
<xsd:element name="Polygon"
type="PolygonType"
minOccurs="2"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>