Используйте <xs:restriction>
вместо расширения. Вы можете объявить простые типы отдельно и ссылаться на них в других конструкциях.
РЕДАКТИРОВАТЬ: извинения за мое время. Пошел вчера на какое-то мероприятие, как всегда оказалось, что вы не можете попасть в пробки моей страны, и я опоздал до такой степени, что просто повернул назад, крича и ругаясь. Вместо этого я провел весь вечер напившись.
Но теперь я трезв, и даже в таком состоянии это лучшее, что мне удалось придумать:
<xs:element name="option">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="optionType">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:complexType name="optionType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="value">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="10" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
О боже. Итак, очевидно, вы должны сделать ограничение расширения. Приведенное выше ограничит содержимое элемента option
строкой максимальной длины 10, а атрибут value
- целым числом в диапазоне [0, 10] включительно.
Да, это не слишком многословно ...