2.4 Anonymous Type DefinitionsAnonymous Type Definitions
Schemas can be constructed by defining sets of named types
such as PurchaseOrderType and then declaring
elements such as purchaseOrder that reference
the types using the
type= construction. This style of schema
construction is straightforward but it can be unwieldy,
especially if you define many types that are referenced
only once and contain very few constraints. In these cases,
a type can be more succinctly defined as an anonymous type
which saves the overhead of having to be named and
explicitly referenced.
The definition of the type Items in po.xsd contains two element
declarations that use anonymous types (item
and quantity). In general, you can identify
anonymous types by the lack of a type= in an element (or
attribute) declaration, and by the presence of an un-named
(simple or complex) type definition:
NOTE:
Two Anonymous Type Definitions
<xsd:complexType name="Items">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="productName" type="xsd:string"/>
<xsd:element name="quantity">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="USPrice" type="xsd:decimal"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
In the case of the item element, it has an
anonymous complex type consisting of the elements
productName, quantity,
USPrice, comment, and
shipDate, and an attribute called
partNum. In the case of the quantity
element, it has an anonymous simple type derived from
integer
positiveInteger whose value
ranges between 1 and 99.
|