Чтобы разрешить что-то подобное (я исправил опечатку в "usedPhysicalMemory"
):
<cluster>
<host name="foo">
<Load usedPhysicalMemory="500" />
</host>
<host name="bar">
<Load usedPhysicalMemory="500" />
</host>
</cluster>
Эта схема сделает это:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cluster">
<xs:complexType>
<xs:sequence>
<xs:element ref="host" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="host">
<xs:complexType>
<xs:sequence>
<xs:element ref="Load" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Load">
<xs:complexType>
<xs:attribute name="usedPhysicalMemory" type="xs:integer" />
</xs:complexType>
</xs:element>
</xs:schema>
Из MSDN на <xs:complexType>
(потому что спецификация делает мой мозг болит):
Если указано group
, sequence
, choice
или all
, элементы должны
появляются в следующем порядке:
group | sequence | choice | all
attribute | attributeGroup
anyAttribute
Может быть, кто-то еще может указать на соответствующий раздел в спецификации.