Для дальнейшего использования, одним из решений может быть определение вашего диапазона по-другому, с «start» и «count» вместо минимума и максимума.
Таким образом, ваш пример можно переписать так:
<Range start="-5.0" count="10.0" /> <!-- range from -5 to 5 -->
Затем можно использовать схему, чтобы ограничить count
минимальным значением 0,0, что делает невозможным, чтобы рассчитанное максимальное значение было ниже минимального:
<xs:complexType name="RangeType">
<xs:attribute name="start" use="required" type="xs:double" />
<xs:attribute name="count" use="required">
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:minInclusive value="0.0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
Если вам не нужно, чтобы диапазон был двойным, вы также можете просто определить count
как type="unsignedInt"
, что позволит избежать пользовательского типа.