ѕредположим, мы хотим
обеспечить больше информации о каждом продукте в заказе на покупку. Ќапример,
вес каждого продукта и предпочтительный метод отгрузки. ћы можем достигнуть
этого, добав뤤 объ¤влени¤ атрибутов weightKg и shipBy к
(анонимному) определению типа элемента item:
<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Ф/>
<!-- add weightKg and shipBy attributes -->
<xsd:attribute name=ФweightKgФ type=Фxsd:decimalФ/>
<xsd:attribute name=ФshipByФ>
<xsd:simpleType>
<xsd:restriction base=Фxsd:stringФ>
<xsd:enumeration value=ФairФ/>
<xsd:enumeration value=ФlandФ/>
<xsd:enumeration value=ФanyФ/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
јльтернативно,
можно создать именованную группу атрибутов, содержащую все необходимые
атрибуты элемента item, и
ссылатьс¤ на эту группы по имени в объ¤вление элемента item:
<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>
<!-- attributeGroup replaces individual declarations -->
<xsd:attributeGroup ref=ФItemDeliveryФ/>
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name=ФItemDeliveryФ>
<xsd:attribute name=ФpartNumФ type=ФSKUФ use=ФrequiredФ/>
<xsd:attribute name=ФweightKgФ type=Фxsd:decimalФ/>
<xsd:attribute name=ФshipByФ>
<xsd:simpleType>
<xsd:restriction base=Фxsd:stringФ>
<xsd:enumeration value=ФairФ/>
<xsd:enumeration value=ФlandФ/>
<xsd:enumeration value=ФanyФ/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
»спользу¤ именованную группу атрибутов можно улучшить читаемость схем, и облегчить изменени¤ схемы, потому что именованна¤ группа атрибутов может быть определена и отредактирована в одном месте, и на нее могут ссылатьс¤ в нескольких определени¤х и объ¤влени¤х. Ёти делает именованную группу атрибутов подобной параметрическим объектам в XML 1.0. ќтметим, что группа атрибутов может содержать другие группы атрибутов. ак объ¤влени¤ атрибутов, так и ссылки на группы атрибутов должны по¤вл¤тьс¤ в конце определений сложных типов.