XSD SCHEMA: Как указать количество цифр в значении?
-
26-09-2019 - |
Вопрос
Я хочу ограничить количество цифр, разрешенных в элементе до 6:
<AccountNumber>123456</AccountNumber>
<AccountNumber>999999</AccountNumber>
<AccountNumber>000000</AccountNumber>
Спецификация форматирования поля составляет 6 цифр, нулевой, числовой.
Я прочитал, что я мог бы использовать то totalDigits
Ограничение, основанное на:
totalDigits
Указывает точное количество разрешено цифр. Должен быть больше нуля
Так что у меня простой тип:
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:totalDigits value="6"/>
</xs:restriction>
</xs:simpleType>
И пока он ловит недействительные числа, такие как:
<AccountNumber>1234567</AccountNumber>
<AccountNumber>0000000</AccountNumber>
<AccountNumber></AccountNumber>
Это не ловится неверных номеров:
<AccountNumber>12345</AccountNumber>
<AccountNumber>01234</AccountNumber>
<AccountNumber>00123</AccountNumber>
<AccountNumber>00012</AccountNumber>
<AccountNumber>00001</AccountNumber>
<AccountNumber>00000</AccountNumber>
<AccountNumber>0000</AccountNumber>
<AccountNumber>000</AccountNumber>
<AccountNumber>00</AccountNumber>
<AccountNumber>0</AccountNumber>
Какое предложенное ограничение для указания точного количества цифр разрешено?
Решение
Вам нужно использовать xs:pattern
и предоставить регулярное выражение, чтобы ограничить его номеру.
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:pattern value="\d{6}"/>
</xs:restriction>
</xs:simpleType>
Другие советы
Это самый простой способ
<xs:element name="prodid">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Я бы, вероятно, использовал XS: Mininclusive и xs: maxinclusive..
Не связан с StackOverflow